qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PULL 12/26] target/arm: Support PAuth extension for hvf
Date: Mon, 21 Feb 2022 09:27:46 +0000	[thread overview]
Message-ID: <20220221092800.404870-13-peter.maydell@linaro.org> (raw)
In-Reply-To: <20220221092800.404870-1-peter.maydell@linaro.org>

Currently we don't allow guests under hvf to use the PAuth extension,
because we didn't have any special code to handle that, and therefore
in arm_cpu_pauth_finalize() we will sanitize the ID_AA64ISAR1 value
the guest sees to clear the PAuth related fields.

Add support for this in the same way that KVM does it, by defaulting
to "PAuth enabled" if the host CPU has it and allowing the user to
disable it via '-cpu pauth=no' on the command line.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Andrew Jones <drjones@redhat.com>
Reviewed-by: Alexander Graf <agraf@csgraf.de>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220204165506.2846058-7-peter.maydell@linaro.org
---
 target/arm/cpu64.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c
index 19330d9ee94..1171ab16b94 100644
--- a/target/arm/cpu64.c
+++ b/target/arm/cpu64.c
@@ -633,9 +633,10 @@ void arm_cpu_pauth_finalize(ARMCPU *cpu, Error **errp)
     uint64_t t;
 
     /* Exit early if PAuth is enabled, and fall through to disable it */
-    if (kvm_enabled() && cpu->prop_pauth) {
+    if ((kvm_enabled() || hvf_enabled()) && cpu->prop_pauth) {
         if (!cpu_isar_feature(aa64_pauth, cpu)) {
-            error_setg(errp, "'pauth' feature not supported by KVM on this host");
+            error_setg(errp, "'pauth' feature not supported by %s on this host",
+                       kvm_enabled() ? "KVM" : "hvf");
         }
 
         return;
@@ -672,10 +673,14 @@ void aarch64_add_pauth_properties(Object *obj)
 
     /* Default to PAUTH on, with the architected algorithm on TCG. */
     qdev_property_add_static(DEVICE(obj), &arm_cpu_pauth_property);
-    if (kvm_enabled()) {
+    if (kvm_enabled() || hvf_enabled()) {
         /*
          * Mirror PAuth support from the probed sysregs back into the
-         * property for KVM. Is it just a bit backward? Yes it is!
+         * property for KVM or hvf. Is it just a bit backward? Yes it is!
+         * Note that prop_pauth is true whether the host CPU supports the
+         * architected QARMA5 algorithm or the IMPDEF one. We don't
+         * provide the separate pauth-impdef property for KVM or hvf,
+         * only for TCG.
          */
         cpu->prop_pauth = cpu_isar_feature(aa64_pauth, cpu);
     } else {
@@ -695,6 +700,7 @@ static void aarch64_host_initfn(Object *obj)
 #elif defined(CONFIG_HVF)
     ARMCPU *cpu = ARM_CPU(obj);
     hvf_arm_set_cpu_features_from_host(cpu);
+    aarch64_add_pauth_properties(obj);
 #else
     g_assert_not_reached();
 #endif
-- 
2.25.1



  parent reply	other threads:[~2022-02-21  9:55 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-21  9:27 [PULL 00/26] target-arm queue Peter Maydell
2022-02-21  9:27 ` [PULL 01/26] MAINTAINERS: Adding myself as a reviewer of some components Peter Maydell
2022-02-21  9:27 ` [PULL 02/26] tests/qtest: add qtests for npcm7xx sdhci Peter Maydell
2022-02-21  9:27 ` [PULL 03/26] hvf: arm: Use macros for sysreg shift/masking Peter Maydell
2022-02-21  9:27 ` [PULL 04/26] hvf: arm: Handle unknown ID registers as RES0 Peter Maydell
2022-02-21  9:27 ` [PULL 05/26] Mark remaining global TypeInfo instances as const Peter Maydell
2022-02-21  9:27 ` [PULL 06/26] checkpatch: Ensure that TypeInfos are const Peter Maydell
2022-02-21  9:27 ` [PULL 07/26] target/arm: Move '-cpu host' code to cpu64.c Peter Maydell
2022-02-21  9:27 ` [PULL 08/26] target/arm: Use aarch64_cpu_register() for 'host' CPU type Peter Maydell
2022-02-21  9:27 ` [PULL 09/26] target/arm: Make KVM -cpu max exactly like -cpu host Peter Maydell
2022-02-21  9:27 ` [PULL 10/26] target/arm: Unindent unnecessary else-clause Peter Maydell
2022-02-21  9:27 ` [PULL 11/26] target/arm: Fix '-cpu max' for HVF Peter Maydell
2022-02-21  9:27 ` Peter Maydell [this message]
2022-02-21  9:27 ` [PULL 13/26] Kconfig: Add I2C_DEVICES device group Peter Maydell
2022-02-21  9:27 ` [PULL 14/26] Kconfig: Add 'imply I2C_DEVICES' on boards with available i2c bus Peter Maydell
2022-02-21  9:27 ` [PULL 15/26] hw/arm/armv7m: Handle disconnected clock inputs Peter Maydell
2022-02-21  9:27 ` [PULL 16/26] include: Move qemu_madvise() and related #defines to new qemu/madvise.h Peter Maydell
2022-02-21  9:27 ` [PULL 17/26] include: Move qemu_mprotect_*() to new qemu/mprotect.h Peter Maydell
2022-02-21  9:27 ` [PULL 18/26] include: Move QEMU_MAP_* constants to mmap-alloc.h Peter Maydell
2022-02-21  9:27 ` [PULL 19/26] include: Move qemu_[id]cache_* declarations to new qemu/cacheinfo.h Peter Maydell
2022-02-21  9:27 ` [PULL 20/26] include: Move hardware version declarations to new qemu/hw-version.h Peter Maydell
2022-02-21  9:27 ` [PULL 21/26] MAINTAINERS: Add Akihiko Odaki to macOS-relateds Peter Maydell
2022-02-21  9:27 ` [PULL 22/26] hw/timer: fix a9gtimer vmstate Peter Maydell
2022-02-21  9:27 ` [PULL 23/26] hw/arm: add initial mori-bmc board Peter Maydell
2022-02-21  9:27 ` [PULL 24/26] ui/cocoa: Remove allowedFileTypes restriction in SavePanel Peter Maydell
2022-02-21  9:27 ` [PULL 25/26] ui/cocoa: Do not alert even without block devices Peter Maydell
2022-02-21  9:28 ` [PULL 26/26] ui/cocoa: Fix the leak of qemu_console_get_label Peter Maydell

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=20220221092800.404870-13-peter.maydell@linaro.org \
    --to=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.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 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).