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>,
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 v1 00/26] KVM: arm64 on s390 System Register Handling
Date: Fri, 29 May 2026 17:55:33 +0200 [thread overview]
Message-ID: <20260529155601.2927240-1-seiden@linux.ibm.com> (raw)
Add system register handling for KVM/arm64 on s390. Restructure and share
KVM/arm64 code, introduce ARM guest management functions for s390 hosts,
and implement host sysreg & exception handling.
Changes in detail:
arm64:
Refactor arm64 feature detection and ID register handling to make it
generic and reusable across architectures.
Restructure ID register storage and core register handling. Refactor core
registers to use functions instead of direct memory access.
Move arm64-specific definitions (CPU types, cache, KVM features, ID
registers, system registers) to shared locations for reuse by other
architectures.
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 v3[1] as base.
Steffen
[1] https://lore.kernel.org/lkml/20260529155050.2902245-1-seiden@linux.ibm.com/
Andreas Grapentin (1):
KVM: arm64: Fix set_oslsr_el1 to write to OSLAR_EL1
Steffen Eiden (25):
KVM: arm64: Extract some feature related changes to kvm_feature.h
KVM: arm64: Remove __expand_field_sign_(un)signed
KVM: arm64: Generalize get_idreg_field_*()
KVM: arm64: Generalize kvm_cmp_feat_*()
KVM: arm64: Generalize kvm_has_feat_*
KVM: arm64: Remove get_idreg_field_*() and kvm_cmp_feat_*()
KVM: arm64: Remove kvm_has_feat_range
KVM: arm64: Split up feature sysreg sanitisation
KVM: arm64: Refactor idreg caching into dedicated structure
KVM: arm64: Move definitions from sys_regs.c to sys_regs.h
KVM: arm64: Add PVM_ prefix to avoid name collisions
s390: Introduce read/write ARM sysreg instructions
s390: Introduce Query Available Arm features
s390: Add functions to query arm guest time
KVM: s390: arm64: Add sysreg related functions and definitions
arm64: Extract cputype definitions.
arm64: Extract cache definitions
KVM: arm64: Share KVM feature detection macros
KVM: arm64: Share ID reg handling
KVM: arm64: Share sys-reg handling
KVM: arm64: Refactor core reg handling
KVM: s390: arm64: Implement feature sanitisation
KVM: s390: arm64: Implement sysreg handling
KVM: s390: arm64: Implement exception injection
KVM: s390: arm64: Finalize page fault handling
arch/arm64/include/asm/cache.h | 19 +-
arch/arm64/include/asm/cputype.h | 246 +---
arch/arm64/include/asm/kvm_emulate.h | 1 +
arch/arm64/include/asm/kvm_feature.h | 27 +
arch/arm64/include/asm/kvm_host.h | 137 +-
arch/arm64/include/asm/kvm_nested.h | 1 +
arch/arm64/kvm/arm.c | 2 +-
arch/arm64/kvm/at.c | 1 +
arch/arm64/kvm/config.c | 3 +-
arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h | 1 +
arch/arm64/kvm/hyp/nvhe/hyp-main.c | 1 +
arch/arm64/kvm/hyp/nvhe/pkvm.c | 7 +-
arch/arm64/kvm/hyp/nvhe/sys_regs.c | 55 +-
arch/arm64/kvm/nested.c | 2 +-
arch/arm64/kvm/sys_regs.c | 1307 +----------------
arch/arm64/kvm/sys_regs.h | 276 ----
arch/arm64/kvm/trace_handle_exit.h | 36 +-
arch/arm64/kvm/vgic-sys-reg-v3.c | 2 +-
arch/arm64/kvm/vgic/vgic-init.c | 1 +
arch/arm64/kvm/vgic/vgic.h | 1 +
arch/s390/include/asm/kvm_emulate.h | 34 +
arch/s390/include/asm/kvm_feature.h | 111 ++
arch/s390/include/asm/kvm_host_arm64.h | 168 ++-
arch/s390/include/asm/kvm_host_arm64_types.h | 97 ++
arch/s390/include/asm/kvm_nested.h | 5 +
arch/s390/include/asm/sae-asm.h | 48 +
arch/s390/include/asm/sae.h | 86 ++
arch/s390/include/asm/timex.h | 49 +
arch/s390/kernel/dis.c | 1 +
arch/s390/kernel/time.c | 1 +
arch/s390/kvm/arm64/Makefile | 3 +
arch/s390/kvm/arm64/arm.c | 44 +-
arch/s390/kvm/arm64/exception.c | 105 ++
arch/s390/kvm/arm64/feature.c | 170 +++
arch/s390/kvm/arm64/guest.c | 20 +-
arch/s390/kvm/arm64/handle_exit.c | 1 +
arch/s390/kvm/arm64/inject_fault.c | 72 +-
arch/s390/kvm/arm64/mmu.c | 62 +-
arch/s390/kvm/arm64/reset.c | 5 +
arch/s390/kvm/arm64/sys_regs.c | 769 ++++++++++
arch/s390/kvm/arm64/trace.h | 33 +
arch/s390/tools/opcodes.txt | 3 +
include/arch/arm64/asm/cache-defs.h | 22 +
.../arch/arm64/asm/cputype-defs.h | 92 +-
include/arch/arm64/asm/sysreg-defs.h | 9 +
include/kvm/arm64/kvm_feature.h | 68 +
include/kvm/arm64/kvm_host.h | 52 +
include/kvm/arm64/sys_regs.h | 548 +++++++
virt/kvm/arm64/Makefile.kvm | 1 +
virt/kvm/arm64/guest.c | 100 +-
virt/kvm/arm64/mmio.c | 1 +
virt/kvm/arm64/sys_regs.c | 1039 +++++++++++++
virt/kvm/arm64/trace.h | 34 +
53 files changed, 3838 insertions(+), 2141 deletions(-)
create mode 100644 arch/arm64/include/asm/kvm_feature.h
delete mode 100644 arch/arm64/kvm/sys_regs.h
create mode 100644 arch/s390/include/asm/kvm_feature.h
create mode 100644 arch/s390/include/asm/sae-asm.h
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/sys_regs.c
create mode 100644 arch/s390/kvm/arm64/trace.h
create mode 100644 include/arch/arm64/asm/cache-defs.h
copy arch/arm64/include/asm/cputype.h => include/arch/arm64/asm/cputype-defs.h (85%)
create mode 100644 include/kvm/arm64/kvm_feature.h
create mode 100644 include/kvm/arm64/sys_regs.h
create mode 100644 virt/kvm/arm64/sys_regs.c
base-commit: 4095afb932d1a98a6fcb3f4f490964949d0de338
--
2.53.0
next reply other threads:[~2026-05-29 15:57 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-29 15:55 Steffen Eiden [this message]
2026-05-29 15:55 ` [PATCH v1 01/26] KVM: arm64: Extract some feature related changes to kvm_feature.h Steffen Eiden
2026-05-29 15:55 ` [PATCH v1 02/26] KVM: arm64: Remove __expand_field_sign_(un)signed Steffen Eiden
2026-05-29 15:55 ` [PATCH v1 03/26] KVM: arm64: Generalize get_idreg_field_*() Steffen Eiden
2026-05-29 15:55 ` [PATCH v1 04/26] KVM: arm64: Generalize kvm_cmp_feat_*() Steffen Eiden
2026-05-29 15:55 ` [PATCH v1 05/26] KVM: arm64: Generalize kvm_has_feat_* Steffen Eiden
2026-05-29 15:55 ` [PATCH v1 06/26] KVM: arm64: Remove get_idreg_field_*() and kvm_cmp_feat_*() Steffen Eiden
2026-05-29 15:55 ` [PATCH v1 07/26] KVM: arm64: Remove kvm_has_feat_range Steffen Eiden
2026-05-29 15:55 ` [PATCH v1 08/26] KVM: arm64: Split up feature sysreg sanitisation Steffen Eiden
2026-05-29 15:55 ` [PATCH v1 09/26] KVM: arm64: Refactor idreg caching into dedicated structure Steffen Eiden
2026-06-01 22:28 ` Oliver Upton
2026-05-29 15:55 ` [PATCH v1 10/26] KVM: arm64: Fix set_oslsr_el1 to write to OSLAR_EL1 Steffen Eiden
2026-06-01 22:21 ` Oliver Upton
2026-05-29 15:55 ` [PATCH v1 11/26] KVM: arm64: Move definitions from sys_regs.c to sys_regs.h Steffen Eiden
2026-05-29 15:55 ` [PATCH v1 12/26] KVM: arm64: Add PVM_ prefix to avoid name collisions Steffen Eiden
2026-06-01 22:23 ` Oliver Upton
2026-05-29 15:55 ` [PATCH v1 13/26] s390: Introduce read/write ARM sysreg instructions Steffen Eiden
2026-05-29 15:55 ` [PATCH v1 14/26] s390: Introduce Query Available Arm features Steffen Eiden
2026-05-29 15:55 ` [PATCH v1 15/26] s390: Add functions to query arm guest time Steffen Eiden
2026-06-01 22:25 ` Oliver Upton
2026-05-29 15:55 ` [PATCH v1 16/26] KVM: s390: arm64: Add sysreg related functions and definitions Steffen Eiden
2026-05-29 15:55 ` [PATCH v1 17/26] arm64: Extract cputype definitions Steffen Eiden
2026-05-29 15:55 ` [PATCH v1 18/26] arm64: Extract cache definitions Steffen Eiden
2026-05-29 15:55 ` [PATCH v1 19/26] KVM: arm64: Share KVM feature detection macros Steffen Eiden
2026-05-29 15:55 ` [PATCH v1 20/26] KVM: arm64: Share ID reg handling Steffen Eiden
2026-05-29 15:55 ` [PATCH v1 22/26] KVM: arm64: Refactor core " Steffen Eiden
2026-05-29 15:55 ` [PATCH v1 23/26] KVM: s390: arm64: Implement feature sanitisation Steffen Eiden
2026-05-29 15:55 ` [PATCH v1 24/26] KVM: s390: arm64: Implement sysreg handling Steffen Eiden
2026-05-29 15:55 ` [PATCH v1 25/26] KVM: s390: arm64: Implement exception injection Steffen Eiden
2026-05-29 15:55 ` [PATCH v1 26/26] KVM: s390: arm64: Finalize page fault handling Steffen Eiden
2026-06-01 15:52 ` [PATCH v1 00/26] KVM: arm64 on s390 System Register Handling Claudio Imbrenda
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=20260529155601.2927240-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=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