From: Nicholas Piggin <npiggin@gmail.com> Date: 2021-11-09 06:52:34
Similarly to x86, add MAXSMP that should help flush out problems with
vary large SMP and other values associated with very big systems.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
Since v1:
- Reduce MAXSMP NR_CPUS to 8192 if COMPILE_TEST, to reduce compile errors
that aren't caught by existing x86 builds.
Thanks,
Nick
arch/powerpc/Kconfig | 8 ++++++++
arch/powerpc/platforms/Kconfig.cputype | 9 +++++++--
2 files changed, 15 insertions(+), 2 deletions(-)
@@ -64,6 +64,13 @@ config NEED_PER_CPU_EMBED_FIRST_CHUNKconfigNEED_PER_CPU_PAGE_FIRST_CHUNKdef_boolyifPPC64+configMAXSMP+bool"Enable Maximum number of SMP Processors and NUMA Nodes"+depends onSMP&&DEBUG_KERNEL&&PPC_BOOK3S_64+help+EnablemaximumnumberofCPUSandNUMANodesforthisarchitecture.+Ifunsure,sayN.+configNR_IRQSint"Number of virtual interrupt numbers"range321048576
@@ -475,9 +475,14 @@ config SMPIfyoudon'tknowwhattodohere,sayN.+# MAXSMP sets 8192 if COMPILE_TEST because that's what x86 has flushed out.+# Exceeding that will cause a lot of compile errors. Have to deal with those+# first.configNR_CPUS-int"Maximum number of CPUs (2-8192)"ifSMP-range28192ifSMP+int"Maximum number of CPUs (2-8192)"ifSMP&&!MAXSMP+range216384ifSMP+default16384ifMAXSMP&&!COMPILE_TEST+default8192ifMAXSMP&&COMPILE_TESTdefault"1"if!SMPdefault"32"ifPPC64default"4"
Similarly to x86, add MAXSMP that should help flush out problems with
vary large SMP and other values associated with very big systems.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
Since v1:
- Reduce MAXSMP NR_CPUS to 8192 if COMPILE_TEST, to reduce compile errors
that aren't caught by existing x86 builds.
Thanks,
Nick
arch/powerpc/Kconfig | 8 ++++++++
arch/powerpc/platforms/Kconfig.cputype | 9 +++++++--
2 files changed, 15 insertions(+), 2 deletions(-)
@@ -64,6 +64,13 @@ config NEED_PER_CPU_EMBED_FIRST_CHUNKconfigNEED_PER_CPU_PAGE_FIRST_CHUNKdef_boolyifPPC64+configMAXSMP+bool"Enable Maximum number of SMP Processors and NUMA Nodes"+depends onSMP&&DEBUG_KERNEL&&PPC_BOOK3S_64+help+EnablemaximumnumberofCPUSandNUMANodesforthisarchitecture.+Ifunsure,sayN.+configNR_IRQSint"Number of virtual interrupt numbers"range321048576
@@ -475,9 +475,14 @@ config SMPIfyoudon'tknowwhattodohere,sayN.+# MAXSMP sets 8192 if COMPILE_TEST because that's what x86 has flushed out.+# Exceeding that will cause a lot of compile errors. Have to deal with those+# first.configNR_CPUS-int"Maximum number of CPUs (2-8192)"ifSMP-range28192ifSMP+int"Maximum number of CPUs (2-8192)"ifSMP&&!MAXSMP+range216384ifSMP+default16384ifMAXSMP&&!COMPILE_TEST+default8192ifMAXSMP&&COMPILE_TEST
You can do less complex. First hit becomes the default, so you can do:
default 8192 if MAXSMP && COMPILE_TEST
default 16384 if MAXSMP
So when everything is fixed, you just have to drop first line.
default "1" if !SMP
default "32" if PPC64
default "4"
@@ -475,9 +475,14 @@ config SMPIfyoudon'tknowwhattodohere,sayN.+# MAXSMP sets 8192 if COMPILE_TEST because that's what x86 has flushed out.+# Exceeding that will cause a lot of compile errors. Have to deal with those+# first.configNR_CPUS-int"Maximum number of CPUs (2-8192)"ifSMP-range28192ifSMP+int"Maximum number of CPUs (2-8192)"ifSMP&&!MAXSMP+range216384ifSMP+default16384ifMAXSMP&&!COMPILE_TEST+default8192ifMAXSMP&&COMPILE_TEST
You can do less complex. First hit becomes the default, so you can do:
default 8192 if MAXSMP && COMPILE_TEST
default 16384 if MAXSMP
@@ -475,9 +475,14 @@ config SMPIfyoudon'tknowwhattodohere,sayN.+# MAXSMP sets 8192 if COMPILE_TEST because that's what x86 has flushed out.+# Exceeding that will cause a lot of compile errors. Have to deal with those+# first.configNR_CPUS-int"Maximum number of CPUs (2-8192)"ifSMP-range28192ifSMP+int"Maximum number of CPUs (2-8192)"ifSMP&&!MAXSMP+range216384ifSMP+default16384ifMAXSMP&&!COMPILE_TEST+default8192ifMAXSMP&&COMPILE_TEST
You can do less complex. First hit becomes the default, so you can do:
default 8192 if MAXSMP && COMPILE_TEST
default 16384 if MAXSMP
I did that when applying.
But I'll have to drop it, it breaks the allyesconfig build:
In file included from /home/michael/linux/arch/powerpc/include/asm/paravirt.h:15,
from /home/michael/linux/arch/powerpc/include/asm/qspinlock.h:6,
from /home/michael/linux/arch/powerpc/include/asm/spinlock.h:7,
from /home/michael/linux/include/linux/spinlock.h:93,
from /home/michael/linux/include/linux/mmzone.h:8,
from /home/michael/linux/include/linux/gfp.h:6,
from /home/michael/linux/include/linux/mm.h:10,
from /home/michael/linux/arch/powerpc/platforms/powernv/idle.c:9:
/home/michael/linux/arch/powerpc/include/asm/cputhreads.h: In function ‘cpu_thread_mask_to_cores.constprop’:
/home/michael/linux/arch/powerpc/include/asm/cputhreads.h:61:1: error: the frame size of 2064 bytes is larger than 2048 bytes [-Werror=frame-larger-than=]
61 | }
| ^
/home/michael/linux/arch/powerpc/platforms/powernv/idle.c: In function ‘store_fastsleep_workaround_applyonce’:
/home/michael/linux/arch/powerpc/platforms/powernv/idle.c:220:1: error: the frame size of 2080 bytes is larger than 2048 bytes [-Werror=frame-larger-than=]
220 | }
| ^
cc1: all warnings being treated as errors
make[4]: *** [/home/michael/linux/scripts/Makefile.build:287: arch/powerpc/platforms/powernv/idle.o] Error 1
make[4]: *** Waiting for unfinished jobs....
make[3]: *** [/home/michael/linux/scripts/Makefile.build:549: arch/powerpc/platforms/powernv] Error 2
make[3]: *** Waiting for unfinished jobs....
/home/michael/linux/arch/powerpc/kvm/book3s_hv_interrupts.S: Assembler messages:
/home/michael/linux/arch/powerpc/kvm/book3s_hv_interrupts.S:66: Error: operand out of range (0x0000000000010440 is not between 0xffffffffffff8000 and 0x0000000000007ffc)
make[3]: *** [/home/michael/linux/scripts/Makefile.build:388: arch/powerpc/kvm/book3s_hv_interrupts.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [/home/michael/linux/scripts/Makefile.build:549: arch/powerpc/platforms] Error 2
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [/home/michael/linux/scripts/Makefile.build:549: arch/powerpc/kvm] Error 2
make[1]: *** [/home/michael/linux/Makefile:1846: arch/powerpc] Error 2
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:219: __sub-make] Error 2
cheers
@@ -475,9 +475,14 @@ config SMPIfyoudon'tknowwhattodohere,sayN.+# MAXSMP sets 8192 if COMPILE_TEST because that's what x86 has flushed out.+# Exceeding that will cause a lot of compile errors. Have to deal with those+# first.configNR_CPUS-int"Maximum number of CPUs (2-8192)"ifSMP-range28192ifSMP+int"Maximum number of CPUs (2-8192)"ifSMP&&!MAXSMP+range216384ifSMP+default16384ifMAXSMP&&!COMPILE_TEST+default8192ifMAXSMP&&COMPILE_TEST
You can do less complex. First hit becomes the default, so you can do:
default 8192 if MAXSMP && COMPILE_TEST
default 16384 if MAXSMP
I did that when applying.
But I'll have to drop it, it breaks the allyesconfig build:
In file included from /home/michael/linux/arch/powerpc/include/asm/paravirt.h:15,
from /home/michael/linux/arch/powerpc/include/asm/qspinlock.h:6,
from /home/michael/linux/arch/powerpc/include/asm/spinlock.h:7,
from /home/michael/linux/include/linux/spinlock.h:93,
from /home/michael/linux/include/linux/mmzone.h:8,
from /home/michael/linux/include/linux/gfp.h:6,
from /home/michael/linux/include/linux/mm.h:10,
from /home/michael/linux/arch/powerpc/platforms/powernv/idle.c:9:
/home/michael/linux/arch/powerpc/include/asm/cputhreads.h: In function ‘cpu_thread_mask_to_cores.constprop’:
/home/michael/linux/arch/powerpc/include/asm/cputhreads.h:61:1: error: the frame size of 2064 bytes is larger than 2048 bytes [-Werror=frame-larger-than=]
61 | }
| ^
/home/michael/linux/arch/powerpc/platforms/powernv/idle.c: In function ‘store_fastsleep_workaround_applyonce’:
/home/michael/linux/arch/powerpc/platforms/powernv/idle.c:220:1: error: the frame size of 2080 bytes is larger than 2048 bytes [-Werror=frame-larger-than=]
220 | }
| ^
cc1: all warnings being treated as errors
make[4]: *** [/home/michael/linux/scripts/Makefile.build:287: arch/powerpc/platforms/powernv/idle.o] Error 1
make[4]: *** Waiting for unfinished jobs....
make[3]: *** [/home/michael/linux/scripts/Makefile.build:549: arch/powerpc/platforms/powernv] Error 2
make[3]: *** Waiting for unfinished jobs....
/home/michael/linux/arch/powerpc/kvm/book3s_hv_interrupts.S: Assembler messages:
/home/michael/linux/arch/powerpc/kvm/book3s_hv_interrupts.S:66: Error: operand out of range (0x0000000000010440 is not between 0xffffffffffff8000 and 0x0000000000007ffc)
make[3]: *** [/home/michael/linux/scripts/Makefile.build:388: arch/powerpc/kvm/book3s_hv_interrupts.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [/home/michael/linux/scripts/Makefile.build:549: arch/powerpc/platforms] Error 2
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [/home/michael/linux/scripts/Makefile.build:549: arch/powerpc/kvm] Error 2
make[1]: *** [/home/michael/linux/Makefile:1846: arch/powerpc] Error 2
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:219: __sub-make] Error 2
cheers
@@ -475,9 +475,14 @@ config SMPIfyoudon'tknowwhattodohere,sayN.+# MAXSMP sets 8192 if COMPILE_TEST because that's what x86 has flushed out.+# Exceeding that will cause a lot of compile errors. Have to deal with those+# first.configNR_CPUS-int"Maximum number of CPUs (2-8192)"ifSMP-range28192ifSMP+int"Maximum number of CPUs (2-8192)"ifSMP&&!MAXSMP+range216384ifSMP+default16384ifMAXSMP&&!COMPILE_TEST+default8192ifMAXSMP&&COMPILE_TEST
You can do less complex. First hit becomes the default, so you can do:
default 8192 if MAXSMP && COMPILE_TEST
default 16384 if MAXSMP
I did that when applying.
But I'll have to drop it, it breaks the allyesconfig build:
Actually KVM will also be broken, I sent a patch for it but there is
some discussion of fixing it a different way. So maybe leave out the
maxsmp patch for now (or make it depend on BROKEN?). I can re-send
maybe next merge window if the other pieces are in place.
If you could still take that ^^ patch for now would be good though.
Thanks,
Nick