Messages in this thread | | | Date | Tue, 17 Oct 2017 14:12:46 +0300 | From | "Kirill A. Shutemov" <> | Subject | Re: [PATCH 1/2] mm, thp: introduce dedicated transparent huge page allocation interfaces |
| |
On Mon, Oct 16, 2017 at 05:19:16PM +0800, changbin.du@intel.com wrote: > @@ -501,6 +501,45 @@ void prep_transhuge_page(struct page *page) > set_compound_page_dtor(page, TRANSHUGE_PAGE_DTOR); > } > > +struct page *alloc_transhuge_page_vma(gfp_t gfp_mask, > + struct vm_area_struct *vma, unsigned long addr) > +{ > + struct page *page; > + > + page = alloc_pages_vma(gfp_mask | __GFP_COMP, HPAGE_PMD_ORDER, > + vma, addr, numa_node_id(), true); > + if (unlikely(!page)) > + return NULL; > + prep_transhuge_page(page); > + return page; > +} > + > +struct page *alloc_transhuge_page_nodemask(gfp_t gfp_mask, > + int preferred_nid, nodemask_t *nmask) > +{ > + struct page *page; > + > + page = __alloc_pages_nodemask(gfp_mask | __GFP_COMP, HPAGE_PMD_ORDER, > + preferred_nid, nmask); > + if (unlikely(!page)) > + return NULL; > + prep_transhuge_page(page); > + return page; > +} > + > +struct page *alloc_transhuge_page(gfp_t gfp_mask) > +{ > + struct page *page; > + > + VM_BUG_ON(!(gfp_mask & __GFP_COMP));
Why do you check for __GFP_COMP only in this helper?
> + page = alloc_pages(gfp_mask | __GFP_COMP, HPAGE_PMD_ORDER);
And still apply __GFP_COMP anyway?
> + if (unlikely(!page)) > + return NULL; > + prep_transhuge_page(page); > + return page; > +} > + > unsigned long __thp_get_unmapped_area(struct file *filp, unsigned long len, > loff_t off, unsigned long flags, unsigned long size) > {
-- Kirill A. Shutemov
| |