• Mike Rapoport's avatar
    mips: fix build when "48 bits virtual memory" is enabled · 3ed6751b
    Mike Rapoport authored
    With CONFIG_MIPS_VA_BITS_48=y the build fails miserably:
    
      CC      arch/mips/kernel/asm-offsets.s
    In file included from arch/mips/include/asm/pgtable.h:644,
                     from include/linux/mm.h:99,
                     from arch/mips/kernel/asm-offsets.c:15:
    include/asm-generic/pgtable.h:16:2: error: #error CONFIG_PGTABLE_LEVELS is not consistent with __PAGETABLE_{P4D,PUD,PMD}_FOLDED
     #error CONFIG_PGTABLE_LEVELS is not consistent with __PAGETABLE_{P4D,PUD,PMD}_FOLDED
      ^~~~~
    include/asm-generic/pgtable.h:390:28: error: unknown type name 'p4d_t'; did you mean 'pmd_t'?
     static inline int p4d_same(p4d_t p4d_a, p4d_t p4d_b)
                                ^~~~~
                                pmd_t
    
    [ ... more such errors ... ]
    
    scripts/Makefile.build:99: recipe for target 'arch/mips/kernel/asm-offsets.s' failed
    make[2]: *** [arch/mips/kernel/asm-offsets.s] Error 1
    
    This happens because when CONFIG_MIPS_VA_BITS_48 enables 4th level of the
    page tables, but neither pgtable-nop4d.h nor 5level-fixup.h are included to
    cope with the 5th level.
    
    Replace #ifdef conditions around includes of the pgtable-nop{m,u}d.h with
    explicit CONFIG_PGTABLE_LEVELS and add include of 5level-fixup.h for the
    case when CONFIG_PGTABLE_LEVELS==4
    Signed-off-by: default avatarMike Rapoport <rppt@linux.ibm.com>
    Signed-off-by: default avatarPaul Burton <paulburton@kernel.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: linux-mips@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-mm@kvack.org
    Cc: Mike Rapoport <rppt@kernel.org>
    3ed6751b
pgtable-64.h 10.9 KB