All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/17] kvm/arm: Introduce a customizable aarch64 KVM host model
@ 2026-05-03  7:33 Eric Auger
  2026-05-03  7:33 ` [PATCH v4 01/17] scripts: introduce scripts/update-aarch64-cpu-sysregs-header.py Eric Auger
                   ` (17 more replies)
  0 siblings, 18 replies; 39+ messages in thread
From: Eric Auger @ 2026-05-03  7:33 UTC (permalink / raw)
  To: eric.auger.pro, eric.auger, qemu-devel, qemu-arm, kvmarm,
	peter.maydell, richard.henderson, cohuck, sebott, skolothumtho,
	philmd
  Cc: maz, oliver.upton, pbonzini, armbru, berrange, abologna, jdenemar

This series enhances the current host KVM model with capability to
set writable ID reg fields.

Since v6.7 kernel, KVM/arm allows the userspace to overwrite the values
of a subset of ID regs. The list of writable fields continues to grow.
The feature ID range is defined as the AArch64 System register space
with op0==3, op1=={0, 1, 3}, CRn==0, CRm=={0-7}, op2=={0-7}.

The end goal is to get more flexibility when migrating guests
between different host hardware.

QEMU retrieves the writable ID fields from KVM UAPI [1] and
match them against a generated description of ID regs and their
named fields that stem from AARCHMRS Registers.json file.
Current description is based on latest 2026-03 edition.
The content of the generated files was compared against kernel
linux/arch/arm64/tools/sysreg file [3] . It is not straightforward
to have unit tests for python scripts as there are many cases for
field extraction.

For each writable named field a uint64 property is created
following the "SYSREG_<REG>_<FIELD>" naming convention. REG and
FIELD names are those described in ARM ARM Reference manual.

The list of SYSREG_ID properties can be retrieved through the qmp
monitor using query-cpu-model-expansion [2].

Connie & Eric

This series can be found at:
https://github.com/eauger/qemu/tree/arm-cpu-model-v4

References:

[1]
KVM_CAP_ARM_SUPPORTED_REG_MASK_RANGES
KVM_ARM_GET_REG_WRITABLE_MASKS
Documentation/virt/kvm/api.rst

[2]
qemu-system-aarch64 -qmp unix:/home/augere/TEST/QEMU/qmp-sock,server,nowait -M virt --enable-kvm -cpu custom
sudo build/run qmp-shell /home/augere/TEST/QEMU/qmp-sock
Welcome to the QMP low-level shell!
Connected to QEMU 11.0.50
(QEMU) query-cpu-model-expansion type=full model={"name":"host"}

[3]
linux/arch/arm64/tools/sysreg and gen-sysreg.awk
./tools/include/generated/asm/sysreg-defs.h


Cornelia Huck (4):
  target/arm/kvm: Introduce kvm_get_writable_id_regs
  arm/cpu: accessors for writable id registers
  arm-qmp-cmds: introspection for ID register props
  arm/cpu-features: document ID reg properties

Eric Auger (13):
  scripts: introduce scripts/update-aarch64-cpu-sysregs-header.py
  target/arm/cpu-sysregs.h.inc: Sort by name alphabetical order
  target/arm/cpu-sysregs.h.inc: Update with automatic generation
  arm/cpu: Add infra to handle generated ID register definitions
  scripts: Introduce scripts/aarch64_sysreg_helpers module
  scripts: Introduce scripts/update-aarch64-cpu-sysreg-properties.py
  target/arm/cpu-sysreg-properties.c: Generate code with new script
  arm/kvm: Allow reading all the writable ID registers
  arm/kvm: write back modified ID regs to KVM
  target/arm/kvm: Introduce kvm_arm_expose_idreg_properties
  target/arm/kvm: Special case REVIDR_EL1 and AIDR_EL1
  target/arm/kvm: Special case ID_AA64ISAR0_EL1 RES0 [24, 27] bits
  arm/cpu: Expose writable ID reg field properties on the kvm host vcpu
    model

 docs/system/arm/cpu-features.rst              | 104 ++-
 scripts/aarch64_sysreg_helpers.py             | 109 +++
 .../update-aarch64-cpu-sysreg-properties.py   | 169 +++++
 scripts/update-aarch64-cpu-sysregs-header.py  |  51 ++
 target/arm/arm-qmp-cmds.c                     |  19 +
 target/arm/cpu-idregs.h                       |  59 ++
 target/arm/cpu-sysreg-properties.c            | 673 ++++++++++++++++++
 target/arm/cpu-sysregs.h.inc                  |  57 +-
 target/arm/cpu.c                              |  12 +
 target/arm/cpu.h                              |  36 +
 target/arm/cpu64.c                            |  26 +-
 target/arm/kvm-stub.c                         |   3 +-
 target/arm/kvm.c                              | 313 +++++++-
 target/arm/kvm_arm.h                          |  19 +-
 target/arm/meson.build                        |   3 +-
 target/arm/trace-events                       |   6 +
 16 files changed, 1622 insertions(+), 37 deletions(-)
 create mode 100644 scripts/aarch64_sysreg_helpers.py
 create mode 100644 scripts/update-aarch64-cpu-sysreg-properties.py
 create mode 100755 scripts/update-aarch64-cpu-sysregs-header.py
 create mode 100644 target/arm/cpu-idregs.h
 create mode 100644 target/arm/cpu-sysreg-properties.c

-- 
2.53.0


^ permalink raw reply	[flat|nested] 39+ messages in thread

end of thread, other threads:[~2026-05-15 16:41 UTC | newest]

Thread overview: 39+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-03  7:33 [PATCH v4 00/17] kvm/arm: Introduce a customizable aarch64 KVM host model Eric Auger
2026-05-03  7:33 ` [PATCH v4 01/17] scripts: introduce scripts/update-aarch64-cpu-sysregs-header.py Eric Auger
2026-05-03  7:33 ` [PATCH v4 02/17] target/arm/cpu-sysregs.h.inc: Sort by name alphabetical order Eric Auger
2026-05-06 16:10   ` Shameer Kolothum Thodi
2026-05-12  6:24     ` Eric Auger
2026-05-03  7:33 ` [PATCH v4 03/17] target/arm/cpu-sysregs.h.inc: Update with automatic generation Eric Auger
2026-05-07  8:45   ` Shameer Kolothum Thodi
2026-05-12  6:38     ` Eric Auger
2026-05-12  9:41       ` Shameer Kolothum Thodi
2026-05-12 14:11         ` Eric Auger
2026-05-03  7:33 ` [PATCH v4 04/17] arm/cpu: Add infra to handle generated ID register definitions Eric Auger
2026-05-07  8:58   ` Shameer Kolothum Thodi
2026-05-12 14:52     ` Eric Auger
2026-05-03  7:33 ` [PATCH v4 05/17] scripts: Introduce scripts/aarch64_sysreg_helpers module Eric Auger
2026-05-03  7:33 ` [PATCH v4 06/17] scripts: Introduce scripts/update-aarch64-cpu-sysreg-properties.py Eric Auger
2026-05-03  7:33 ` [PATCH v4 07/17] target/arm/cpu-sysreg-properties.c: Generate code with new script Eric Auger
2026-05-03  7:33 ` [PATCH v4 08/17] target/arm/kvm: Introduce kvm_get_writable_id_regs Eric Auger
2026-05-07 10:07   ` Shameer Kolothum Thodi
2026-05-12 15:12     ` Eric Auger
2026-05-03  7:33 ` [PATCH v4 09/17] arm/cpu: accessors for writable id registers Eric Auger
2026-05-07 10:32   ` Shameer Kolothum Thodi
2026-05-12 15:33     ` Eric Auger
2026-05-03  7:33 ` [PATCH v4 10/17] arm/kvm: Allow reading all the writable ID registers Eric Auger
2026-05-07 11:50   ` Shameer Kolothum Thodi
2026-05-03  7:33 ` [PATCH v4 11/17] arm/kvm: write back modified ID regs to KVM Eric Auger
2026-05-07 18:53   ` Shameer Kolothum Thodi
2026-05-08 13:03   ` Shameer Kolothum Thodi
2026-05-03  7:33 ` [PATCH v4 12/17] target/arm/kvm: Introduce kvm_arm_expose_idreg_properties Eric Auger
2026-05-07 19:10   ` Shameer Kolothum Thodi
2026-05-03  7:33 ` [PATCH v4 13/17] target/arm/kvm: Special case REVIDR_EL1 and AIDR_EL1 Eric Auger
2026-05-03  7:33 ` [PATCH v4 14/17] target/arm/kvm: Special case ID_AA64ISAR0_EL1 RES0 [24, 27] bits Eric Auger
2026-05-03  7:33 ` [PATCH v4 15/17] arm/cpu: Expose writable ID reg field properties on the kvm host vcpu model Eric Auger
2026-05-07 19:22   ` Shameer Kolothum Thodi
2026-05-03  7:33 ` [PATCH v4 16/17] arm-qmp-cmds: introspection for ID register props Eric Auger
2026-05-03  7:33 ` [PATCH v4 17/17] arm/cpu-features: document ID reg properties Eric Auger
2026-05-07 19:44   ` Shameer Kolothum Thodi
2026-05-15  8:31 ` [PATCH v4 00/17] kvm/arm: Introduce a customizable aarch64 KVM host model Peter Maydell
2026-05-15  9:04   ` Marc Zyngier
2026-05-15 16:41     ` Eric Auger

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.