From: Andrew Jones <drjones@redhat.com>
To: qemu-devel@nongnu.org, qemu-arm@nongnu.org
Cc: peter.maydell@linaro.org, richard.henderson@linaro.org,
armbru@redhat.com, eric.auger@redhat.com, imammedo@redhat.com,
alex.bennee@linaro.org, Dave.Martin@arm.com
Subject: [PATCH v4 0/9] target/arm/kvm: enable SVE in guests
Date: Tue, 24 Sep 2019 13:30:56 +0200 [thread overview]
Message-ID: <20190924113105.19076-1-drjones@redhat.com> (raw)
Since Linux kernel v5.2-rc1 KVM has support for enabling SVE in guests.
This series provides the QEMU bits for that enablement. First, we
select existing CPU properties representing features we want to
advertise in addition to the SVE vector lengths and prepare
them for a qmp query. Then we introduce the qmp query, applying
it immediately to those selected features. We also document ARM CPU
features at this time. We next add a qtest for the selected CPU
features that uses the qmp query for its tests - and we continue to
add tests as we add CPU features with the following patches. So then,
once we have the support we need for CPU feature querying and testing,
we add our first SVE CPU feature property, 'sve', which just allows
SVE to be completely enabled/disabled. Following that feature property,
we add all 16 vector length properties along with the input validation
they need and tests to prove the validation works. At this point the
SVE features are still only for TCG, so we provide some patches to
prepare for KVM and then a patch that allows the 'max' CPU type to
enable SVE with KVM, but at first without vector length properties.
After a bit more preparation we add the SVE vector length properties
to the KVM-enabled 'max' CPU type along with the additional input
validation and tests that that needs. Finally we allow the 'host'
CPU type to also enjoy these properties by simply sharing them with it.
v4:
- Integrated Richard Henderson's rework for the sve property
validation, in order to do all validating at finalize time
and save several lines of code.
- Fixed 'host' cpu SVE default. It was still off by default.
- Cleaned up #ifdef's for sve_bswap64()
- Removed redundant KVM_CAP_ARM_SVE extension check in
kvm_arm_sve_get_vls()
- Improved the KVM SVE qtest
- Renamed sve<vl-bits> to sve<N> everywhere
- Renamed power-of-2 to power-of-two everywhere
- Picked up some more tags from Richard
Thanks!
drew
Andrew Jones (9):
target/arm/monitor: Introduce qmp_query_cpu_model_expansion
tests: arm: Introduce cpu feature tests
target/arm: Allow SVE to be disabled via a CPU property
target/arm/cpu64: max cpu: Introduce sve<N> properties
target/arm/kvm64: Add kvm_arch_get/put_sve
target/arm/kvm64: max cpu: Enable SVE when available
target/arm/kvm: scratch vcpu: Preserve input kvm_vcpu_init features
target/arm/cpu64: max cpu: Support sve properties with KVM
target/arm/kvm: host cpu: Add support for sve<N> properties
docs/arm-cpu-features.rst | 301 +++++++++++++++++++++
qapi/machine-target.json | 6 +-
target/arm/cpu.c | 25 +-
target/arm/cpu.h | 21 ++
target/arm/cpu64.c | 341 +++++++++++++++++++++++-
target/arm/helper.c | 13 +-
target/arm/kvm.c | 25 +-
target/arm/kvm32.c | 6 +-
target/arm/kvm64.c | 277 +++++++++++++++++++-
target/arm/kvm_arm.h | 39 +++
target/arm/monitor.c | 157 +++++++++++
tests/Makefile.include | 5 +-
tests/arm-cpu-features.c | 537 ++++++++++++++++++++++++++++++++++++++
13 files changed, 1718 insertions(+), 35 deletions(-)
create mode 100644 docs/arm-cpu-features.rst
create mode 100644 tests/arm-cpu-features.c
--
2.20.1
next reply other threads:[~2019-09-24 11:39 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-24 11:30 Andrew Jones [this message]
2019-09-24 11:30 ` [PATCH v4 1/9] target/arm/monitor: Introduce qmp_query_cpu_model_expansion Andrew Jones
2019-09-24 15:06 ` Auger Eric
2019-09-24 11:30 ` [PATCH v4 2/9] tests: arm: Introduce cpu feature tests Andrew Jones
2019-09-24 11:30 ` [PATCH v4 3/9] target/arm: Allow SVE to be disabled via a CPU property Andrew Jones
2019-09-24 15:06 ` Auger Eric
2019-09-24 11:31 ` [PATCH v4 4/9] target/arm/cpu64: max cpu: Introduce sve<N> properties Andrew Jones
2019-09-24 13:55 ` Andrew Jones
2019-09-25 13:53 ` Auger Eric
2019-09-26 8:21 ` Andrew Jones
2019-09-26 9:34 ` Auger Eric
2019-09-26 11:14 ` Andrew Jones
2019-09-26 19:07 ` Richard Henderson
2019-09-26 23:50 ` Alex Bennée
2019-09-27 6:51 ` Andrew Jones
2019-09-27 6:45 ` Andrew Jones
2019-09-24 11:31 ` [PATCH v4 5/9] target/arm/kvm64: Add kvm_arch_get/put_sve Andrew Jones
2019-09-25 13:58 ` Auger Eric
2019-09-27 13:00 ` Andrew Jones
2019-10-01 6:53 ` Andrew Jones
2019-09-24 11:31 ` [PATCH v4 6/9] target/arm/kvm64: max cpu: Enable SVE when available Andrew Jones
2019-09-26 6:53 ` Auger Eric
2019-09-24 11:31 ` [PATCH v4 7/9] target/arm/kvm: scratch vcpu: Preserve input kvm_vcpu_init features Andrew Jones
2019-09-24 11:31 ` [PATCH v4 8/9] target/arm/cpu64: max cpu: Support sve properties with KVM Andrew Jones
2019-09-26 6:52 ` Auger Eric
2019-09-26 8:41 ` Andrew Jones
2019-09-26 10:01 ` Auger Eric
2019-09-26 11:40 ` Andrew Jones
2019-09-26 11:50 ` Auger Eric
2019-09-24 11:31 ` [PATCH v4 9/9] target/arm/kvm: host cpu: Add support for sve<N> properties Andrew Jones
2019-09-26 7:07 ` Auger Eric
2019-09-26 8:53 ` Andrew Jones
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=20190924113105.19076-1-drjones@redhat.com \
--to=drjones@redhat.com \
--cc=Dave.Martin@arm.com \
--cc=alex.bennee@linaro.org \
--cc=armbru@redhat.com \
--cc=eric.auger@redhat.com \
--cc=imammedo@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/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.