Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
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



             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