On 09/08/22 12:37, Sidhartha Kumar wrote: > Helper function to retrieve hstate information from a hugetlb folio. > > Signed-off-by: Sidhartha Kumar <sidhartha.kumar@xxxxxxxxxx> > Reported-by: kernel test robot <lkp@xxxxxxxxx> > --- > include/linux/hugetlb.h | 14 ++++++++++++-- > mm/migrate.c | 2 +- > 2 files changed, 13 insertions(+), 3 deletions(-) Thanks, Someday we will be able to remove page_hstate. Reviewed-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx> -- Mike Kravetz > > diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h > index 0bcaca694ab7..f59e8fb3f937 100644 > --- a/include/linux/hugetlb.h > +++ b/include/linux/hugetlb.h > @@ -850,10 +850,15 @@ static inline pte_t arch_make_huge_pte(pte_t entry, unsigned int shift, > } > #endif > > +static inline struct hstate *folio_hstate(struct folio *folio) > +{ > + VM_BUG_ON_FOLIO(!folio_test_hugetlb(folio), folio); > + return size_to_hstate(folio_size(folio)); > +} > + > static inline struct hstate *page_hstate(struct page *page) > { > - VM_BUG_ON_PAGE(!PageHuge(page), page); > - return size_to_hstate(page_size(page)); > + return folio_hstate(page_folio(page)); > } > > static inline unsigned hstate_index_to_shift(unsigned index) > @@ -1057,6 +1062,11 @@ static inline struct hstate *hstate_vma(struct vm_area_struct *vma) > return NULL; > } > > +static inline struct hstate *folio_hstate(struct folio *folio) > +{ > + return NULL; > +} > + > static inline struct hstate *page_hstate(struct page *page) > { > return NULL; > diff --git a/mm/migrate.c b/mm/migrate.c > index 6a1597c92261..55392a706493 100644 > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -1589,7 +1589,7 @@ struct page *alloc_migration_target(struct page *page, unsigned long private) > nid = folio_nid(folio); > > if (folio_test_hugetlb(folio)) { > - struct hstate *h = page_hstate(&folio->page); > + struct hstate *h = folio_hstate(folio); > > gfp_mask = htlb_modify_alloc_mask(h, gfp_mask); > return alloc_huge_page_nodemask(h, nid, mtc->nmask, gfp_mask); > -- > 2.31.1