From: Steffen Eiden <seiden@linux.ibm.com>
To: kvm@vger.kernel.org, kvmarm@lists.linux.dev,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org
Cc: 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>,
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: [PATCH v2 00/20] KVM: arm64 on s390 System Register Handling
Date: Mon, 31 Aug 2026 16:55:15 +0200 [thread overview]
Message-ID: <20260831145536.913567-1-seiden@linux.ibm.com> (raw)
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
next reply other threads:[~2026-08-31 14:56 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-31 14:55 Steffen Eiden [this message]
2026-08-31 14:55 ` [PATCH v2 01/20] KVM: arm64: Refactor idreg caching into dedicated structure Steffen Eiden
2026-08-31 18:06 ` sashiko-bot
2026-08-31 14:55 ` [PATCH v2 02/20] KVM: arm64: Extract number of sys_reg_desc into a constant Steffen Eiden
2026-08-31 18:08 ` sashiko-bot
2026-08-31 14:55 ` [PATCH v2 03/20] arm64: sysreg: Define OSLSR_EL1_OSLK_MASK Steffen Eiden
2026-08-31 18:18 ` sashiko-bot
2026-08-31 14:55 ` [PATCH v2 04/20] arm64: Share more arm64 headers with s390 Steffen Eiden
2026-08-31 18:31 ` sashiko-bot
2026-08-31 14:55 ` [PATCH v2 05/20] KVM: s390: arm64: Prepare for sharing more arm64 code Steffen Eiden
2026-08-31 18:42 ` sashiko-bot
2026-08-31 14:55 ` [PATCH v2 06/20] KVM: arm64: Prepare sys_regs.c for sharing with s390 Steffen Eiden
2026-08-31 18:45 ` sashiko-bot
2026-08-31 14:55 ` [PATCH v2 07/20] KVM: arm64: Share more arm64 code " Steffen Eiden
2026-08-31 19:01 ` sashiko-bot
2026-08-31 14:55 ` [PATCH v2 08/20] s390: tools: Allow sharing arm64/kvm headers Steffen Eiden
2026-08-31 19:03 ` sashiko-bot
2026-08-31 14:55 ` [PATCH v2 09/20] s390: Introduce read/write ARM sysreg instructions Steffen Eiden
2026-08-31 19:16 ` sashiko-bot
2026-08-31 14:55 ` [PATCH v2 10/20] s390: Add functions to query arm guest time Steffen Eiden
2026-08-31 19:24 ` sashiko-bot
2026-08-31 14:55 ` [PATCH v2 11/20] KVM: s390: arm64: Query Available Arm features Steffen Eiden
2026-08-31 19:46 ` sashiko-bot
2026-08-31 14:55 ` [PATCH v2 12/20] KVM: s390: arm64: Implement feature sanitisation Steffen Eiden
2026-08-31 14:55 ` [PATCH v2 13/20] KVM: s390: arm64: Implement arm sysreg managing infrastructure Steffen Eiden
2026-08-31 14:55 ` [PATCH v2 14/20] KVM: s390: arm64: Integrate sysreg into the host Steffen Eiden
2026-08-31 14:55 ` [PATCH v2 15/20] KVM: s390: arm64: Use QAAF init save area Steffen Eiden
2026-08-31 14:55 ` [PATCH v2 16/20] KVM: s390: arm64: Implement exception injection Steffen Eiden
2026-08-31 14:55 ` [PATCH v2 17/20] KVM: s390: arm64: Finalize page fault handling Steffen Eiden
2026-08-31 14:55 ` [PATCH v2 18/20] KVM: s390: arm64: Implement SVE for arm guests Steffen Eiden
2026-08-31 14:55 ` [PATCH v2 19/20] KVM: s390: arm64: Promote PTRAUTH capability Steffen Eiden
2026-08-31 14:55 ` [PATCH v2 20/20] s390: Report AEF features to sysfs 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=20260831145536.913567-1-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=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