• Ben Hutchings's avatar
    powerpc/mm: Only define MAX_PHYSMEM_BITS in SPARSEMEM configurations · 8bc08689
    Ben Hutchings authored
    MAX_PHYSMEM_BITS only needs to be defined if CONFIG_SPARSEMEM is
    enabled, and that was the case before commit 4ffe713b
    ("powerpc/mm: Increase the max addressable memory to 2PB").
    
    On 32-bit systems, where CONFIG_SPARSEMEM is not enabled, we now
    define it as 46.  That is larger than the real number of physical
    address bits, and breaks calculations in zsmalloc:
    
      mm/zsmalloc.c:130:49: warning: right shift count is negative
        MAX(32, (ZS_MAX_PAGES_PER_ZSPAGE << PAGE_SHIFT >> OBJ_INDEX_BITS))
                                                       ^~
      ...
      mm/zsmalloc.c:253:21: error: variably modified 'size_class' at file scope
        struct size_class *size_class[ZS_SIZE_CLASSES];
                           ^~~~~~~~~~
    
    Fixes: 4ffe713b ("powerpc/mm: Increase the max addressable memory to 2PB")
    Cc: stable@vger.kernel.org # v4.20+
    Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    8bc08689
mmu.h 10.2 KB