Hi Sasha, On Wed, Nov 20, 2024 at 09:06:35AM -0500, Sasha Levin wrote: > From: Linus Walleij <linus.walleij@xxxxxxxxxx> > > [ Upstream commit 4aea16b7cfb76bd3361858ceee6893ef5c9b5570 ] > > When enabling expert mode CONFIG_EXPERT and using that power > user mode to disable the branch prediction hardening > !CONFIG_HARDEN_BRANCH_PREDICTOR, the assembly linker > in CLANG notices that some assembly in proc-v7.S does > not have corresponding C call sites, i.e. the prototypes > in proc-v7-bugs.c are enclosed in ifdef > CONFIG_HARDEN_BRANCH_PREDICTOR so this assembly: > > SYM_TYPED_FUNC_START(cpu_v7_smc_switch_mm) > SYM_TYPED_FUNC_START(cpu_v7_hvc_switch_mm) > > Results in: > > ld.lld: error: undefined symbol: __kcfi_typeid_cpu_v7_smc_switch_mm > >>> referenced by proc-v7.S:94 (.../arch/arm/mm/proc-v7.S:94) > >>> arch/arm/mm/proc-v7.o:(.text+0x108) in archive vmlinux.a > > ld.lld: error: undefined symbol: __kcfi_typeid_cpu_v7_hvc_switch_mm > >>> referenced by proc-v7.S:105 (.../arch/arm/mm/proc-v7.S:105) > >>> arch/arm/mm/proc-v7.o:(.text+0x124) in archive vmlinux.a > > Fix this by adding an additional requirement that > CONFIG_HARDEN_BRANCH_PREDICTOR has to be enabled to compile > these assembly calls. > > Closes: https://lore.kernel.org/oe-kbuild-all/202411041456.ZsoEiD7T-lkp@xxxxxxxxx/ > > Reported-by: kernel test robot <lkp@xxxxxxxxx> > Reviewed-by: Nathan Chancellor <nathan@xxxxxxxxxx> > Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx> > Signed-off-by: Russell King (Oracle) <rmk+kernel@xxxxxxxxxxxxxxx> > Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx> > --- > arch/arm/mm/proc-v7.S | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S > index 193c7aeb67039..bea11f9bfe856 100644 > --- a/arch/arm/mm/proc-v7.S > +++ b/arch/arm/mm/proc-v7.S > @@ -93,7 +93,7 @@ ENTRY(cpu_v7_dcache_clean_area) > ret lr > ENDPROC(cpu_v7_dcache_clean_area) > > -#ifdef CONFIG_ARM_PSCI > +#if defined(CONFIG_ARM_PSCI) && defined(CONFIG_HARDEN_BRANCH_PREDICTOR) > .arch_extension sec > ENTRY(cpu_v7_smc_switch_mm) This patch is unnecessary in branches prior to 6.10 (when ARM started supporting kCFI) because SYM_TYPED_FUNC_START() is not used here. I would just drop it for 6.6 and earlier. > stmfd sp!, {r0 - r3} > -- > 2.43.0 >