[PATCH v2 00/20] KVM: arm64 on s390 System Register Handling
Steffen Eiden
seiden at linux.ibm.com
Mon Aug 31 07:55:15 PDT 2026
Add system register handling for KVM/arm64 on s390. Share KVM/arm64 code,
introduce ARM guest management functions for s390 hosts, and implement host
sysreg & exception handling.
This is a complete rework of v1 using sharing markers and not moving code to a
shared location.
Changes in detail:
arm64:
Refactor the id register fields in arch_vcpu into a dedicated structure such
that it can be reused by s390. Refactor detection of the number of sysregs.
Mark sysreg related code as shared.
s390:
Add s390 instruction support for ARM guest management: easr/sasr for
system register access, QAAF for feature queries, and ptff extensions
for guest time handling.
Implement complete sysreg handling for s390 including feature
sanitisation, register enumeration and access, exception injection,
and finalized page fault handling.
The series builds upon the foundation established in the first series and
requires the first series v7[1] as base. A branch at kernel.org is available [2].
Some in-between steps will trigger compile warnings (mostly unused warnings in
shared code) but of course always compile. After the last commit of this series
will trigger no compiler warnings.
Steffen
[1] https://lore.kernel.org/all/20260831144802.834315-1-seiden@linux.ibm.com/
[2] https://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux.git/log/?h=sae
Steffen Eiden (20):
KVM: arm64: Refactor idreg caching into dedicated structure
KVM: arm64: Extract number of sys_reg_desc into a constant
arm64: sysreg: Define OSLSR_EL1_OSLK_MASK
arm64: Share more arm64 headers with s390
KVM: s390: arm64: Prepare for sharing more arm64 code
KVM: arm64: Prepare sys_regs.c for sharing with s390
KVM: arm64: Share more arm64 code with s390
s390: tools: Allow sharing arm64/kvm headers
s390: Introduce read/write ARM sysreg instructions
s390: Add functions to query arm guest time
KVM: s390: arm64: Query Available Arm features
KVM: s390: arm64: Implement feature sanitisation
KVM: s390: arm64: Implement arm sysreg managing infrastructure
KVM: s390: arm64: Integrate sysreg into the host
KVM: s390: arm64: Use QAAF init save area
KVM: s390: arm64: Implement exception injection
KVM: s390: arm64: Finalize page fault handling
KVM: s390: arm64: Implement SVE for arm guests
KVM: s390: arm64: Promote PTRAUTH capability
s390: Report AEF features to sysfs
arch/arm64/include/asm/cache.h | 3 +
arch/arm64/include/asm/cputype.h | 3 +
arch/arm64/include/asm/kvm_emulate.h | 5 +-
arch/arm64/include/asm/kvm_host.h | 68 +-
arch/arm64/include/asm/spectre.h | 7 +
arch/arm64/include/asm/sysreg.h | 1 +
arch/arm64/kvm/arm.c | 3 +
arch/arm64/kvm/config.c | 2 +-
arch/arm64/kvm/guest.c | 11 +-
arch/arm64/kvm/hyp/nvhe/pkvm.c | 7 +-
arch/arm64/kvm/hyp/nvhe/sys_regs.c | 4 +-
arch/arm64/kvm/sys_regs.c | 164 ++--
arch/arm64/kvm/sys_regs.h | 1 +
arch/s390/include/arm64/kvm_hyp.h | 18 +
arch/s390/include/arm64/kvm_nested.h | 5 +
arch/s390/include/arm64/sys_regs.h | 9 +
arch/s390/include/asm/aef.h | 28 +
arch/s390/include/asm/kvm_host_arm64.h | 237 +++++-
arch/s390/include/asm/kvm_host_arm64_types.h | 111 +++
arch/s390/include/asm/sae-asm.h | 48 ++
arch/s390/include/asm/sae.h | 83 ++
arch/s390/include/asm/timex.h | 49 ++
arch/s390/kernel/Makefile | 2 +-
arch/s390/kernel/aef.c | 187 +++++
arch/s390/kernel/dis.c | 1 +
arch/s390/kvm/arm64/Makefile | 5 +
arch/s390/kvm/arm64/Makefile.gen | 1 +
arch/s390/kvm/arm64/arm.c | 73 +-
arch/s390/kvm/arm64/exception.c | 105 +++
arch/s390/kvm/arm64/feature.c | 190 +++++
arch/s390/kvm/arm64/feature.h | 102 +++
arch/s390/kvm/arm64/guest.c | 222 +++++-
arch/s390/kvm/arm64/handle_exit.c | 1 +
arch/s390/kvm/arm64/inject_fault.c | 73 +-
arch/s390/kvm/arm64/mmu.c | 68 +-
arch/s390/kvm/arm64/qaaf.c | 74 ++
arch/s390/kvm/arm64/qaaf.h | 11 +
arch/s390/kvm/arm64/reset.c | 69 +-
arch/s390/kvm/arm64/spectre.c | 14 +
arch/s390/kvm/arm64/sys_regs.c | 750 +++++++++++++++++++
arch/s390/kvm/arm64/trace.h | 51 ++
arch/s390/tools/Makefile.arm64h | 11 +-
arch/s390/tools/opcodes.txt | 3 +
43 files changed, 2724 insertions(+), 156 deletions(-)
create mode 100644 arch/s390/include/arm64/kvm_hyp.h
create mode 100644 arch/s390/include/arm64/sys_regs.h
create mode 100644 arch/s390/include/asm/aef.h
create mode 100644 arch/s390/include/asm/sae-asm.h
create mode 100644 arch/s390/kernel/aef.c
create mode 100644 arch/s390/kvm/arm64/exception.c
create mode 100644 arch/s390/kvm/arm64/feature.c
create mode 100644 arch/s390/kvm/arm64/feature.h
create mode 100644 arch/s390/kvm/arm64/qaaf.c
create mode 100644 arch/s390/kvm/arm64/qaaf.h
create mode 100644 arch/s390/kvm/arm64/spectre.c
create mode 100644 arch/s390/kvm/arm64/sys_regs.c
base-commit: ab80750cee6e09e0036ac43f257059122a05a71d
--
2.53.0
More information about the linux-arm-kernel
mailing list