Re: [PATCH 15/56] KVM: arm64: Add build rules for separate VHE/nVHE object files
From: Auger Eric <eric.auger@redhat.com>
Date: 2021-05-10 08:46:39
Also in:
kvm, kvmarm
Hi Marc, On 5/5/21 8:03 PM, Marc Zyngier wrote:
Hi Eric, On Tue, 04 May 2021 15:47:36 +0100, Auger Eric [off-list ref] wrote:quoted
Hi David, Marc, On 8/5/20 7:56 PM, Marc Zyngier wrote:quoted
From: David Brazdil <redacted> Add new folders arch/arm64/kvm/hyp/{vhe,nvhe} and Makefiles for building code that runs in EL2 under VHE/nVHE KVM, repsectivelly. Add an include folder for hyp-specific header files which will include code common to VHE/nVHE. Build nVHE code with -D__KVM_NVHE_HYPERVISOR__, VHE code with -D__KVM_VHE_HYPERVISOR__. Under nVHE compile each source file into a `.hyp.tmp.o` object first, then prefix all its symbols with "__kvm_nvhe_" using `objcopy` and produce a `.hyp.o`. Suffixes were chosen so that it would be possible for VHE and nVHE to share some source files, but compiled with different CFLAGS. The nVHE ELF symbol prefix is added to kallsyms.c as ignored. EL2-only symbols will never appear in EL1 stack traces. Due to symbol prefixing, add a section in image-vars.h for aliases of symbols that are defined in nVHE EL2 and accessed by kernel in EL1 or vice versa. Signed-off-by: David Brazdil <redacted> Signed-off-by: Marc Zyngier <maz@kernel.org> Link: https://lore.kernel.org/r/20200625131420.71444-4-dbrazdil@google.com (local) --- arch/arm64/kernel/image-vars.h | 14 +++++++++++++ arch/arm64/kvm/hyp/Makefile | 10 +++++++--- arch/arm64/kvm/hyp/nvhe/Makefile | 34 ++++++++++++++++++++++++++++++++ arch/arm64/kvm/hyp/vhe/Makefile | 17 ++++++++++++++++ scripts/kallsyms.c | 1 + 5 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 arch/arm64/kvm/hyp/nvhe/Makefile create mode 100644 arch/arm64/kvm/hyp/vhe/Makefile[...]quoted
quoted
diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c index 6dc3078649fa..0096cd965332 100644 --- a/scripts/kallsyms.c +++ b/scripts/kallsyms.c@@ -109,6 +109,7 @@ static bool is_ignored_symbol(const char *name, char type) ".LASANPC", /* s390 kasan local symbols */ "__crc_", /* modversions */ "__efistub_", /* arm64 EFI stub namespace */ + "__kvm_nvhe_", /* arm64 non-VHE KVM namespace */The addition of this line seems to have introduced errors on the 'vmlinux symtab matches kallsyms' perf test (perf test -v 1) which fails on aarch64 for all __kvm_nvhe_ prefixed symbols, like ERR : <addr> : __kvm_nvhe___invalid not on kallsyms ERR : <addr> : __kvm_nvhe___do_hyp_init not on kallsyms ERR : <addr> : __kvm_nvhe___kvm_handle_stub_hvc not on kallsyms ERR : <addr> : __kvm_nvhe_reset not on kallsyms ../.. I understand we willingly hided those symbols from /proc/kallsyms. Do you confirm the right fix is to upgrade the perf test suite accordingly?Hmmm. This test always fail here, no matter whether I have this line or not:
sorry Marc I missed your reply,
quoted hunk ↗ jump to hunk
<quote> maz@big-leg-emma:~$ sudo perf_5.10 test -v 1 1: vmlinux symtab matches kallsyms :--- start ---test child forked, pid 664 /proc/{kallsyms,modules} inconsistency while looking for "[bpf]" module! /proc/{kallsyms,modules} inconsistency while looking for "[bpf]" module! /proc/{kallsyms,modules} inconsistency while looking for "[bpf]" module! /proc/{kallsyms,modules} inconsistency while looking for "[bpf]" module! /proc/{kallsyms,modules} inconsistency while looking for "[bpf]" module! /proc/{kallsyms,modules} inconsistency while looking for "[bpf]" module! /proc/{kallsyms,modules} inconsistency while looking for "[bpf]" module! /proc/{kallsyms,modules} inconsistency while looking for "[bpf]" module! /proc/{kallsyms,modules} inconsistency while looking for "[bpf]" module! /proc/{kallsyms,modules} inconsistency while looking for "[bpf]" module! Looking at the vmlinux_path (8 entries long) symsrc__init: cannot get elf header. symsrc__init: cannot get elf header. Couldn't find a vmlinux that matches the kernel running on this machine, skipping test test child finished with -2 ---- end ---- vmlinux symtab matches kallsyms: Skip </quote> Rookie question: How do you provide a kernel to the test framework?
On my end I compiled and installed a kernel and compiled perf from that same kernel. Should work. I don't know how to point to a specific vmlinux Thanks Eric
Thanks, M.
_______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel