[PATCH] powerpc/64s: POWER10 CPU Kconfig build option

Christophe Leroy christophe.leroy at csgroup.eu
Fri Sep 23 15:46:30 AEST 2022



Le 23/09/2022 à 05:30, Nicholas Piggin a écrit :
> This adds basic POWER10_CPU option, which builds with -mcpu=power10.
> 
> Signed-off-by: Nicholas Piggin <npiggin at gmail.com>
> ---
> There's quite a lot of asm and linker changes slated for the next merge
> window already so I may leave the pcrel patch for next time. I think we
> can add the basic POWER10 build option though.
> 
> Thanks,
> Nick
> 
>   arch/powerpc/Makefile                  | 7 ++++++-
>   arch/powerpc/platforms/Kconfig.cputype | 8 +++++++-
>   2 files changed, 13 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
> index 8a3d69b02672..ea88af26f8c6 100644
> --- a/arch/powerpc/Makefile
> +++ b/arch/powerpc/Makefile
> @@ -192,9 +192,14 @@ ifdef CONFIG_476FPE_ERR46
>   		-T $(srctree)/arch/powerpc/platforms/44x/ppc476_modules.lds
>   endif
>   
> -# No AltiVec or VSX instructions when building kernel
> +# No prefix or pcrel
> +KBUILD_CFLAGS += $(call cc-option,-mno-prefixed)

We have lots of code to handle prefixed instructions in code_patching, 
and that code complexifies stuff and has a performance impact.
And it is only partially taken into account, areas like ftrace don't 
properly take care of prefixed instructions.

Should we get rid of prefixed instruction support completely in the 
kernel, and come back to more simple code ?

> +KBUILD_CFLAGS += $(call cc-option,-mno-pcrel)
> +
> +# No AltiVec or VSX or MMA instructions when building kernel
>   KBUILD_CFLAGS += $(call cc-option,-mno-altivec)
>   KBUILD_CFLAGS += $(call cc-option,-mno-vsx)
> +KBUILD_CFLAGS += $(call cc-option,-mno-mma)
>   
>   # No SPE instruction when building kernel
>   # (We use all available options to help semi-broken compilers)
> diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
> index 4017be72e46f..1f7c903ea664 100644
> --- a/arch/powerpc/platforms/Kconfig.cputype
> +++ b/arch/powerpc/platforms/Kconfig.cputype
> @@ -171,6 +171,11 @@ config POWER9_CPU
>   	depends on PPC_BOOK3S_64
>   	select ARCH_HAS_FAST_MULTIPLIER
>   
> +config POWER10_CPU
> +	bool "POWER10"
> +	depends on PPC_BOOK3S_64
> +	select ARCH_HAS_FAST_MULTIPLIER
> +
>   config E5500_CPU
>   	bool "Freescale e5500"
>   	depends on PPC64 && E500
> @@ -239,6 +244,7 @@ config TARGET_CPU
>   	default "power7" if POWER7_CPU
>   	default "power8" if POWER8_CPU
>   	default "power9" if POWER9_CPU
> +	default "power10" if POWER10_CPU
>   	default "405" if 405_CPU
>   	default "440" if 440_CPU
>   	default "464" if 464_CPU


More information about the Linuxppc-dev mailing list