From: sashiko-bot@kernel.org
To: "Steffen Eiden" <seiden@linux.ibm.com>
Cc: "Heiko Carstens" <hca@linux.ibm.com>,
"Christian Borntraeger" <borntraeger@linux.ibm.com>,
"Marc Zyngier" <maz@kernel.org>,
kvm@vger.kernel.org, "Vasily Gorbik" <gor@linux.ibm.com>,
kvmarm@lists.linux.dev,
"Alexander Gordeev" <agordeev@linux.ibm.com>,
linux-s390@vger.kernel.org, "Oliver Upton" <oupton@kernel.org>
Subject: Re: [PATCH v7 23/23] KVM: s390: arm64: Add KVM_S390_ARM64 Kconfig and Makefile
Date: Mon, 31 Aug 2026 22:19:39 +0000 [thread overview]
Message-ID: <20260831221939.A9EC11F00A3D@smtp.kernel.org> (raw)
In-Reply-To: <20260831144802.834315-24-seiden@linux.ibm.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] Duplicate tracepoint registrations due to unmodified TRACE_SYSTEM in `virt/kvm/kvm_main.c`.
- [Low] The kvm-arm64 module will fail to build in modpost under all configurations (built-in or module) due to EXPORT_SYMBOL conflicts when compiling KVM core files twice.
--
commit faac05d8e4c537c5a5862961cb0c8e0746920675
Author: Steffen Eiden <seiden@linux.ibm.com>
KVM: s390: arm64: Add KVM_S390_ARM64 Kconfig and Makefile
This commit adds Kbuild and Makefile configurations to build a second KVM
module on s390 implementing the arm64-KVM API. To prevent symbol conflicts
with kvm-s390, internal symbols in kvm-arm64 are mangled if compiled as
built-in. It also overrides KBUILD_MODNAME to fix module parameter handling.
> diff --git a/arch/s390/kvm/arm64/Makefile b/arch/s390/kvm/arm64/Makefile
> new file mode 100644
> index 0000000000000..ae614a62f7b5f
> --- /dev/null
> +++ b/arch/s390/kvm/arm64/Makefile
[ ... ]
> +kvm-arm64-obj := \
> + arm.o \
> + guest.o \
> + handle_exit.o \
> + inject_fault.o \
> + mmio.o \
> + mmu.o \
> + reset.o \
> +
> +kvm-arm64-obj += $(patsubst %.o,%-arm64.o,$(kvm-y))
[Severity: Medium]
Does compiling KVM core files a second time cause duplicate tracepoint
registrations?
When virt/kvm/kvm_main.c is compiled again for the kvm-arm64 module, it
instantiates the tracepoint metadata for CREATE_TRACE_POINTS. The linker
will aggregate the .ftrace_events and __tracepoints_ptrs sections, causing
the trace subsystem to attempt registering identical sets of tracepoints
under the same system and name. This will fail with -EEXIST at boot and
leave the tracepoints broken for the new module.
> +kvm-arm64-obj += $(patsubst %.o,%-arm64.o,$(gmap-y))
> +
> +targets += $(kvm-arm64-obj)
> +
> +$(obj)/%-arm64.o: $(src)/%.c FORCE
> + @mkdir -p $(dir $@)
> + $(call if_changed_rule,cc_o_c)
> +
> +ifeq ($(CONFIG_KVM_S390_ARM64),m)
> +
> +kvm-arm64-y = $(kvm-arm64-obj)
[Severity: Low]
Will this fail to build in modpost when compiled as a module?
When CONFIG_KVM_S390_ARM64=m, Kbuild processes the EXPORT_SYMBOL macros
natively without symbol mangling. Since kvm-arm64.ko and kvm.ko will both
natively export identical KVM core symbols (such as kvm_init), modpost will
fail with duplicate export errors.
> +
> +else ifeq ($(CONFIG_KVM_S390_ARM64),y)
[ ... ]
> +define rule_oc_o_o
> + $(call cmd_and_savecmd,objcopy)
> + $(call cmd,gen_objtooldep)
> + $(call cmd,gen_symversions_o)
> +endef
> +
> +OBJCOPYFLAGS_kvm-namespaced.o := -O $(LD_BFD) --localize-symbols=$(obj)/kvm_symbol_list
[Severity: Low]
Will this localization step cause modpost to fail on built-in code?
When compiled with CONFIG_KVM_S390_ARM64=y, objcopy --localize-symbols
localizes all defined symbols. However, modpost strictly rejects exporting
local symbols via __ksymtab entries, which results in errors like
fatal: local symbol 'kvm_init' was exported.
> +$(obj)/kvm-namespaced.o: $(obj)/kvm-unnamespaced.o $(obj)/kvm_symbol_list FORCE
> + $(call if_changed_rule,oc_o_o)
> +
> +kvm-arm64-y = kvm-namespaced.o
> +
> +targets += kvm-unnamespaced.o kvm_symbol_list kvm-namespaced.o
> +
> +endif
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260831144802.834315-1-seiden@linux.ibm.com?part=23
next prev parent reply other threads:[~2026-08-31 22:19 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-31 14:47 [PATCH v7 00/23] KVM: s390: Introduce arm64 KVM Steffen Eiden
2026-08-31 14:47 ` [PATCH v7 01/23] vfio: Use file-based reference counting for KVM Steffen Eiden
2026-08-31 18:16 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 02/23] KVM: Make device name configurable Steffen Eiden
2026-08-31 18:25 ` sashiko-bot
2026-09-02 0:40 ` Sean Christopherson
2026-09-02 7:50 ` Steffen Eiden
2026-09-02 16:14 ` Sean Christopherson
2026-09-03 11:42 ` Steffen Eiden
2026-09-03 14:30 ` Sean Christopherson
2026-09-03 14:32 ` Sean Christopherson
2026-09-03 14:45 ` Sean Christopherson
2026-09-03 14:55 ` Paolo Bonzini
2026-09-03 15:54 ` Sean Christopherson
2026-09-03 19:13 ` Paolo Bonzini
2026-09-03 20:58 ` Sean Christopherson
2026-09-03 15:48 ` Sean Christopherson
2026-08-31 14:47 ` [PATCH v7 03/23] KVM: Allow KVM implementations to switch off MMIO independent of Kconfig Steffen Eiden
2026-08-31 18:31 ` sashiko-bot
2026-09-02 0:38 ` Sean Christopherson
2026-09-02 8:22 ` Steffen Eiden
2026-09-02 8:30 ` Marc Zyngier
2026-09-02 9:13 ` Steffen Eiden
2026-09-02 13:00 ` Sean Christopherson
2026-09-02 15:50 ` Sean Christopherson
2026-08-31 14:47 ` [PATCH v7 04/23] arm64: Use proper include variant Steffen Eiden
2026-08-31 18:31 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 05/23] arm64: ptrace: Use constants for compat register numbers Steffen Eiden
2026-08-31 18:34 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 06/23] arm64: sysreg: Convert SPSR_ELx to automatic register generation Steffen Eiden
2026-08-31 18:38 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 07/23] KVM: arm64: Access elements of vcpu_gp_regs individually Steffen Eiden
2026-08-31 18:42 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 08/23] KVM: arm64: Use accessor functions for core regs Steffen Eiden
2026-08-31 18:45 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 09/23] arm64: Prepare sharing arm64 headers with s390 Steffen Eiden
2026-08-31 18:50 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 10/23] arm64: Share " Steffen Eiden
2026-08-31 19:03 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 11/23] KVM: arm64: Share arm64 code " Steffen Eiden
2026-08-31 19:14 ` sashiko-bot
2026-09-01 8:13 ` Marc Zyngier
2026-09-01 8:40 ` Steffen Eiden
2026-09-02 7:41 ` Marc Zyngier
2026-09-02 12:41 ` Steffen Eiden
2026-09-12 11:43 ` Marc Zyngier
2026-08-31 14:47 ` [PATCH v7 12/23] s390/tools: Use arm64 headers Steffen Eiden
2026-08-31 19:18 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 13/23] KVM: s390: Use arm64 code Steffen Eiden
2026-08-31 19:26 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 14/23] KVM: s390: Prepare KVM/s390 for a second KVM module Steffen Eiden
2026-08-31 19:47 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 15/23] s390: Introduce Start Arm Execution instruction Steffen Eiden
2026-08-31 20:00 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 16/23] KVM: s390: arm64: Introduce host definitions Steffen Eiden
2026-08-31 20:16 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 17/23] s390/hwcaps: Report SAE support as hwcap Steffen Eiden
2026-08-31 20:20 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 18/23] KVM: s390: Add basic arm64 kvm module Steffen Eiden
2026-08-31 20:56 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 19/23] KVM: s390: arm64: Implement required functions Steffen Eiden
2026-08-31 21:13 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 20/23] KVM: s390: arm64: Implement vm/vcpu create destroy Steffen Eiden
2026-08-31 21:30 ` sashiko-bot
2026-08-31 14:47 ` [PATCH v7 21/23] KVM: s390: arm64: Implement vCPU IOCTLs Steffen Eiden
2026-08-31 21:47 ` sashiko-bot
2026-09-03 13:27 ` Janosch Frank
2026-08-31 14:47 ` [PATCH v7 22/23] KVM: s390: arm64: Implement basic page fault handler Steffen Eiden
2026-08-31 22:00 ` sashiko-bot
2026-08-31 14:48 ` [PATCH v7 23/23] KVM: s390: arm64: Add KVM_S390_ARM64 Kconfig and Makefile Steffen Eiden
2026-08-31 22:19 ` sashiko-bot [this message]
2026-09-02 16:20 ` Sean Christopherson
2026-09-03 8:38 ` Steffen Eiden
2026-09-03 14:43 ` Sean Christopherson
2026-09-03 15:43 ` Steffen Eiden
2026-09-03 16:33 ` Sean Christopherson
2026-09-03 16:41 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260831221939.A9EC11F00A3D@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=agordeev@linux.ibm.com \
--cc=borntraeger@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=linux-s390@vger.kernel.org \
--cc=maz@kernel.org \
--cc=oupton@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=seiden@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.