* [PATCH v2] powerpc/64s: introduce CONFIG_MAXSMP to test very large SMP
@ 2021-11-09 6:51 Nicholas Piggin
2021-11-09 16:16 ` Christophe Leroy
0 siblings, 1 reply; 6+ messages in thread
From: Nicholas Piggin @ 2021-11-09 6:51 UTC (permalink / raw)
To: linuxppc-dev; +Cc: Nicholas Piggin
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(-)
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index b8f6185d3998..d585fcfa456f 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -64,6 +64,13 @@ config NEED_PER_CPU_EMBED_FIRST_CHUNK
config NEED_PER_CPU_PAGE_FIRST_CHUNK
def_bool y if PPC64
+config MAXSMP
+ bool "Enable Maximum number of SMP Processors and NUMA Nodes"
+ depends on SMP && DEBUG_KERNEL && PPC_BOOK3S_64
+ help
+ Enable maximum number of CPUS and NUMA Nodes for this architecture.
+ If unsure, say N.
+
config NR_IRQS
int "Number of virtual interrupt numbers"
range 32 1048576
@@ -666,6 +673,7 @@ config NUMA
config NODES_SHIFT
int
+ default "10" if MAXSMP
default "8" if PPC64
default "4"
depends on NUMA
diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
index a208997ade88..14c275e0ff93 100644
--- a/arch/powerpc/platforms/Kconfig.cputype
+++ b/arch/powerpc/platforms/Kconfig.cputype
@@ -475,9 +475,14 @@ config SMP
If you don't know what to do here, say N.
+# 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.
config NR_CPUS
- int "Maximum number of CPUs (2-8192)" if SMP
- range 2 8192 if SMP
+ int "Maximum number of CPUs (2-8192)" if SMP && !MAXSMP
+ range 2 16384 if SMP
+ default 16384 if MAXSMP && !COMPILE_TEST
+ default 8192 if MAXSMP && COMPILE_TEST
default "1" if !SMP
default "32" if PPC64
default "4"
--
2.23.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2] powerpc/64s: introduce CONFIG_MAXSMP to test very large SMP
2021-11-09 6:51 [PATCH v2] powerpc/64s: introduce CONFIG_MAXSMP to test very large SMP Nicholas Piggin
@ 2021-11-09 16:16 ` Christophe Leroy
2021-11-11 10:32 ` Michael Ellerman
0 siblings, 1 reply; 6+ messages in thread
From: Christophe Leroy @ 2021-11-09 16:16 UTC (permalink / raw)
To: Nicholas Piggin, linuxppc-dev
Le 09/11/2021 à 07:51, Nicholas Piggin a écrit :
> 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(-)
>
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index b8f6185d3998..d585fcfa456f 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -64,6 +64,13 @@ config NEED_PER_CPU_EMBED_FIRST_CHUNK
> config NEED_PER_CPU_PAGE_FIRST_CHUNK
> def_bool y if PPC64
>
> +config MAXSMP
> + bool "Enable Maximum number of SMP Processors and NUMA Nodes"
> + depends on SMP && DEBUG_KERNEL && PPC_BOOK3S_64
> + help
> + Enable maximum number of CPUS and NUMA Nodes for this architecture.
> + If unsure, say N.
> +
> config NR_IRQS
> int "Number of virtual interrupt numbers"
> range 32 1048576
> @@ -666,6 +673,7 @@ config NUMA
>
> config NODES_SHIFT
> int
> + default "10" if MAXSMP
> default "8" if PPC64
> default "4"
> depends on NUMA
> diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
> index a208997ade88..14c275e0ff93 100644
> --- a/arch/powerpc/platforms/Kconfig.cputype
> +++ b/arch/powerpc/platforms/Kconfig.cputype
> @@ -475,9 +475,14 @@ config SMP
>
> If you don't know what to do here, say N.
>
> +# 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.
> config NR_CPUS
> - int "Maximum number of CPUs (2-8192)" if SMP
> - range 2 8192 if SMP
> + int "Maximum number of CPUs (2-8192)" if SMP && !MAXSMP
> + range 2 16384 if SMP
> + default 16384 if MAXSMP && !COMPILE_TEST
> + default 8192 if MAXSMP && 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"
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] powerpc/64s: introduce CONFIG_MAXSMP to test very large SMP
2021-11-09 16:16 ` Christophe Leroy
@ 2021-11-11 10:32 ` Michael Ellerman
2021-11-23 1:01 ` Michael Ellerman
0 siblings, 1 reply; 6+ messages in thread
From: Michael Ellerman @ 2021-11-11 10:32 UTC (permalink / raw)
To: Christophe Leroy, Nicholas Piggin, linuxppc-dev
Christophe Leroy <christophe.leroy@csgroup.eu> writes:
> Le 09/11/2021 à 07:51, Nicholas Piggin a écrit :
...
>> diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
>> index a208997ade88..14c275e0ff93 100644
>> --- a/arch/powerpc/platforms/Kconfig.cputype
>> +++ b/arch/powerpc/platforms/Kconfig.cputype
>> @@ -475,9 +475,14 @@ config SMP
>>
>> If you don't know what to do here, say N.
>>
>> +# 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.
>> config NR_CPUS
>> - int "Maximum number of CPUs (2-8192)" if SMP
>> - range 2 8192 if SMP
>> + int "Maximum number of CPUs (2-8192)" if SMP && !MAXSMP
>> + range 2 16384 if SMP
>> + default 16384 if MAXSMP && !COMPILE_TEST
>> + default 8192 if MAXSMP && 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.
cheers
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] powerpc/64s: introduce CONFIG_MAXSMP to test very large SMP
2021-11-11 10:32 ` Michael Ellerman
@ 2021-11-23 1:01 ` Michael Ellerman
2021-11-23 5:14 ` Nicholas Piggin
0 siblings, 1 reply; 6+ messages in thread
From: Michael Ellerman @ 2021-11-23 1:01 UTC (permalink / raw)
To: Christophe Leroy, Nicholas Piggin, linuxppc-dev
Michael Ellerman <mpe@ellerman.id.au> writes:
> Christophe Leroy <christophe.leroy@csgroup.eu> writes:
>> Le 09/11/2021 à 07:51, Nicholas Piggin a écrit :
> ...
>>> diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
>>> index a208997ade88..14c275e0ff93 100644
>>> --- a/arch/powerpc/platforms/Kconfig.cputype
>>> +++ b/arch/powerpc/platforms/Kconfig.cputype
>>> @@ -475,9 +475,14 @@ config SMP
>>>
>>> If you don't know what to do here, say N.
>>>
>>> +# 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.
>>> config NR_CPUS
>>> - int "Maximum number of CPUs (2-8192)" if SMP
>>> - range 2 8192 if SMP
>>> + int "Maximum number of CPUs (2-8192)" if SMP && !MAXSMP
>>> + range 2 16384 if SMP
>>> + default 16384 if MAXSMP && !COMPILE_TEST
>>> + default 8192 if MAXSMP && 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
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] powerpc/64s: introduce CONFIG_MAXSMP to test very large SMP
2021-11-23 1:01 ` Michael Ellerman
@ 2021-11-23 5:14 ` Nicholas Piggin
2021-11-23 5:16 ` Nicholas Piggin
0 siblings, 1 reply; 6+ messages in thread
From: Nicholas Piggin @ 2021-11-23 5:14 UTC (permalink / raw)
To: Christophe Leroy, linuxppc-dev, Michael Ellerman
Excerpts from Michael Ellerman's message of November 23, 2021 11:01 am:
> Michael Ellerman <mpe@ellerman.id.au> writes:
>> Christophe Leroy <christophe.leroy@csgroup.eu> writes:
>>> Le 09/11/2021 à 07:51, Nicholas Piggin a écrit :
>> ...
>>>> diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
>>>> index a208997ade88..14c275e0ff93 100644
>>>> --- a/arch/powerpc/platforms/Kconfig.cputype
>>>> +++ b/arch/powerpc/platforms/Kconfig.cputype
>>>> @@ -475,9 +475,14 @@ config SMP
>>>>
>>>> If you don't know what to do here, say N.
>>>>
>>>> +# 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.
>>>> config NR_CPUS
>>>> - int "Maximum number of CPUs (2-8192)" if SMP
>>>> - range 2 8192 if SMP
>>>> + int "Maximum number of CPUs (2-8192)" if SMP && !MAXSMP
>>>> + range 2 16384 if SMP
>>>> + default 16384 if MAXSMP && !COMPILE_TEST
>>>> + default 8192 if MAXSMP && 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:
Ah, you still need patch 1/2 sorry I confused things by only re-sending
this one.
https://patchwork.ozlabs.org/project/linuxppc-dev/patch/20211105035042.1398309-1-npiggin@gmail.com/
Thanks,
Nick
>
> 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
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] powerpc/64s: introduce CONFIG_MAXSMP to test very large SMP
2021-11-23 5:14 ` Nicholas Piggin
@ 2021-11-23 5:16 ` Nicholas Piggin
0 siblings, 0 replies; 6+ messages in thread
From: Nicholas Piggin @ 2021-11-23 5:16 UTC (permalink / raw)
To: Christophe Leroy, linuxppc-dev, Michael Ellerman
Excerpts from Nicholas Piggin's message of November 23, 2021 3:14 pm:
> Excerpts from Michael Ellerman's message of November 23, 2021 11:01 am:
>> Michael Ellerman <mpe@ellerman.id.au> writes:
>>> Christophe Leroy <christophe.leroy@csgroup.eu> writes:
>>>> Le 09/11/2021 à 07:51, Nicholas Piggin a écrit :
>>> ...
>>>>> diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
>>>>> index a208997ade88..14c275e0ff93 100644
>>>>> --- a/arch/powerpc/platforms/Kconfig.cputype
>>>>> +++ b/arch/powerpc/platforms/Kconfig.cputype
>>>>> @@ -475,9 +475,14 @@ config SMP
>>>>>
>>>>> If you don't know what to do here, say N.
>>>>>
>>>>> +# 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.
>>>>> config NR_CPUS
>>>>> - int "Maximum number of CPUs (2-8192)" if SMP
>>>>> - range 2 8192 if SMP
>>>>> + int "Maximum number of CPUs (2-8192)" if SMP && !MAXSMP
>>>>> + range 2 16384 if SMP
>>>>> + default 16384 if MAXSMP && !COMPILE_TEST
>>>>> + default 8192 if MAXSMP && 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:
>
> Ah, you still need patch 1/2 sorry I confused things by only re-sending
> this one.
>
> https://patchwork.ozlabs.org/project/linuxppc-dev/patch/20211105035042.1398309-1-npiggin@gmail.com/
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
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-11-23 5:17 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-09 6:51 [PATCH v2] powerpc/64s: introduce CONFIG_MAXSMP to test very large SMP Nicholas Piggin
2021-11-09 16:16 ` Christophe Leroy
2021-11-11 10:32 ` Michael Ellerman
2021-11-23 1:01 ` Michael Ellerman
2021-11-23 5:14 ` Nicholas Piggin
2021-11-23 5:16 ` Nicholas Piggin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).