Re: [PATCH 2/2] Propeller: Remove the architecture specific config

From: Yabin Cui
Date: Fri Jan 31 2025 - 17:36:34 EST


Tested-by: Yabin Cui <yabinc@xxxxxxxxxx>

On Wed, Dec 11, 2024 at 11:48 PM Rong Xu <xur@xxxxxxxxxx> wrote:
>
> (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
> > >