Linux s390 Architecture development
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Steffen Eiden" <seiden@linux.ibm.com>
Cc: "Christian Borntraeger" <borntraeger@linux.ibm.com>,
	linux-s390@vger.kernel.org, "Oliver Upton" <oupton@kernel.org>,
	"Heiko Carstens" <hca@linux.ibm.com>,
	"Marc Zyngier" <maz@kernel.org>,
	kvm@vger.kernel.org, "Alexander Gordeev" <agordeev@linux.ibm.com>,
	"Vasily Gorbik" <gor@linux.ibm.com>,
	kvmarm@lists.linux.dev
Subject: Re: [PATCH v8 28/29] KVM: s390: arm64: Integrate arm on s390
Date: Fri, 18 Sep 2026 18:11:11 +0000	[thread overview]
Message-ID: <20260918181111.959AC1F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260918133107.1042730-29-seiden@linux.ibm.com>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] kconfig: HAS_IOMEM dependency unintentionally breaks native s390 KVM
- [Low] kbuild: duplicate symbol exports and tracepoint conflicts in kvm-arm64
--

commit 884410e372d8436737ad12a739eafeab45f8d49c
Author: Steffen Eiden <seiden@linux.ibm.com>

KVM: s390: arm64: Integrate arm on s390

This commit adds the Kbuild and Makefile configurations necessary to build a
second KVM module on s390 that implements the arm64-KVM API. It introduces
symbol mangling for built-in compilation to prevent conflicts with kvm-s390,
and it forces the KBUILD_MODNAME to kvm-arm64 to handle module parameters
correctly.

> diff --git a/arch/s390/kvm/Kconfig b/arch/s390/kvm/Kconfig
> index a6ff2e5aa19b7..4e060185c2fb3 100644
> --- a/arch/s390/kvm/Kconfig
> +++ b/arch/s390/kvm/Kconfig
> @@ -19,6 +19,7 @@ if VIRTUALIZATION
>  config KVM
>  	def_tristate y
>  	prompt "Kernel-based Virtual Machine (KVM) support"
> +	depends on HAS_IOMEM

[Severity: High]
Could this new dependency on HAS_IOMEM unintentionally break backwards
compatibility for native s390 KVM?

On the s390 architecture, HAS_IOMEM is defined strictly as PCI support.

If a user disables PCI, HAS_IOMEM evaluates to false, making the entire KVM
subsystem unselectable.

Native s390 KVM does not actually require PCI support to function properly.

>  	select HAVE_KVM_CPU_RELAX_INTERCEPT
>  	select KVM_ASYNC_PF
 
[ ... ]

> diff --git a/arch/s390/kvm/arm64/Makefile b/arch/s390/kvm/arm64/Makefile
> new file mode 100644
> index 0000000000000..bd78d64939d1a
> --- /dev/null
> +++ b/arch/s390/kvm/arm64/Makefile
> @@ -0,0 +1,93 @@
> +# SPDX-License-Identifier: GPL-2.0
> +
> +KVM := ../../../../virt/kvm

[ ... ]

> +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: Low]
Will this pattern force generic kvm files, which contain exported macros and
tracepoint definitions, to be compiled a second time?

This can lead to the kernel build failing during the modpost phase due to
duplicate exported symbols.

> +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),m)
> +
> +kvm-arm64-y = $(kvm-arm64-obj)

[Severity: Low]
Is it intentional that no symbol localization is attempted here for the
module case?

This seems to guarantee a module namespace conflict. Both kvm.ko and
kvm-arm64.ko will globally export the same tracepoints.

> +
> +else ifeq ($(CONFIG_KVM),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
> +$(obj)/kvm-namespaced.o: $(obj)/kvm-unnamespaced.o $(obj)/kvm_symbol_list FORCE
> +	$(call if_changed_rule,oc_o_o)

[Severity: Low]
Can this objcopy command create a state that modpost will reject when
checking the vmlinux binary?

While this transforms target symbols to local, it preserves the
.export_symbol structures.

Modpost intentionally terminates the build when it encounters local symbols
that have .export_symbol sections.

> +
> +kvm-arm64-y = kvm-namespaced.o
> +
> +targets += kvm-unnamespaced.o kvm_symbol_list kvm-namespaced.o
> +
> +endif

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260918133107.1042730-1-seiden@linux.ibm.com?part=28

  reply	other threads:[~2026-09-18 18:11 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-18 13:30 [PATCH v8 00/29] KVM: s390: Introduce arm64 KVM Steffen Eiden
2026-09-18 13:30 ` [PATCH v8 01/29] KVM: Introduce file_to_kvm_<arch>() infrastructure Steffen Eiden
2026-09-18 13:45   ` sashiko-bot
2026-09-18 13:30 ` [PATCH v8 02/29] KVM: Add file back-pointer to struct kvm Steffen Eiden
2026-09-18 13:56   ` sashiko-bot
2026-09-18 13:30 ` [PATCH v8 03/29] KVM: x86: Use file_to_kvm_x86() in SEV Steffen Eiden
2026-09-18 14:02   ` sashiko-bot
2026-09-18 13:30 ` [PATCH v8 04/29] KVM/vfio: Use file-based reference counting for KVM Steffen Eiden
2026-09-18 14:26   ` sashiko-bot
2026-09-18 13:30 ` [PATCH v8 05/29] KVM: Restrict kvm_get_kvm/kvm_put_kvm export to internal KVM modules Steffen Eiden
2026-09-18 14:30   ` sashiko-bot
2026-09-18 13:30 ` [PATCH v8 06/29] KVM: Move export symbol check macros to Makefile.kvm Steffen Eiden
2026-09-18 14:37   ` sashiko-bot
2026-09-18 13:30 ` [PATCH v8 07/29] KVM: Make device name configurable Steffen Eiden
2026-09-18 14:58   ` sashiko-bot
2026-09-18 13:30 ` [PATCH v8 08/29] KVM: Move architecture capability Kconfigs to header defines Steffen Eiden
2026-09-18 15:07   ` sashiko-bot
2026-09-21  7:09   ` Steffen Eiden
2026-09-18 13:30 ` [PATCH v8 09/29] KVM: Replace CONFIG_KVM_MMIO with KVM_NO_MMIO Steffen Eiden
2026-09-18 15:15   ` sashiko-bot
2026-09-18 13:30 ` [PATCH v8 10/29] arm64: Use proper include variant Steffen Eiden
2026-09-18 15:16   ` sashiko-bot
2026-09-28 14:01   ` Catalin Marinas
2026-09-18 13:30 ` [PATCH v8 11/29] arm64: ptrace: Use constants for compat register numbers Steffen Eiden
2026-09-18 15:20   ` sashiko-bot
2026-09-28 14:01   ` Catalin Marinas
2026-09-18 13:30 ` [PATCH v8 12/29] arm64: sysreg: Convert SPSR_ELx to automatic register generation Steffen Eiden
2026-09-18 15:24   ` sashiko-bot
2026-09-28 15:08   ` Catalin Marinas
2026-09-28 15:36     ` Steffen Eiden
2026-09-18 13:30 ` [PATCH v8 13/29] KVM: arm64: Access elements of vcpu_gp_regs individually Steffen Eiden
2026-09-18 15:28   ` sashiko-bot
2026-09-18 13:30 ` [PATCH v8 14/29] KVM: arm64: Use accessor functions for core regs Steffen Eiden
2026-09-18 15:32   ` sashiko-bot
2026-09-18 13:30 ` [PATCH v8 15/29] arm64: Prepare sharing arm64 headers with s390 Steffen Eiden
2026-09-18 15:39   ` sashiko-bot
2026-09-28 15:11   ` Catalin Marinas
2026-09-18 13:30 ` [PATCH v8 16/29] arm64: Share " Steffen Eiden
2026-09-18 15:50   ` sashiko-bot
2026-09-28 16:07   ` Catalin Marinas
2026-09-28 16:23     ` Steffen Eiden
2026-09-29  4:19       ` Andreas Grapentin
2026-09-29 17:00         ` Catalin Marinas
2026-09-30  7:28           ` Steffen Eiden
2026-09-30  7:55             ` Marc Zyngier
2026-09-30  8:18               ` Will Deacon
2026-09-30  8:53               ` Steffen Eiden
2026-09-18 13:30 ` [PATCH v8 17/29] KVM: arm64: Share arm64 code " Steffen Eiden
2026-09-18 16:02   ` sashiko-bot
2026-09-18 13:30 ` [PATCH v8 18/29] s390/tools: Use arm64 headers Steffen Eiden
2026-09-18 16:09   ` sashiko-bot
2026-09-18 13:30 ` [PATCH v8 19/29] KVM: s390: Use arm64 code Steffen Eiden
2026-09-18 16:14   ` sashiko-bot
2026-09-18 13:30 ` [PATCH v8 20/29] s390: Introduce Start Arm Execution instruction Steffen Eiden
2026-09-18 16:28   ` sashiko-bot
2026-09-28 15:53   ` Ilya Leoshkevich
2026-09-28 16:15     ` Steffen Eiden
2026-09-28 16:18       ` Ilya Leoshkevich
2026-09-18 13:30 ` [PATCH v8 21/29] KVM: s390: arm64: Introduce host definitions Steffen Eiden
2026-09-18 16:44   ` sashiko-bot
2026-09-18 13:30 ` [PATCH v8 22/29] s390/hwcaps: Report SAE support as hwcap Steffen Eiden
2026-09-18 16:49   ` sashiko-bot
2026-09-28 15:58   ` Ilya Leoshkevich
2026-09-18 13:31 ` [PATCH v8 23/29] KVM: s390: Add basic arm64 kvm module Steffen Eiden
2026-09-18 17:00   ` sashiko-bot
2026-09-28 14:15   ` Hendrik Brueckner
2026-09-28 14:22     ` Steffen Eiden
2026-09-18 13:31 ` [PATCH v8 24/29] KVM: s390: arm64: Implement required functions Steffen Eiden
2026-09-18 17:13   ` sashiko-bot
2026-09-18 13:31 ` [PATCH v8 25/29] KVM: s390: arm64: Implement vm/vcpu create destroy Steffen Eiden
2026-09-18 17:24   ` sashiko-bot
2026-09-18 13:31 ` [PATCH v8 26/29] KVM: s390: arm64: Implement vCPU IOCTLs Steffen Eiden
2026-09-18 17:45   ` sashiko-bot
2026-09-18 13:31 ` [PATCH v8 27/29] KVM: s390: arm64: Implement basic page fault handler Steffen Eiden
2026-09-18 17:55   ` sashiko-bot
2026-09-18 13:31 ` [PATCH v8 28/29] KVM: s390: arm64: Integrate arm on s390 Steffen Eiden
2026-09-18 18:11   ` sashiko-bot [this message]
2026-09-18 13:31 ` [PATCH v8 29/29] KVM: s390: Enforce no unexpected external symbol exports in s390 KVM Steffen Eiden
2026-09-18 18:19   ` sashiko-bot
2026-09-18 13:38 ` [PATCH v8 00/29] KVM: s390: Introduce arm64 KVM Steffen Eiden

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=20260918181111.959AC1F000FF@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox