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/20220922154207.1575343-6-sidhartha.kumar@oracle.com Signed-off-by: Sidhartha Kumar <sidhartha.kumar@oracle.com> Reported-by: kernel test robot <lkp@intel.com> Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Colin Cross <ccross@google.com> Cc: David Howells <dhowells@redhat.com> Cc: "Eric W . Biederman" <ebiederm@xmission.com> Cc: Hugh Dickins <hughd@google.com> Cc: Matthew Wilcox <willy@infradead.org> Cc: Muchun Song <songmuchun@bytedance.com> Cc: Peter Xu <peterx@redhat.com> Cc: Vlastimil Babka <vbabka@suse.cz> Cc: William Kucharski <william.kucharski@oracle.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Stable-dep-of: b76b469 ("mm/hugetlb: fix missing hugetlb_lock for resv uncharge") Signed-off-by: Sasha Levin <sashal@kernel.org>
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)