On 11/6/20 12:01 AM, Christoph Hellwig wrote:
+#ifdef CONFIG_TRANSPARENT_HUGEPAGE +extern struct page *alloc_transhugepage(struct vm_area_struct *vma,
unsigned long addr);
No need for the extern. And also here: do we actually need the stub, or can the caller make sure (using IS_ENABLED and similar) that the compiler knows the code is dead?
Same problem as with prep_transhuge_device_private_page(), since alloc_hugepage_direct_gfpmask() and alloc_hugepage_vma() are not EXPORT_SYMBOL_GPL.
+struct page *alloc_transhugepage(struct vm_area_struct *vma,
unsigned long haddr)
+{
- gfp_t gfp;
- struct page *page;
- gfp = alloc_hugepage_direct_gfpmask(vma);
- page = alloc_hugepage_vma(gfp, vma, haddr, HPAGE_PMD_ORDER);
- if (page)
prep_transhuge_page(page);
- return page;
I think do_huge_pmd_anonymous_page should be switched to use this helper as well.
Sure, I'll do that for v4.