From: Steffen Eiden <seiden@linux.ibm.com>
To: Steffen Eiden <seiden@linux.ibm.com>
Cc: kvm@vger.kernel.org, kvmarm@lists.linux.dev,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org,
Alexander Gordeev <agordeev@linux.ibm.com>,
Andreas Grapentin <gra@linux.ibm.com>,
Arnd Bergmann <arnd@arndb.de>,
Catalin Marinas <catalin.marinas@arm.com>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Claudio Imbrenda <imbrenda@linux.ibm.com>,
David Hildenbrand <david@kernel.org>,
Friedrich Welter <fritz@linux.ibm.com>,
Fuad Tabba <tabba@google.com>, Gautam Gala <ggala@linux.ibm.com>,
Hariharan Mari <hari55@linux.ibm.com>,
Heiko Carstens <hca@linux.ibm.com>,
Hendrik Brueckner <brueckner@linux.ibm.com>,
Ilya Leoshkevich <iii@linux.ibm.com>,
Janosch Frank <frankja@linux.ibm.com>,
Joey Gouly <joey.gouly@arm.com>, Marc Zyngier <maz@kernel.org>,
Nico Boehr <nrb@linux.ibm.com>,
Nina Schoetterl-Glausch <oss@nina.schoetterlglausch.eu>,
Oliver Upton <oupton@kernel.org>,
Paolo Bonzini <pbonzini@redhat.com>,
Sean Christopherson <seanjc@google.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Sven Schnelle <svens@linux.ibm.com>,
Ulrich Weigand <Ulrich.Weigand@de.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>, Will Deacon <will@kernel.org>,
Zenghui Yu <yuzenghui@huawei.com>
Subject: Re: [PATCH v9 00/24] KVM: s390: Introduce arm64 KVM
Date: Wed, 14 Oct 2026 11:23:43 +0200 [thread overview]
Message-ID: <20261014092343.715112-C-seiden@linux.ibm.com> (raw)
In-Reply-To: <20260930173441.66762-1-seiden@linux.ibm.com>
On Wed, Sep 30, 2026 at 07:34:15PM +0200, Steffen Eiden wrote:
> Introduce arm-on-s390. Enable KVM-accelerated ARM CPU virtualisation on s390.
>
....
The s390 patches (12..) of this series currently have 3 **build**
conflicts with linux-next / armkvm-next. But git will apply them clean.
Triggered by:
a467f39afc2a ("KVM: arm64: Prevent unsupported vcpu features for VM types")
eb2eb48c8d72 ("arm64: Add ESR fault helpers")
caa63620f9e3 ("KVM: Allow architectures to disallow pre-fault")
They can be solved by applying the following patches while merging.
Fix is below the patch they fixup.
>
> Hendrik Brueckner (1):
> s390/hwcaps: Report SAE support as hwcap
>
> Steffen Eiden (23):
> KVM: Make device name configurable
> KVM: Move architecture capability Kconfigs to header defines
> KVM: Replace CONFIG_KVM_MMIO with KVM_NO_MMIO
> arm64: Use proper include variant
> arm64: ptrace: Use constants for compat register numbers
> arm64: sysreg: Convert SPSR_ELx to automatic register generation
> KVM: arm64: Access elements of vcpu_gp_regs individually
> KVM: arm64: Use accessor functions for core regs
> arm64: Prepare sharing arm64 headers with s390
> arm64: Share arm64 headers with s390
> KVM: arm64: Share arm64 code with s390
> s390/Kconfig: remove PCI dependency from HAS_IOMEM
> KVM: s390: Use dedicated function for migration mode
> s390/tools: Use arm64 headers
> KVM: s390: Use arm64 code
> s390: Introduce Start Arm Execution instruction
> KVM: s390: arm64: Introduce host definitions
> KVM: s390: Add basic arm64 kvm module
diff --git a/arch/s390/kvm/arm64/arm.c b/arch/s390/kvm/arm64/arm.c
index 803325fc3d55..bd9d85235f43 100644
--- a/arch/s390/kvm/arm64/arm.c
+++ b/arch/s390/kvm/arm64/arm.c
@@ -23,7 +23,7 @@
#define CREATE_TRACE_POINTS
#include "trace.h"
-static unsigned long system_supported_vcpu_features(void);
+static unsigned long system_supported_vcpu_features(struct kvm_vcpu *vcpu);
#define __INCL_GEN_ARM_FILE
#include "generated/arm.inc"
@@ -242,7 +242,7 @@ int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu)
return 0;
}
-static unsigned long system_supported_vcpu_features(void)
+static unsigned long system_supported_vcpu_features(struct kvm_vcpu *vcpu)
{
unsigned long features = KVM_S390_ARM64_IMPL_FEATURES;
> KVM: s390: arm64: Implement required functions
> KVM: s390: arm64: Implement vm/vcpu create destroy
> KVM: s390: arm64: Implement vCPU IOCTLs
> KVM: s390: arm64: Implement basic page fault handler
diff --git a/arch/s390/kvm/arm64/mmu.c b/arch/s390/kvm/arm64/mmu.c
index 3c1c8a2def73..31e0d036896f 100644
--- a/arch/s390/kvm/arm64/mmu.c
+++ b/arch/s390/kvm/arm64/mmu.c
@@ -76,6 +76,7 @@ int kvm_handle_guest_abort(struct kvm_vcpu *vcpu)
bool translation = false;
phys_addr_t fault_ipa;
unsigned long hva;
+ unsigned long esr;
bool write_fault;
bool guest_size_err;
bool writable;
@@ -83,6 +84,7 @@ int kvm_handle_guest_abort(struct kvm_vcpu *vcpu)
int ret;
gfn_t gfn;
+ esr = kvm_vcpu_get_esr(vcpu);
fault_ipa = kvm_vcpu_get_fault_ipa(vcpu);
is_iabt = kvm_vcpu_trap_is_iabt(vcpu);
guest_size_err = vcpu->arch.sae_block.icptr == SAE_ICPTR_GUEST_ADDRESS_SIZE;
@@ -143,7 +145,7 @@ int kvm_handle_guest_abort(struct kvm_vcpu *vcpu)
* Check for a cache maintenance operation. Assume the guest is
* cautious and skip instruction
*/
- if (kvm_is_error_hva(hva) && kvm_vcpu_dabt_is_cm(vcpu)) {
+ if (kvm_is_error_hva(hva) && esr_dabt_is_cm(esr)) {
kvm_incr_pc(vcpu);
ret = 1;
goto out_unlock;
@@ -198,3 +200,11 @@ long kvm_arch_vcpu_pre_fault_memory(struct kvm_vcpu *vcpu, struct kvm_pre_fault_
end = ALIGN(range->gpa + PAGE_SIZE, f.crste_region3 ? _REGION3_SIZE : HPAGE_SIZE);
return min(range->size, end - range->gpa);
}
+
+int kvm_arch_pre_fault_allowed(struct kvm_vcpu *vcpu)
+{
+ if (!kvm_vcpu_initialized(vcpu))
+ return -ENOEXEC;
+
+ return 0;
+}
> KVM: s390: arm64: Integrate arm on s390
>
Steffen
> MAINTAINERS | 1 +
> arch/arm64/Makefile | 3 +
> arch/arm64/include/asm/brk-imm.h | 1 +
> arch/arm64/include/asm/esr.h | 5 +-
> arch/arm64/include/asm/kvm_arm.h | 6 +-
> arch/arm64/include/asm/kvm_emulate.h | 64 +-
> arch/arm64/include/asm/kvm_host.h | 120 +--
> arch/arm64/include/asm/ptrace.h | 64 +-
> arch/arm64/include/asm/sysreg.h | 22 +-
> arch/arm64/kvm/Kconfig | 4 -
> arch/arm64/kvm/arm.c | 3 +
> arch/arm64/kvm/guest.c | 22 +-
> arch/arm64/kvm/hyp/exception.c | 4 +-
> arch/arm64/kvm/hyp/include/hyp/adjust_pc.h | 4 +-
> arch/arm64/kvm/hyp/include/hyp/switch.h | 4 +-
> arch/arm64/kvm/mmio.c | 2 +
> arch/arm64/tools/sysreg | 51 ++
> arch/loongarch/include/asm/kvm_host.h | 2 +
> arch/loongarch/kvm/Kconfig | 3 -
> arch/mips/include/asm/kvm_host.h | 1 +
> arch/mips/kvm/Kconfig | 2 -
> arch/powerpc/include/asm/kvm_host.h | 10 +
> arch/powerpc/kvm/Kconfig | 5 -
> arch/riscv/include/asm/kvm_host.h | 2 +
> arch/riscv/kvm/Kconfig | 3 -
> arch/s390/Kconfig | 5 +-
> arch/s390/include/arm64/kvm_emulate.h | 130 ++++
> arch/s390/include/arm64/kvm_nested.h | 11 +
> arch/s390/include/arm64/ptrace.h | 11 +
> arch/s390/include/arm64/sysreg.h | 13 +
> arch/s390/include/asm/asm-prototypes.h | 1 +
> arch/s390/include/asm/elf.h | 2 +
> arch/s390/include/asm/io.h | 12 +-
> arch/s390/include/asm/kvm.h | 6 +
> arch/s390/include/asm/kvm_host.h | 4 +
> arch/s390/include/asm/kvm_host_arm64.h | 209 +++++
> arch/s390/include/asm/kvm_host_arm64_types.h | 124 +++
> arch/s390/include/asm/kvm_host_s390.h | 5 +
> arch/s390/include/asm/kvm_host_types.h | 4 +
> arch/s390/include/asm/sae.h | 49 ++
> arch/s390/include/asm/sclp.h | 5 +-
> arch/s390/include/asm/stacktrace.h | 5 +
> arch/s390/include/uapi/Kbuild | 6 +
> arch/s390/kernel/asm-offsets.c | 1 +
> arch/s390/kernel/entry.S | 22 +
> arch/s390/kernel/processor.c | 3 +
> arch/s390/kvm/Kconfig | 27 +-
> arch/s390/kvm/Makefile | 1 +
> arch/s390/kvm/arm64/.gitignore | 2 +
> arch/s390/kvm/arm64/Makefile | 110 +++
> arch/s390/kvm/arm64/Makefile.gen | 28 +
> arch/s390/kvm/arm64/arm.c | 754 +++++++++++++++++++
> arch/s390/kvm/arm64/arm.h | 58 ++
> arch/s390/kvm/arm64/copy-arm64c.awk | 82 ++
> arch/s390/kvm/arm64/guest.c | 135 ++++
> arch/s390/kvm/arm64/handle_exit.c | 161 ++++
> arch/s390/kvm/arm64/handle_exit.h | 9 +
> arch/s390/kvm/arm64/inject_fault.c | 21 +
> arch/s390/kvm/arm64/mmio.c | 15 +
> arch/s390/kvm/arm64/mmu.c | 200 +++++
> arch/s390/kvm/arm64/reset.c | 71 ++
> arch/s390/kvm/arm64/trace.h | 101 +++
> arch/s390/kvm/gmap/faultin.c | 5 +
> arch/s390/kvm/gmap/gmap.c | 4 +
> arch/s390/kvm/gmap/kvm_mmu.c | 6 +-
> arch/s390/kvm/gmap/trace_gmap.h | 17 +-
> arch/s390/kvm/s390/Makefile | 2 +-
> arch/s390/tools/Makefile | 6 +-
> arch/s390/tools/Makefile.arm64h | 55 ++
> arch/s390/tools/copy-arm64h-full.awk | 50 ++
> arch/s390/tools/copy-arm64h.awk | 83 ++
> arch/s390/tools/opcodes.txt | 3 +
> arch/x86/include/asm/kvm_host.h | 3 +
> arch/x86/kvm/Kconfig | 4 -
> drivers/s390/char/sclp_early.c | 1 +
> include/linux/kvm_host.h | 24 +-
> include/trace/events/kvm.h | 8 +-
> virt/kvm/Kconfig | 18 -
> virt/kvm/Makefile.kvm | 9 +-
> virt/kvm/async_pf.c | 5 +-
> virt/kvm/coalesced_mmio.c | 4 +
> virt/kvm/coalesced_mmio.h | 2 +-
> virt/kvm/eventfd.c | 3 +-
> virt/kvm/kvm_main.c | 44 +-
> 84 files changed, 2968 insertions(+), 199 deletions(-)
> create mode 100644 arch/s390/include/arm64/kvm_emulate.h
> create mode 100644 arch/s390/include/arm64/kvm_nested.h
> create mode 100644 arch/s390/include/arm64/ptrace.h
> create mode 100644 arch/s390/include/arm64/sysreg.h
> create mode 100644 arch/s390/include/asm/kvm.h
> create mode 100644 arch/s390/include/asm/kvm_host_arm64.h
> create mode 100644 arch/s390/include/asm/kvm_host_arm64_types.h
> create mode 100644 arch/s390/include/asm/sae.h
> create mode 100644 arch/s390/include/uapi/Kbuild
> create mode 100644 arch/s390/kvm/arm64/.gitignore
> create mode 100644 arch/s390/kvm/arm64/Makefile
> create mode 100644 arch/s390/kvm/arm64/Makefile.gen
> create mode 100644 arch/s390/kvm/arm64/arm.c
> create mode 100644 arch/s390/kvm/arm64/arm.h
> create mode 100644 arch/s390/kvm/arm64/copy-arm64c.awk
> create mode 100644 arch/s390/kvm/arm64/guest.c
> create mode 100644 arch/s390/kvm/arm64/handle_exit.c
> create mode 100644 arch/s390/kvm/arm64/handle_exit.h
> create mode 100644 arch/s390/kvm/arm64/inject_fault.c
> create mode 100644 arch/s390/kvm/arm64/mmio.c
> create mode 100644 arch/s390/kvm/arm64/mmu.c
> create mode 100644 arch/s390/kvm/arm64/reset.c
> create mode 100644 arch/s390/kvm/arm64/trace.h
> create mode 100644 arch/s390/tools/Makefile.arm64h
> create mode 100644 arch/s390/tools/copy-arm64h-full.awk
> create mode 100644 arch/s390/tools/copy-arm64h.awk
>
>
> base-commit: 16096aadaa3d15c11d37bbea750bad0917e8eadf
> --
> 2.53.0
>
prev parent reply other threads:[~2026-10-14 9:24 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-30 17:34 Steffen Eiden
2026-09-30 17:34 ` [PATCH v9 01/24] KVM: Make device name configurable Steffen Eiden
2026-10-06 15:19 ` Hendrik Brueckner
2026-09-30 17:34 ` [PATCH v9 02/24] KVM: Move architecture capability Kconfigs to header defines Steffen Eiden
2026-10-06 16:01 ` Hendrik Brueckner
2026-10-12 17:53 ` Paolo Bonzini
2026-10-13 7:50 ` Steffen Eiden
2026-10-13 12:13 ` [PATCH v10 " Steffen Eiden
2026-10-13 12:20 ` Steffen Eiden
2026-10-14 16:21 ` Paolo Bonzini
2026-09-30 17:34 ` [PATCH v9 03/24] KVM: Replace CONFIG_KVM_MMIO with KVM_NO_MMIO Steffen Eiden
2026-10-06 16:18 ` Hendrik Brueckner
2026-10-12 17:37 ` Paolo Bonzini
2026-09-30 17:34 ` [PATCH v9 04/24] arm64: Use proper include variant Steffen Eiden
2026-09-30 17:34 ` [PATCH v9 05/24] arm64: ptrace: Use constants for compat register numbers Steffen Eiden
2026-09-30 17:34 ` [PATCH v9 06/24] arm64: sysreg: Convert SPSR_ELx to automatic register generation Steffen Eiden
2026-09-30 17:34 ` [PATCH v9 07/24] KVM: arm64: Access elements of vcpu_gp_regs individually Steffen Eiden
2026-09-30 17:34 ` [PATCH v9 08/24] KVM: arm64: Use accessor functions for core regs Steffen Eiden
2026-09-30 17:34 ` [PATCH v9 09/24] arm64: Prepare sharing arm64 headers with s390 Steffen Eiden
2026-09-30 17:34 ` [PATCH v9 10/24] arm64: Share " Steffen Eiden
2026-09-30 17:34 ` [PATCH v9 11/24] KVM: arm64: Share arm64 code " Steffen Eiden
2026-09-30 17:34 ` [PATCH v9 12/24] s390/Kconfig: remove PCI dependency from HAS_IOMEM Steffen Eiden
2026-09-30 17:34 ` [PATCH v9 13/24] KVM: s390: Use dedicated function for migration mode Steffen Eiden
2026-09-30 17:34 ` [PATCH v9 14/24] s390/tools: Use arm64 headers Steffen Eiden
2026-10-01 10:25 ` Hendrik Brueckner
2026-09-30 17:34 ` [PATCH v9 15/24] KVM: s390: Use arm64 code Steffen Eiden
2026-09-30 17:34 ` [PATCH v9 16/24] s390: Introduce Start Arm Execution instruction Steffen Eiden
2026-09-30 17:34 ` [PATCH v9 17/24] KVM: s390: arm64: Introduce host definitions Steffen Eiden
2026-09-30 17:34 ` [PATCH v9 18/24] s390/hwcaps: Report SAE support as hwcap Steffen Eiden
2026-09-30 17:34 ` [PATCH v9 19/24] KVM: s390: Add basic arm64 kvm module Steffen Eiden
2026-09-30 17:34 ` [PATCH v9 20/24] KVM: s390: arm64: Implement required functions Steffen Eiden
2026-09-30 17:34 ` [PATCH v9 21/24] KVM: s390: arm64: Implement vm/vcpu create destroy Steffen Eiden
2026-09-30 17:34 ` [PATCH v9 22/24] KVM: s390: arm64: Implement vCPU IOCTLs Steffen Eiden
2026-09-30 17:34 ` [PATCH v9 23/24] KVM: s390: arm64: Implement basic page fault handler Steffen Eiden
2026-10-01 12:10 ` Arnd Bergmann
2026-10-01 13:35 ` Arnd Bergmann
2026-10-01 14:36 ` Lorenzo Stoakes (ARM)
2026-10-01 15:30 ` Steffen Eiden
2026-10-02 10:18 ` Lorenzo Stoakes (ARM)
2026-10-01 14:03 ` Steffen Eiden
2026-10-01 14:39 ` Lorenzo Stoakes (ARM)
2026-09-30 17:34 ` [PATCH v9 24/24] KVM: s390: arm64: Integrate arm on s390 Steffen Eiden
2026-10-01 11:04 ` (subset) [PATCH v9 00/24] KVM: s390: Introduce arm64 KVM Marc Zyngier
2026-10-01 13:27 ` Steffen Eiden
2026-10-01 13:39 ` Arnd Bergmann
2026-10-02 8:46 ` Arnd Bergmann
2026-10-01 15:12 ` Marc Zyngier
2026-10-02 8:00 ` Steffen Eiden
2026-10-02 9:02 ` Marc Zyngier
2026-10-02 9:17 ` Steffen Eiden
2026-10-14 9:23 ` Steffen Eiden [this message]
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=20261014092343.715112-C-seiden@linux.ibm.com \
--to=seiden@linux.ibm.com \
--cc=Ulrich.Weigand@de.ibm.com \
--cc=agordeev@linux.ibm.com \
--cc=arnd@arndb.de \
--cc=borntraeger@linux.ibm.com \
--cc=brueckner@linux.ibm.com \
--cc=catalin.marinas@arm.com \
--cc=david@kernel.org \
--cc=frankja@linux.ibm.com \
--cc=fritz@linux.ibm.com \
--cc=ggala@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=gra@linux.ibm.com \
--cc=hari55@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=iii@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=joey.gouly@arm.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=maz@kernel.org \
--cc=nrb@linux.ibm.com \
--cc=oss@nina.schoetterlglausch.eu \
--cc=oupton@kernel.org \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.com \
--cc=suzuki.poulose@arm.com \
--cc=svens@linux.ibm.com \
--cc=tabba@google.com \
--cc=will@kernel.org \
--cc=yuzenghui@huawei.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
all inboxes | Powered by JetHome®