On Thu, 1 Dec 2022 at 11:36, Marc Zyngier <maz@xxxxxxxxxx> wrote: > > On Thu, 01 Dec 2022 09:39:57 +0000, > Naresh Kamboju <naresh.kamboju@xxxxxxxxxx> wrote: > > > > [please ignore if it is already reported] > > > > The stable-rc 5.10 arm64 allmodconfig builds failed with gcc-12. > > List of build warnings and errors with gcc-12 are listed below. > > > > aarch64-linux-gnu-ld: Unexpected GOT/PLT entries detected! > > aarch64-linux-gnu-ld: Unexpected run-time procedure linkages detected! > > aarch64-linux-gnu-ld: arch/arm64/kvm/hyp/nvhe/kvm_nvhe.o: in function > > `__kvm_nvhe___kvm_tlb_flush_vmid_ipa': > > (.hyp.text+0x1a4c): undefined reference to `__kvm_nvhe_memset' > > Stupid gcc. Can you try the following patch and check if this works > for you? The patch didn't apply smodly, was a few minor issues. But it solved the build error. Cheers, Anders > > Thanks, > > M. > > From 4e775885654bd667a519df5ca5aaf702ce438f5e Mon Sep 17 00:00:00 2001 > From: Will Deacon <will@xxxxxxxxxx> > Date: Fri, 19 Mar 2021 10:01:10 +0000 > Subject: [PATCH] KVM: arm64: Link position-independent string routines into > .hyp.text > > Commit 7b4a7b5e6fefd15f708f959dd43e188444e252ec upstream. > > Pull clear_page(), copy_page(), memcpy() and memset() into the nVHE hyp > code and ensure that we always execute the '__pi_' entry point on the > offchance that it changes in future. > > [ qperret: Commit title nits and added linker script alias ] > > Signed-off-by: Will Deacon <will@xxxxxxxxxx> > Signed-off-by: Quentin Perret <qperret@xxxxxxxxxx> > Signed-off-by: Marc Zyngier <maz@xxxxxxxxxx> > Link: https://lore.kernel.org/r/20210319100146.1149909-3-qperret@xxxxxxxxxx > --- > arch/arm64/include/asm/hyp_image.h | 3 +++ > arch/arm64/kernel/image-vars.h | 11 +++++++++++ > arch/arm64/kvm/hyp/nvhe/Makefile | 4 ++++ > 3 files changed, 18 insertions(+) > > diff --git a/arch/arm64/include/asm/hyp_image.h b/arch/arm64/include/asm/hyp_image.h > index daa1a1da539e..e06842756051 100644 > --- a/arch/arm64/include/asm/hyp_image.h > +++ b/arch/arm64/include/asm/hyp_image.h > @@ -31,6 +31,9 @@ > */ > #define KVM_NVHE_ALIAS(sym) kvm_nvhe_sym(sym) = sym; > > +/* Defines a linker script alias for KVM nVHE hyp symbols */ > +#define KVM_NVHE_ALIAS_HYP(first, sec) kvm_nvhe_sym(first) = kvm_nvhe_sym(sec); > + > #endif /* LINKER_SCRIPT */ > > #endif /* __ARM64_HYP_IMAGE_H__ */ > diff --git a/arch/arm64/kernel/image-vars.h b/arch/arm64/kernel/image-vars.h > index c615b285ff5b..48e43b29a2d5 100644 > --- a/arch/arm64/kernel/image-vars.h > +++ b/arch/arm64/kernel/image-vars.h > @@ -103,6 +103,17 @@ KVM_NVHE_ALIAS(gic_nonsecure_priorities); > KVM_NVHE_ALIAS(__start___kvm_ex_table); > KVM_NVHE_ALIAS(__stop___kvm_ex_table); > > +/* Position-independent library routines */ > +KVM_NVHE_ALIAS_HYP(clear_page, __pi_clear_page); > +KVM_NVHE_ALIAS_HYP(copy_page, __pi_copy_page); > +KVM_NVHE_ALIAS_HYP(memcpy, __pi_memcpy); > +KVM_NVHE_ALIAS_HYP(memset, __pi_memset); > + > +#ifdef CONFIG_KASAN > +KVM_NVHE_ALIAS_HYP(__memcpy, __pi_memcpy); > +KVM_NVHE_ALIAS_HYP(__memset, __pi_memset); > +#endif > + > #endif /* CONFIG_KVM */ > > #endif /* __ARM64_KERNEL_IMAGE_VARS_H */ > diff --git a/arch/arm64/kvm/hyp/nvhe/Makefile b/arch/arm64/kvm/hyp/nvhe/Makefile > index ddde15fe85f2..230bba1a6716 100644 > --- a/arch/arm64/kvm/hyp/nvhe/Makefile > +++ b/arch/arm64/kvm/hyp/nvhe/Makefile > @@ -6,9 +6,13 @@ > asflags-y := -D__KVM_NVHE_HYPERVISOR__ > ccflags-y := -D__KVM_NVHE_HYPERVISOR__ > > +lib-objs := clear_page.o copy_page.o memcpy.o memset.o > +lib-objs := $(addprefix ../../../lib/, $(lib-objs)) > + > obj-y := timer-sr.o sysreg-sr.o debug-sr.o switch.o tlb.o hyp-init.o host.o hyp-main.o > obj-y += ../vgic-v3-sr.o ../aarch32.o ../vgic-v2-cpuif-proxy.o ../entry.o \ > ../fpsimd.o ../hyp-entry.o > +obj-y += $(lib-objs) > > ## > ## Build rules for compiling nVHE hyp code > -- > 2.34.1 > > > -- > Without deviation from the norm, progress is not possible.