PowerPC fixes 5.1-3: CONFIG_SPARSEMEM doesn't exist in the kernel source code

Christian Zigotzky chzigotzky at xenosoft.de
Mon Mar 25 22:00:50 AEDT 2019


Hi All,

I wasn't able to compile the RC2 today because of the following error 
messages:

   CC      arch/powerpc/mm/slb.o
In file included from ./arch/powerpc/include/asm/book3s/64/mmu.h:39:0,
                  from ./arch/powerpc/include/asm/mmu.h:360,
                  from ./arch/powerpc/include/asm/lppaca.h:36,
                  from ./arch/powerpc/include/asm/paca.h:21,
                  from ./arch/powerpc/include/asm/current.h:16,
                  from ./include/linux/thread_info.h:21,
                  from ./include/asm-generic/preempt.h:5,
                  from ./arch/powerpc/include/generated/asm/preempt.h:1,
                  from ./include/linux/preempt.h:78,
                  from ./include/linux/spinlock.h:51,
                  from ./include/linux/mmzone.h:8,
                  from ./include/linux/gfp.h:6,
                  from ./include/linux/mm.h:10,
                  from ./arch/powerpc/include/asm/cacheflush.h:12,
                  from ./arch/powerpc/include/asm/asm-prototypes.h:16,
                  from arch/powerpc/mm/slb.c:17:
./arch/powerpc/include/asm/book3s/64/mmu-hash.h:584:6: warning: 
"MAX_PHYSMEM_BITS" is not defined [-Wundef]
  #if (MAX_PHYSMEM_BITS > MAX_EA_BITS_PER_CONTEXT)
       ^
arch/powerpc/mm/slb.c: In function 'slb_allocate_kernel':
arch/powerpc/mm/slb.c:697:37: error: 'MAX_PHYSMEM_BITS' undeclared 
(first use in this function)
    if ((ea & ~REGION_MASK) > (1UL << MAX_PHYSMEM_BITS))
                                      ^
arch/powerpc/mm/slb.c:697:37: note: each undeclared identifier is 
reported only once for each function it appears in
scripts/Makefile.build:278: recipe for target 'arch/powerpc/mm/slb.o' failed
make[3]: *** [arch/powerpc/mm/slb.o] Error 1
scripts/Makefile.build:489: recipe for target 'arch/powerpc/mm' failed
make[2]: *** [arch/powerpc/mm] Error 2
/home/christian/Downloads/a/Makefile:1046: recipe for target 
'arch/powerpc' failed
make[1]: *** [arch/powerpc] Error 2
Makefile:170: recipe for target 'sub-make' failed
make: *** [sub-make] Error 2

-----

The variable MAX_PHYSMEM_BITS isn't defined. The problem is in the last 
PowerPC fixes 5.1-3: 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=v5.1-rc2&id=a5ed1e96cafde5ba48638f486bfca0685dc6ddc9

Commit log: powerpc/mm: Only define MAX_PHYSMEM_BITS in SPARSEMEM 
configurations

Problematic fix:

diff --git a/arch/powerpc/include/asm/mmu.h b/arch/powerpc/include/asm/mmu.h
index d34ad1657d7b..598cdcdd1355 100644
--- a/arch/powerpc/include/asm/mmu.h
+++ b/arch/powerpc/include/asm/mmu.h
@@ -352,7 +352,7 @@ static inline bool strict_kernel_rwx_enabled(void)
  #if defined(CONFIG_SPARSEMEM_VMEMMAP) && 
defined(CONFIG_SPARSEMEM_EXTREME) &&   \
     defined (CONFIG_PPC_64K_PAGES)
  #define MAX_PHYSMEM_BITS        51
-#else
+#elif defined(CONFIG_SPARSEMEM)
  #define MAX_PHYSMEM_BITS        46
  #endif

The first if statement isn't successfull because the variables 
CONFIG_SPARSEMEM_EXTREME and CONFIG_PPC_64K_PAGES aren't activated in 
our kernel configuration. Therefore we need MAX_PHYSMEM_BITS 46 for our 
Nemo board. Unfortunately CONFIG_SPARSEMEM doesn't exist in the kernel 
source code so we can't activate it in the kernel config.

I replaced '#elif defined(CONFIG_SPARSEMEM)' with '#else' and after that 
the compiling of the RC2 works again.

Please check if CONFIG_SPARSEMEM exists.

Thanks,
Christian


More information about the Linuxppc-dev mailing list