Skip to content

Commit d280d67

Browse files
sidkumar99Sasha Levin
authored andcommitted
mm/hugetlb: add folio_hstate()
[ Upstream commit e51da3a ] Helper function to retrieve hstate information from a hugetlb folio. Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Sidhartha Kumar <[email protected]> Reported-by: kernel test robot <[email protected]> Reviewed-by: Mike Kravetz <[email protected]> Cc: Arnd Bergmann <[email protected]> Cc: Colin Cross <[email protected]> Cc: David Howells <[email protected]> Cc: "Eric W . Biederman" <[email protected]> Cc: Hugh Dickins <[email protected]> Cc: Matthew Wilcox <[email protected]> Cc: Muchun Song <[email protected]> Cc: Peter Xu <[email protected]> Cc: Vlastimil Babka <[email protected]> Cc: William Kucharski <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Stable-dep-of: b76b469 ("mm/hugetlb: fix missing hugetlb_lock for resv uncharge") Signed-off-by: Sasha Levin <[email protected]>
1 parent 47d7e72 commit d280d67

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

include/linux/hugetlb.h

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -863,10 +863,15 @@ static inline pte_t arch_make_huge_pte(pte_t entry, unsigned int shift,
863863
}
864864
#endif
865865

866+
static inline struct hstate *folio_hstate(struct folio *folio)
867+
{
868+
VM_BUG_ON_FOLIO(!folio_test_hugetlb(folio), folio);
869+
return size_to_hstate(folio_size(folio));
870+
}
871+
866872
static inline struct hstate *page_hstate(struct page *page)
867873
{
868-
VM_BUG_ON_PAGE(!PageHuge(page), page);
869-
return size_to_hstate(page_size(page));
874+
return folio_hstate(page_folio(page));
870875
}
871876

872877
static inline unsigned hstate_index_to_shift(unsigned index)
@@ -1077,6 +1082,11 @@ static inline struct hstate *hstate_vma(struct vm_area_struct *vma)
10771082
return NULL;
10781083
}
10791084

1085+
static inline struct hstate *folio_hstate(struct folio *folio)
1086+
{
1087+
return NULL;
1088+
}
1089+
10801090
static inline struct hstate *page_hstate(struct page *page)
10811091
{
10821092
return NULL;

mm/migrate.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1632,7 +1632,7 @@ struct page *alloc_migration_target(struct page *page, unsigned long private)
16321632
nid = folio_nid(folio);
16331633

16341634
if (folio_test_hugetlb(folio)) {
1635-
struct hstate *h = page_hstate(&folio->page);
1635+
struct hstate *h = folio_hstate(folio);
16361636

16371637
gfp_mask = htlb_modify_alloc_mask(h, gfp_mask);
16381638
return alloc_huge_page_nodemask(h, nid, mtc->nmask, gfp_mask);

0 commit comments

Comments
 (0)