Messages in this thread | | | Subject | Re: [PATCH] mm, THP: vmf_insert_pfn_pud depends on CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD | From | Alexandre Ghiti <> | Date | Thu, 11 Jan 2018 14:05:34 +0100 |
| |
On 11/01/2018 11:06, Michal Hocko wrote: > On Thu 11-01-18 09:53:31, Alexandre Ghiti wrote: >> The only definition of vmf_insert_pfn_pud depends on >> CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD being defined. Then its declaration in >> include/linux/huge_mm.h should have the same restriction so that we do >> not expose this function if CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD is >> not defined. > Why is this a problem? Compiler should simply throw away any > declarations which are not used? It is not a big problem but surrounding the declaration with the #ifdef makes the compilation of external modules fail with an "error: implicit declaration of function vmf_insert_pfn_pud" if CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD is not defined. I think it is cleaner than generating a .ko which would not load anyway.
> >> Signed-off-by: Alexandre Ghiti <aghiti@upmem.com> >> --- >> include/linux/huge_mm.h | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h >> index a8a1262..11794f6a 100644 >> --- a/include/linux/huge_mm.h >> +++ b/include/linux/huge_mm.h >> @@ -48,8 +48,10 @@ extern int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, >> int prot_numa); >> int vmf_insert_pfn_pmd(struct vm_area_struct *vma, unsigned long addr, >> pmd_t *pmd, pfn_t pfn, bool write); >> +#ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD >> int vmf_insert_pfn_pud(struct vm_area_struct *vma, unsigned long addr, >> pud_t *pud, pfn_t pfn, bool write); >> +#endif >> enum transparent_hugepage_flag { >> TRANSPARENT_HUGEPAGE_FLAG, >> TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG, >> -- >> 2.1.4 >>
| |