From: Eric Auger <eric.auger@redhat.com>
To: eric.auger.pro@gmail.com, eric.auger@redhat.com,
qemu-devel@nongnu.org, qemu-arm@nongnu.org,
kvmarm@lists.linux.dev, peter.maydell@linaro.org,
richard.henderson@linaro.org, cohuck@redhat.com,
sebott@redhat.com, skolothumtho@nvidia.com, philmd@linaro.org
Cc: maz@kernel.org, oliver.upton@linux.dev, pbonzini@redhat.com,
armbru@redhat.com, berrange@redhat.com, abologna@redhat.com,
jdenemar@redhat.com
Subject: [PATCH v4 00/17] kvm/arm: Introduce a customizable aarch64 KVM host model
Date: Sun, 3 May 2026 09:33:20 +0200 [thread overview]
Message-ID: <20260503073541.790215-1-eric.auger@redhat.com> (raw)
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
next reply other threads:[~2026-05-03 7:36 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-03 7:33 Eric Auger [this message]
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
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=20260503073541.790215-1-eric.auger@redhat.com \
--to=eric.auger@redhat.com \
--cc=abologna@redhat.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=cohuck@redhat.com \
--cc=eric.auger.pro@gmail.com \
--cc=jdenemar@redhat.com \
--cc=kvmarm@lists.linux.dev \
--cc=maz@kernel.org \
--cc=oliver.upton@linux.dev \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=sebott@redhat.com \
--cc=skolothumtho@nvidia.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 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.