Re: [PATCH 2/2] Propeller: Remove the architecture specific config
From: Rong Xu
Date: Thu Dec 12 2024 - 02:48:23 EST
(o
On Wed, Dec 11, 2024 at 3:06 PM Nathan Chancellor <nathan@xxxxxxxxxx> wrote:
>
> Hi Rong,
>
> On Wed, Dec 11, 2024 at 02:29:43PM -0800, Rong Xu wrote:
> > The CONFIG_PROPELLER_CLANG option currently depends on
> > ARCH_SUPPORTS_PROPELLER_CLANG, but this dependency seems unnecessary.
> >
> > Remove ARCH_SUPPORTS_PROPELLER_CLANG and allow users to control
> > Propeller builds solely through CONFIG_PROPELLER_CLANG. This simplifies
> > the kconfig and avoids potential confusion.
> >
> > Signed-off-by: Rong Xu <xur@xxxxxxxxxx>
> > Suggested-by: Will Deacon <will@xxxxxxxxxx>
>
> In commit d5dc95836147 ("kbuild: Add Propeller configuration for kernel
> build"), you added .llvm_bb_addr_map to arch/x86/kernel/vmlinux.lds.S.
> Was this to address a orphan section warning from the linker? Is that
> same change needed in the linker scripts of the other architectures that
> clang supports building in the kernel?
The .llvm_bb_addr_map section is created when compiling with the
-fbasic-block-address-map flag (or the older -fbasic-block-sections=labels
option), with LLVM. We need the change in the linker script to group the
sections together and emit in the final vmlinux.
This applies to all architectures, as LLVM can generate these sections for
any architecture when the corresponding option is used.
The statement that AutoFDO and Propeller are only supported on certain
platforms really refers to the availability of *native* profile generation:
the native profile generation is only available on these platforms.
Hope this helps,
-Rong
> Cheers,
> Nathan
>
> > ---
> > arch/Kconfig | 4 ----
> > arch/x86/Kconfig | 1 -
> > 2 files changed, 5 deletions(-)
> >
> > diff --git a/arch/Kconfig b/arch/Kconfig
> > index 0b36d74d47031..83731b858ba65 100644
> > --- a/arch/Kconfig
> > +++ b/arch/Kconfig
> > @@ -828,12 +828,8 @@ config AUTOFDO_CLANG
> >
> > If unsure, say N.
> >
> > -config ARCH_SUPPORTS_PROPELLER_CLANG
> > - bool
> > -
> > config PROPELLER_CLANG
> > bool "Enable Clang's Propeller build"
> > - depends on ARCH_SUPPORTS_PROPELLER_CLANG
> > depends on CC_IS_CLANG && CLANG_VERSION >= 190000
> > help
> > This option enables Clang’s Propeller build. When the Propeller
> > diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> > index 9363d9cc9a00a..6c633d93c6390 100644
> > --- a/arch/x86/Kconfig
> > +++ b/arch/x86/Kconfig
> > @@ -128,7 +128,6 @@ config X86
> > select ARCH_SUPPORTS_LTO_CLANG
> > select ARCH_SUPPORTS_LTO_CLANG_THIN
> > select ARCH_SUPPORTS_RT
> > - select ARCH_SUPPORTS_PROPELLER_CLANG if X86_64
> > select ARCH_USE_BUILTIN_BSWAP
> > select ARCH_USE_CMPXCHG_LOCKREF if X86_CMPXCHG64
> > select ARCH_USE_MEMTEST
> > --
> > 2.47.0.338.g60cca15819-goog
> >