Kefeng Wang <wangkefeng.wang@xxxxxxxxxx> writes: > The new vm_normal_pmd_folio() wrapper is similar to vm_normal_folio(), > which allow them to completely replace the struct page variables with > struct folio variables. > > Signed-off-by: Kefeng Wang <wangkefeng.wang@xxxxxxxxxx> > --- > include/linux/mm.h | 2 ++ > mm/memory.c | 10 ++++++++++ > 2 files changed, 12 insertions(+) > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index 12335de50140..7d05ec047186 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -2327,6 +2327,8 @@ struct folio *vm_normal_folio(struct vm_area_struct *vma, unsigned long addr, > pte_t pte); > struct page *vm_normal_page(struct vm_area_struct *vma, unsigned long addr, > pte_t pte); > +struct folio *vm_normal_pmd_folio(struct vm_area_struct *vma, unsigned long addr, > + pmd_t pmd); > struct page *vm_normal_page_pmd(struct vm_area_struct *vma, unsigned long addr, > pmd_t pmd); Why do not follow the counterpart of page (vm_normal_page_pmd()) to be vm_normal_folio_pmd()? -- Best Regards, Huang, Ying > diff --git a/mm/memory.c b/mm/memory.c > index ce3efe7255d2..d4296ee72730 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -689,6 +689,16 @@ struct page *vm_normal_page_pmd(struct vm_area_struct *vma, unsigned long addr, > out: > return pfn_to_page(pfn); > } > + > +struct folio *vm_normal_pmd_folio(struct vm_area_struct *vma, unsigned long addr, > + pmd_t pmd) > +{ > + struct page *page = vm_normal_page_pmd(vma, addr, pmd); > + > + if (page) > + return page_folio(page); > + return NULL; > +} > #endif > > static void restore_exclusive_pte(struct vm_area_struct *vma,