On 11/04/2018 10:58, Christophe LEROY wrote: > > > Le 11/04/2018 ? 10:03, Laurent Dufour a ?crit?: >> Remove the additional define HAVE_PTE_SPECIAL and rely directly on >> CONFIG_ARCH_HAS_PTE_SPECIAL. >> >> There is no functional change introduced by this patch >> >> Signed-off-by: Laurent Dufour <ldufour at linux.vnet.ibm.com> >> --- >> ? mm/memory.c | 19 ++++++++----------- >> ? 1 file changed, 8 insertions(+), 11 deletions(-) >> >> diff --git a/mm/memory.c b/mm/memory.c >> index 96910c625daa..7f7dc7b2a341 100644 >> --- a/mm/memory.c >> +++ b/mm/memory.c >> @@ -817,17 +817,12 @@ static void print_bad_pte(struct vm_area_struct *vma, >> unsigned long addr, >> ?? * PFNMAP mappings in order to support COWable mappings. >> ?? * >> ?? */ >> -#ifdef CONFIG_ARCH_HAS_PTE_SPECIAL >> -# define HAVE_PTE_SPECIAL 1 >> -#else >> -# define HAVE_PTE_SPECIAL 0 >> -#endif >> ? struct page *_vm_normal_page(struct vm_area_struct *vma, unsigned long addr, >> ?????????????????? pte_t pte, bool with_public_device) >> ? { >> ????? unsigned long pfn = pte_pfn(pte); >> ? -??? if (HAVE_PTE_SPECIAL) { >> +??? if (IS_ENABLED(CONFIG_ARCH_HAS_PTE_SPECIAL)) { >> ????????? if (likely(!pte_special(pte))) >> ????????????? goto check_pfn; >> ????????? if (vma->vm_ops && vma->vm_ops->find_special_page) >> @@ -862,7 +857,7 @@ struct page *_vm_normal_page(struct vm_area_struct *vma, >> unsigned long addr, >> ????????? return NULL; >> ????? } >> ? -??? /* !HAVE_PTE_SPECIAL case follows: */ >> +??? /* !CONFIG_ARCH_HAS_PTE_SPECIAL case follows: */ >> ? ????? if (unlikely(vma->vm_flags & (VM_PFNMAP|VM_MIXEDMAP))) { >> ????????? if (vma->vm_flags & VM_MIXEDMAP) { >> @@ -881,7 +876,8 @@ struct page *_vm_normal_page(struct vm_area_struct *vma, >> unsigned long addr, >> ? ????? if (is_zero_pfn(pfn)) >> ????????? return NULL; >> -check_pfn: >> + >> +check_pfn: __maybe_unused > > See below > >> ????? if (unlikely(pfn > highest_memmap_pfn)) { >> ????????? print_bad_pte(vma, addr, pte, NULL); >> ????????? return NULL; >> @@ -891,7 +887,7 @@ struct page *_vm_normal_page(struct vm_area_struct *vma, >> unsigned long addr, >> ?????? * NOTE! We still have PageReserved() pages in the page tables. >> ?????? * eg. VDSO mappings can cause them to exist. >> ?????? */ >> -out: >> +out: __maybe_unused > > Why do you need that change ? > > There is no reason for the compiler to complain. It would complain if the goto > was within a #ifdef, but all the purpose of using IS_ENABLED() is to allow the > compiler to properly handle all possible cases. That's all the force of > IS_ENABLED() compared to ifdefs, and that the reason why they are plebicited, > ref Linux Codying style for a detailed explanation. Fair enough. Should I submit a v4 just to remove these so ugly __maybe_unused ?