* [PATCH 1/2] powerpc/64s: Fix GENERIC_CPU build flags for PPC970 / G5 @ 2022-09-21 1:41 Nicholas Piggin 2022-09-21 1:41 ` [PATCH 2/2] powerpc/64s: update cpu selection options Nicholas Piggin ` (3 more replies) 0 siblings, 4 replies; 8+ messages in thread From: Nicholas Piggin @ 2022-09-21 1:41 UTC (permalink / raw) To: linuxppc-dev; +Cc: Nicholas Piggin Big-endian GENERIC_CPU supports 970, but builds with -mcpu=power5. POWER5 is ISA v2.02 whereas 970 is v2.01 plus Altivec. 2.02 added the popcntb instruction which a compiler might use. Use -mcpu=power4. Fixes: 471d7ff8b51b ("powerpc/64s: Remove POWER4 support") Signed-off-by: Nicholas Piggin <npiggin@gmail.com> --- arch/powerpc/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index 02742facf895..140a5e6471fe 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile @@ -152,7 +152,7 @@ CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=power8 CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power9,-mtune=power8) else CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power7,$(call cc-option,-mtune=power5)) -CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mcpu=power5,-mcpu=power4) +CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=power4 endif else ifdef CONFIG_PPC_BOOK3E_64 CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=powerpc64 -- 2.37.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] powerpc/64s: update cpu selection options 2022-09-21 1:41 [PATCH 1/2] powerpc/64s: Fix GENERIC_CPU build flags for PPC970 / G5 Nicholas Piggin @ 2022-09-21 1:41 ` Nicholas Piggin 2022-09-21 19:03 ` Segher Boessenkool 2022-09-21 16:45 ` [PATCH 1/2] powerpc/64s: Fix GENERIC_CPU build flags for PPC970 / G5 Christophe Leroy ` (2 subsequent siblings) 3 siblings, 1 reply; 8+ messages in thread From: Nicholas Piggin @ 2022-09-21 1:41 UTC (permalink / raw) To: linuxppc-dev; +Cc: Nicholas Piggin Update the 64s GENERIC_CPU option. POWER4 support has been dropped, so make that clear in the option name. The POWER5_CPU option is dropped because it's uncommon, and GENERIC_CPU covers it. -mtune= before power8 is dropped because the minimum gcc version supports power8, and tuning is made consistent between big and little endian. A 970 option is added for PowerPC 970 / G5 because they still have a user base, and -mtune=power8 does not generate good code for the 970. This also updates the ISA versions document to add Power4/Power4+ because I didn't realise Power4+ used 2.01. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> --- The 970 option builds and boots a QEMU TCG 970 machine. Documentation/powerpc/isa-versions.rst | 14 ++++++++++++++ arch/powerpc/Makefile | 5 +++-- arch/powerpc/platforms/Kconfig.cputype | 8 ++++---- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/Documentation/powerpc/isa-versions.rst b/Documentation/powerpc/isa-versions.rst index dfcb1097dce4..a242b3821681 100644 --- a/Documentation/powerpc/isa-versions.rst +++ b/Documentation/powerpc/isa-versions.rst @@ -4,6 +4,8 @@ CPU to ISA Version Mapping Mapping of some CPU versions to relevant ISA versions. +Note Power4 and Power4+ are not supported. + ========= ==================================================================== CPU Architecture version ========= ==================================================================== @@ -24,6 +26,12 @@ PPC970 - PowerPC User Instruction Set Architecture Book I v2.01 - PowerPC Virtual Environment Architecture Book II v2.01 - PowerPC Operating Environment Architecture Book III v2.01 - Plus Altivec/VMX ~= 2.03 +Power4+ - PowerPC User Instruction Set Architecture Book I v2.01 + - PowerPC Virtual Environment Architecture Book II v2.01 + - PowerPC Operating Environment Architecture Book III v2.01 +Power4 - PowerPC User Instruction Set Architecture Book I v2.00 + - PowerPC Virtual Environment Architecture Book II v2.00 + - PowerPC Operating Environment Architecture Book III v2.00 ========= ==================================================================== @@ -44,6 +52,8 @@ Power5++ No Power5+ No Power5 No PPC970 Yes +Power4+ No +Power4 No ========== ================== ========== ==== @@ -60,6 +70,8 @@ Power5++ No Power5+ No Power5 No PPC970 No +Power4+ No +Power4 No ========== ==== ========== ==================================== @@ -76,4 +88,6 @@ Power5++ No Power5+ No Power5 No PPC970 No +Power4+ No +Power4 No ========== ==================================== diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index 140a5e6471fe..8a3d69b02672 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile @@ -149,11 +149,12 @@ CFLAGS-$(CONFIG_PPC32) += $(call cc-option,-mno-readonly-in-sdata) ifdef CONFIG_PPC_BOOK3S_64 ifdef CONFIG_CPU_LITTLE_ENDIAN CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=power8 -CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power9,-mtune=power8) else -CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power7,$(call cc-option,-mtune=power5)) CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=power4 endif +CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power10, \ + $(call cc-option,-mtune=power9, \ + $(call cc-option,-mtune=power8))) else ifdef CONFIG_PPC_BOOK3E_64 CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=powerpc64 endif diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype index 5185d942b455..4017be72e46f 100644 --- a/arch/powerpc/platforms/Kconfig.cputype +++ b/arch/powerpc/platforms/Kconfig.cputype @@ -125,7 +125,7 @@ choice If unsure, select Generic. config GENERIC_CPU - bool "Generic (POWER4 and above)" + bool "Generic (POWER5 and PowerPC 970 and above)" depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN select PPC_64S_HASH_MMU @@ -144,8 +144,8 @@ config CELL_CPU depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN select PPC_64S_HASH_MMU -config POWER5_CPU - bool "POWER5" +config PPC_970_CPU + bool "PowerPC 970 (including PowerPC G5)" depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN select PPC_64S_HASH_MMU @@ -234,7 +234,7 @@ config TARGET_CPU string depends on TARGET_CPU_BOOL default "cell" if CELL_CPU - default "power5" if POWER5_CPU + default "970" if PPC_970_CPU default "power6" if POWER6_CPU default "power7" if POWER7_CPU default "power8" if POWER8_CPU -- 2.37.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] powerpc/64s: update cpu selection options 2022-09-21 1:41 ` [PATCH 2/2] powerpc/64s: update cpu selection options Nicholas Piggin @ 2022-09-21 19:03 ` Segher Boessenkool 0 siblings, 0 replies; 8+ messages in thread From: Segher Boessenkool @ 2022-09-21 19:03 UTC (permalink / raw) To: Nicholas Piggin; +Cc: linuxppc-dev On Wed, Sep 21, 2022 at 11:41:03AM +1000, Nicholas Piggin wrote: > Update the 64s GENERIC_CPU option. POWER4 support has been dropped, so > make that clear in the option name. The POWER5_CPU option is dropped > because it's uncommon, and GENERIC_CPU covers it. > > -mtune= before power8 is dropped because the minimum gcc version > supports power8, and tuning is made consistent between big and little > endian. > > A 970 option is added for PowerPC 970 / G5 because they still have a > user base, and -mtune=power8 does not generate good code for the 970. > > This also updates the ISA versions document to add Power4/Power4+ > because I didn't realise Power4+ used 2.01. > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Reviewed-by: Segher Boessenkool <segher@kernel.crashing.org> Cheers, Segher ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] powerpc/64s: Fix GENERIC_CPU build flags for PPC970 / G5 2022-09-21 1:41 [PATCH 1/2] powerpc/64s: Fix GENERIC_CPU build flags for PPC970 / G5 Nicholas Piggin 2022-09-21 1:41 ` [PATCH 2/2] powerpc/64s: update cpu selection options Nicholas Piggin @ 2022-09-21 16:45 ` Christophe Leroy 2022-09-21 18:50 ` Segher Boessenkool 2022-10-04 13:24 ` Michael Ellerman 3 siblings, 0 replies; 8+ messages in thread From: Christophe Leroy @ 2022-09-21 16:45 UTC (permalink / raw) To: Nicholas Piggin, linuxppc-dev Le 21/09/2022 à 03:41, Nicholas Piggin a écrit : > Big-endian GENERIC_CPU supports 970, but builds with -mcpu=power5. > POWER5 is ISA v2.02 whereas 970 is v2.01 plus Altivec. 2.02 added > the popcntb instruction which a compiler might use. > > Use -mcpu=power4. > > Fixes: 471d7ff8b51b ("powerpc/64s: Remove POWER4 support") > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > --- > arch/powerpc/Makefile | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile > index 02742facf895..140a5e6471fe 100644 > --- a/arch/powerpc/Makefile > +++ b/arch/powerpc/Makefile > @@ -152,7 +152,7 @@ CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=power8 > CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power9,-mtune=power8) > else > CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power7,$(call cc-option,-mtune=power5)) > -CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mcpu=power5,-mcpu=power4) > +CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=power4 > endif > else ifdef CONFIG_PPC_BOOK3E_64 > CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=powerpc64 That else ifdef CONFIG_PPC_BOOK3E_64 looks odd. I might have forgotten to drop something. Since commit d6b551b8f90c ("powerpc/64e: Fix build failure with GCC 12 (unrecognized opcode: `wrteei')") it is not possible anymore to select CONFIG_GENERIC_CPU if not book3s64. Christophe ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] powerpc/64s: Fix GENERIC_CPU build flags for PPC970 / G5 2022-09-21 1:41 [PATCH 1/2] powerpc/64s: Fix GENERIC_CPU build flags for PPC970 / G5 Nicholas Piggin 2022-09-21 1:41 ` [PATCH 2/2] powerpc/64s: update cpu selection options Nicholas Piggin 2022-09-21 16:45 ` [PATCH 1/2] powerpc/64s: Fix GENERIC_CPU build flags for PPC970 / G5 Christophe Leroy @ 2022-09-21 18:50 ` Segher Boessenkool 2022-09-23 7:17 ` Nicholas Piggin 2022-10-04 13:24 ` Michael Ellerman 3 siblings, 1 reply; 8+ messages in thread From: Segher Boessenkool @ 2022-09-21 18:50 UTC (permalink / raw) To: Nicholas Piggin; +Cc: linuxppc-dev On Wed, Sep 21, 2022 at 11:41:02AM +1000, Nicholas Piggin wrote: > Big-endian GENERIC_CPU supports 970, but builds with -mcpu=power5. > POWER5 is ISA v2.02 whereas 970 is v2.01 plus Altivec. 2.02 added > the popcntb instruction which a compiler might use. > > Use -mcpu=power4. > > Fixes: 471d7ff8b51b ("powerpc/64s: Remove POWER4 support") > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Reviewed-by: Segher Boessenkool <segher@kernel.crashing.org> Thank you! Maybe superfluous, but some more context: GCC's -mcpu=power4 means POWER4+, ISA 2.01, according to our documentation. There is no difference with ISA 2.00 (what plain POWER4 implements) for anything GCC does. Segher ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] powerpc/64s: Fix GENERIC_CPU build flags for PPC970 / G5 2022-09-21 18:50 ` Segher Boessenkool @ 2022-09-23 7:17 ` Nicholas Piggin 2022-09-23 12:22 ` Segher Boessenkool 0 siblings, 1 reply; 8+ messages in thread From: Nicholas Piggin @ 2022-09-23 7:17 UTC (permalink / raw) To: Segher Boessenkool; +Cc: linuxppc-dev On Thu Sep 22, 2022 at 4:50 AM AEST, Segher Boessenkool wrote: > On Wed, Sep 21, 2022 at 11:41:02AM +1000, Nicholas Piggin wrote: > > Big-endian GENERIC_CPU supports 970, but builds with -mcpu=power5. > > POWER5 is ISA v2.02 whereas 970 is v2.01 plus Altivec. 2.02 added > > the popcntb instruction which a compiler might use. > > > > Use -mcpu=power4. > > > > Fixes: 471d7ff8b51b ("powerpc/64s: Remove POWER4 support") > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > > Reviewed-by: Segher Boessenkool <segher@kernel.crashing.org> > > Thank you! > > Maybe superfluous, but some more context: GCC's -mcpu=power4 means > POWER4+, ISA 2.01, according to our documentation. There is no > difference with ISA 2.00 (what plain POWER4 implements) for anything > GCC does. Huh, okay. Well I guess we are past that point now, interesting that another ISA version was done for 4+ though, and then another for 5. I don't see a list of changes from 2.00 in the public version, I wonder what else changed other than mtmsrd. Thanks, Nick ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] powerpc/64s: Fix GENERIC_CPU build flags for PPC970 / G5 2022-09-23 7:17 ` Nicholas Piggin @ 2022-09-23 12:22 ` Segher Boessenkool 0 siblings, 0 replies; 8+ messages in thread From: Segher Boessenkool @ 2022-09-23 12:22 UTC (permalink / raw) To: Nicholas Piggin; +Cc: linuxppc-dev On Fri, Sep 23, 2022 at 05:17:45PM +1000, Nicholas Piggin wrote: > On Thu Sep 22, 2022 at 4:50 AM AEST, Segher Boessenkool wrote: > > On Wed, Sep 21, 2022 at 11:41:02AM +1000, Nicholas Piggin wrote: > > > Big-endian GENERIC_CPU supports 970, but builds with -mcpu=power5. > > > POWER5 is ISA v2.02 whereas 970 is v2.01 plus Altivec. 2.02 added > > > the popcntb instruction which a compiler might use. > > > > > > Use -mcpu=power4. > > > > > > Fixes: 471d7ff8b51b ("powerpc/64s: Remove POWER4 support") > > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > > > > Reviewed-by: Segher Boessenkool <segher@kernel.crashing.org> > > > > Thank you! > > > > Maybe superfluous, but some more context: GCC's -mcpu=power4 means > > POWER4+, ISA 2.01, according to our documentation. There is no > > difference with ISA 2.00 (what plain POWER4 implements) for anything > > GCC does. > > Huh, okay. Well I guess we are past that point now, interesting that > another ISA version was done for 4+ though, and then another for 5. > I don't see a list of changes from 2.00 in the public version, I > wonder what else changed other than mtmsrd. I think searching for "POWER4+" will give you everything. I cannot find a public 2.00 either, yeah. I listed everything I think changed elsewhere in the thread. Segher ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] powerpc/64s: Fix GENERIC_CPU build flags for PPC970 / G5 2022-09-21 1:41 [PATCH 1/2] powerpc/64s: Fix GENERIC_CPU build flags for PPC970 / G5 Nicholas Piggin ` (2 preceding siblings ...) 2022-09-21 18:50 ` Segher Boessenkool @ 2022-10-04 13:24 ` Michael Ellerman 3 siblings, 0 replies; 8+ messages in thread From: Michael Ellerman @ 2022-10-04 13:24 UTC (permalink / raw) To: Nicholas Piggin, linuxppc-dev On Wed, 21 Sep 2022 11:41:02 +1000, Nicholas Piggin wrote: > Big-endian GENERIC_CPU supports 970, but builds with -mcpu=power5. > POWER5 is ISA v2.02 whereas 970 is v2.01 plus Altivec. 2.02 added > the popcntb instruction which a compiler might use. > > Use -mcpu=power4. > > > [...] Applied to powerpc/next. [1/2] powerpc/64s: Fix GENERIC_CPU build flags for PPC970 / G5 https://git.kernel.org/powerpc/c/58ec7f06b74e0d6e76c4110afce367c8b5f0837d [2/2] powerpc/64s: update cpu selection options https://git.kernel.org/powerpc/c/7fd123e544886bf04fa853869efe55cb3f22d0c0 cheers ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2022-10-04 13:55 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-09-21 1:41 [PATCH 1/2] powerpc/64s: Fix GENERIC_CPU build flags for PPC970 / G5 Nicholas Piggin 2022-09-21 1:41 ` [PATCH 2/2] powerpc/64s: update cpu selection options Nicholas Piggin 2022-09-21 19:03 ` Segher Boessenkool 2022-09-21 16:45 ` [PATCH 1/2] powerpc/64s: Fix GENERIC_CPU build flags for PPC970 / G5 Christophe Leroy 2022-09-21 18:50 ` Segher Boessenkool 2022-09-23 7:17 ` Nicholas Piggin 2022-09-23 12:22 ` Segher Boessenkool 2022-10-04 13:24 ` Michael Ellerman
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).