From: Cornelia Huck <cohuck@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, alex.bennee@linaro.org,
maz@kernel.org, oliver.upton@linux.dev, sebott@redhat.com,
shameerali.kolothum.thodi@huawei.com, armbru@redhat.com,
berrange@redhat.com, abologna@redhat.com, jdenemar@redhat.com,
agraf@csgraf.de
Cc: shahuang@redhat.com, mark.rutland@arm.com, philmd@linaro.org,
pbonzini@redhat.com, Cornelia Huck <cohuck@redhat.com>
Subject: [PATCH v2 00/14] arm: rework id register storage
Date: Wed, 5 Mar 2025 17:38:05 +0100 [thread overview]
Message-ID: <20250305163819.2477553-1-cohuck@redhat.com> (raw)
[Oh, it's been about a month since I posted the last version of this :/
Unfortunately, life happened. I still do plan to post a rebase of the
cpu model patches on top of this.]
Original cover letter below.
Changed from v1:
- Noticed that we missed the hvf code. Converted, compiled, but not tested
as I'm lacking an environment for testing.
- Hopefully incorporated most of the suggested changes -- if I missed
something, it was unintentional unless mentioned below.
- fixed repeated inclusion of definitions
- hopefully made macros more robust
- removed distinction between reading 32/64 values, which was mostly
adding churn for little value
- postponed generating property definitions to the cpu model patches,
where they are actually used
- juggled hunks and moved them to the right patches
- fixed some typos
- rebased to a more recent code base
NOT changed from v1:
- definitions are still generated from the Linux sysregs file
- I still think updating the generated files on demand (so that we can
double check the result) is the right thing to do
- I'm open to changing the source of the definitions from the sysregs
file to the JSON definitions published by Arm; however, I first wanted
to get the code using it right -- we can switch out the code generating
the file to use a different source easily later on, and I'd also like
to steal parts of the script from Linux once integrated (which I think
hasn't happened yet?)
Also available at
https://gitlab.com/cohuck/qemu/-/commits/arm-rework-idreg-storage-v2
<v1 cover letter>
[Note: I've kept the cc list from the last round of cpu model patches;
so if you're confused as to why you're cc:ed here, take it as a
heads-up that a new cpu model series will come along soon]
This patch series contains patches extracted from the larger cpu model
series (RFC v2 last posted at
https://lore.kernel.org/qemu-devel/20241206112213.88394-1-cohuck@redhat.com/)
and aims at providing a base upon which we can continue with building
support for cpu models, but which is hopefully already an improvement
on its own.
Main changes from the patches in that series include:
- post-pone the changes to handle KVM writable ID registers for cpu models
(I have a series including that on top of this one)
- change how we store the list of ID registers, and access them
basically, use an enum for indexing, and an enum doing encodings in a
pattern similar to cpregs
- move some hunks to different patches
- update the scripts to generate the register descriptions, and run
them against a recent Linux sysregs file
What I've kept:
- generating the register descriptions from the Linux sysregs file
I think that file is still our best bet to generate the descriptions
easily, and updating the definitions is a manual step that can be checked
for unintended changes
- most of the hard work that Eric had been doing; all new bugs in there
are my own :)
</v1 cover letter>
Cornelia Huck (2):
arm/kvm: add accessors for storing host features into idregs
arm/cpu: Add generated files
Eric Auger (12):
arm/cpu: Add sysreg definitions in cpu-sysregs.h
arm/cpu: Store aa64isar0/aa64zfr0 into the idregs arrays
arm/cpu: Store aa64isar1/2 into the idregs array
arm/cpu: Store aa64pfr0/1 into the idregs array
arm/cpu: Store aa64mmfr0-3 into the idregs array
arm/cpu: Store aa64dfr0/1 into the idregs array
arm/cpu: Store aa64smfr0 into the idregs array
arm/cpu: Store id_isar0-7 into the idregs array
arm/cpu: Store id_pfr0/1/2 into the idregs array
arm/cpu: Store id_dfr0/1 into the idregs array
arm/cpu: Store id_mmfr0-5 into the idregs array
arm/cpu: Add sysreg generation scripts
hw/intc/armv7m_nvic.c | 27 +-
scripts/gen-cpu-sysregs-header.awk | 70 ++++
scripts/update-aarch64-sysreg-code.sh | 35 ++
target/arm/cpu-features.h | 317 +++++++++---------
target/arm/cpu-sysregs.h | 22 ++
target/arm/cpu-sysregs.h.inc | 167 ++++++++++
target/arm/cpu.c | 111 +++----
target/arm/cpu.h | 80 +++--
target/arm/cpu64.c | 131 ++++----
target/arm/helper.c | 68 ++--
target/arm/hvf/hvf.c | 36 +-
target/arm/internals.h | 6 +-
target/arm/kvm.c | 119 +++----
target/arm/ptw.c | 6 +-
target/arm/tcg/cpu-v7m.c | 174 +++++-----
target/arm/tcg/cpu32.c | 320 +++++++++---------
target/arm/tcg/cpu64.c | 460 +++++++++++++-------------
17 files changed, 1230 insertions(+), 919 deletions(-)
create mode 100755 scripts/gen-cpu-sysregs-header.awk
create mode 100755 scripts/update-aarch64-sysreg-code.sh
create mode 100644 target/arm/cpu-sysregs.h
create mode 100644 target/arm/cpu-sysregs.h.inc
--
2.48.1
next reply other threads:[~2025-03-05 16:40 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-05 16:38 Cornelia Huck [this message]
2025-03-05 16:38 ` [PATCH v2 01/14] arm/cpu: Add sysreg definitions in cpu-sysregs.h Cornelia Huck
2025-03-06 1:14 ` Richard Henderson
2025-03-07 15:32 ` Cornelia Huck
2025-03-05 16:38 ` [PATCH v2 02/14] arm/kvm: add accessors for storing host features into idregs Cornelia Huck
2025-03-06 1:15 ` Richard Henderson
2025-03-07 15:35 ` Cornelia Huck
2025-03-05 16:38 ` [PATCH v2 03/14] arm/cpu: Store aa64isar0/aa64zfr0 into the idregs arrays Cornelia Huck
2025-03-05 16:38 ` [PATCH v2 04/14] arm/cpu: Store aa64isar1/2 into the idregs array Cornelia Huck
2025-03-05 16:38 ` [PATCH v2 05/14] arm/cpu: Store aa64pfr0/1 " Cornelia Huck
2025-03-05 16:38 ` [PATCH v2 06/14] arm/cpu: Store aa64mmfr0-3 " Cornelia Huck
2025-03-05 16:38 ` [PATCH v2 07/14] arm/cpu: Store aa64dfr0/1 " Cornelia Huck
2025-03-05 16:38 ` [PATCH v2 08/14] arm/cpu: Store aa64smfr0 " Cornelia Huck
2025-03-05 16:38 ` [PATCH v2 09/14] arm/cpu: Store id_isar0-7 " Cornelia Huck
2025-03-05 16:38 ` [PATCH v2 10/14] arm/cpu: Store id_pfr0/1/2 " Cornelia Huck
2025-03-05 16:38 ` [PATCH v2 11/14] arm/cpu: Store id_dfr0/1 " Cornelia Huck
2025-03-05 16:38 ` [PATCH v2 12/14] arm/cpu: Store id_mmfr0-5 " Cornelia Huck
2025-03-05 16:38 ` [PATCH v2 13/14] arm/cpu: Add sysreg generation scripts Cornelia Huck
2025-03-05 16:38 ` [PATCH v2 14/14] arm/cpu: Add generated files Cornelia Huck
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=20250305163819.2477553-1-cohuck@redhat.com \
--to=cohuck@redhat.com \
--cc=abologna@redhat.com \
--cc=agraf@csgraf.de \
--cc=alex.bennee@linaro.org \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=eric.auger.pro@gmail.com \
--cc=eric.auger@redhat.com \
--cc=jdenemar@redhat.com \
--cc=kvmarm@lists.linux.dev \
--cc=mark.rutland@arm.com \
--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=shahuang@redhat.com \
--cc=shameerali.kolothum.thodi@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;
as well as URLs for NNTP newsgroup(s).