From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: Wei Huang <wei.huang2@amd.com>
Subject: [PULL 12/36] x86/cpu: Populate SVM CPUID feature bits
Date: Fri, 29 Jan 2021 12:17:50 +0100 [thread overview]
Message-ID: <20210129111814.566629-13-pbonzini@redhat.com> (raw)
In-Reply-To: <20210129111814.566629-1-pbonzini@redhat.com>
From: Wei Huang <wei.huang2@amd.com>
Newer AMD CPUs will add CPUID_0x8000000A_EDX[28] bit, which indicates
that SVM instructions (VMRUN/VMSAVE/VMLOAD) will trigger #VMEXIT before
CPU checking their EAX against reserved memory regions. This change will
allow the hypervisor to avoid intercepting #GP and emulating SVM
instructions. KVM turns on this CPUID bit for nested VMs. In order to
support it, let us populate this bit, along with other SVM feature bits,
in FEAT_SVM.
Signed-off-by: Wei Huang <wei.huang2@amd.com>
Message-Id: <20210126202456.589932-1-wei.huang2@amd.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
target/i386/cpu.c | 6 +++---
target/i386/cpu.h | 24 ++++++++++++++----------
2 files changed, 17 insertions(+), 13 deletions(-)
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 2b2c1c5389..a8db1b415d 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -926,11 +926,11 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
"npt", "lbrv", "svm-lock", "nrip-save",
"tsc-scale", "vmcb-clean", "flushbyasid", "decodeassists",
NULL, NULL, "pause-filter", NULL,
- "pfthreshold", NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
+ "pfthreshold", "avic", NULL, "v-vmsave-vmload",
+ "vgif", NULL, NULL, NULL,
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL,
+ "svme-addr-chk", NULL, NULL, NULL,
},
.cpuid = { .eax = 0x8000000A, .reg = R_EDX, },
.tcg_features = TCG_SVM_FEATURES,
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
index d23a5b340a..b39ec505de 100644
--- a/target/i386/cpu.h
+++ b/target/i386/cpu.h
@@ -670,16 +670,20 @@ typedef uint64_t FeatureWordArray[FEATURE_WORDS];
#define CPUID_EXT3_PERFCORE (1U << 23)
#define CPUID_EXT3_PERFNB (1U << 24)
-#define CPUID_SVM_NPT (1U << 0)
-#define CPUID_SVM_LBRV (1U << 1)
-#define CPUID_SVM_SVMLOCK (1U << 2)
-#define CPUID_SVM_NRIPSAVE (1U << 3)
-#define CPUID_SVM_TSCSCALE (1U << 4)
-#define CPUID_SVM_VMCBCLEAN (1U << 5)
-#define CPUID_SVM_FLUSHASID (1U << 6)
-#define CPUID_SVM_DECODEASSIST (1U << 7)
-#define CPUID_SVM_PAUSEFILTER (1U << 10)
-#define CPUID_SVM_PFTHRESHOLD (1U << 12)
+#define CPUID_SVM_NPT (1U << 0)
+#define CPUID_SVM_LBRV (1U << 1)
+#define CPUID_SVM_SVMLOCK (1U << 2)
+#define CPUID_SVM_NRIPSAVE (1U << 3)
+#define CPUID_SVM_TSCSCALE (1U << 4)
+#define CPUID_SVM_VMCBCLEAN (1U << 5)
+#define CPUID_SVM_FLUSHASID (1U << 6)
+#define CPUID_SVM_DECODEASSIST (1U << 7)
+#define CPUID_SVM_PAUSEFILTER (1U << 10)
+#define CPUID_SVM_PFTHRESHOLD (1U << 12)
+#define CPUID_SVM_AVIC (1U << 13)
+#define CPUID_SVM_V_VMSAVE_VMLOAD (1U << 15)
+#define CPUID_SVM_VGIF (1U << 16)
+#define CPUID_SVM_SVME_ADDR_CHK (1U << 28)
/* Support RDFSBASE/RDGSBASE/WRFSBASE/WRGSBASE */
#define CPUID_7_0_EBX_FSGSBASE (1U << 0)
--
2.29.2
next prev parent reply other threads:[~2021-01-29 11:49 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-29 11:17 [PULL 00/36] Misc patches (buildsys, i386, fuzzing) for 2021-01-29 Paolo Bonzini
2021-01-29 11:17 ` [PULL 01/36] fuzz: ignore address_space_map is_write flag Paolo Bonzini
2021-01-29 11:17 ` [PULL 02/36] fuzz: refine the ide/ahci fuzzer configs Paolo Bonzini
2021-01-29 11:17 ` [PULL 03/36] docs/fuzz: fix pre-meson path Paolo Bonzini
2021-01-29 11:17 ` [PULL 04/36] fuzz: log the arguments used to initialize QEMU Paolo Bonzini
2021-01-29 11:17 ` [PULL 05/36] fuzz: enable dynamic args for generic-fuzz configs Paolo Bonzini
2021-01-29 11:17 ` [PULL 06/36] docs/fuzz: add some information about OSS-Fuzz Paolo Bonzini
2021-01-29 11:17 ` [PULL 07/36] fuzz: add virtio-9p configurations for fuzzing Paolo Bonzini
2021-01-29 11:17 ` [PULL 08/36] target/i386: do not set LM for 32-bit emulation "-cpu host/max" Paolo Bonzini
2021-01-29 11:17 ` [PULL 09/36] machine: add missing doc for memory-backend option Paolo Bonzini
2021-01-29 11:17 ` [PULL 10/36] meson: accept either shared or static libraries if --disable-static Paolo Bonzini
2021-01-29 11:17 ` [PULL 11/36] meson: honor --enable-rbd if cc.links test fails Paolo Bonzini
2021-01-29 11:17 ` Paolo Bonzini [this message]
2021-01-29 11:17 ` [PULL 13/36] fuzz: fix wrong index in clear_bits Paolo Bonzini
2021-01-29 11:17 ` [PULL 14/36] docs: don't install corresponding man page if guest agent is disabled Paolo Bonzini
2021-01-29 11:17 ` [PULL 15/36] virtio-scsi: don't uninitialize queues that we didn't initialize Paolo Bonzini
2021-01-29 11:17 ` [PULL 16/36] event_notifier: handle initialization failure better Paolo Bonzini
2021-01-29 11:17 ` [PULL 17/36] target/i386: Fix decoding of certain BMI instructions Paolo Bonzini
2021-01-29 11:17 ` [PULL 18/36] target/i86: implement PKS Paolo Bonzini
2021-01-29 11:17 ` [PULL 19/36] configure: Fix --enable-tcg-interpreter Paolo Bonzini
2021-01-29 11:17 ` [PULL 20/36] configure: Improve TCI feature description Paolo Bonzini
2021-01-29 11:17 ` [PULL 21/36] meson: Explicit TCG backend used Paolo Bonzini
2021-01-29 11:18 ` [PULL 22/36] meson: Warn when TCI is selected but TCG backend is available Paolo Bonzini
2021-01-29 11:18 ` [PULL 23/36] slirp: update to git master Paolo Bonzini
2021-01-29 11:18 ` [PULL 24/36] build-sys: make libslirp a meson subproject Paolo Bonzini
2021-01-29 11:18 ` [PULL 25/36] tests/meson: Only build softfloat objects if TCG is selected Paolo Bonzini
2021-01-29 11:18 ` [PULL 26/36] pc-bios/meson: Only install EDK2 blob firmwares with system emulation Paolo Bonzini
2021-01-29 11:18 ` [PULL 27/36] meson: Restrict block subsystem processing Paolo Bonzini
2021-01-29 11:18 ` [PULL 28/36] meson: Merge trace_events_subdirs array Paolo Bonzini
2021-01-29 11:18 ` [PULL 29/36] meson: Restrict some trace event directories to user/system emulation Paolo Bonzini
2021-01-29 11:18 ` [PULL 30/36] meson: Restrict emulation code Paolo Bonzini
2021-01-29 11:18 ` [PULL 31/36] qapi/meson: Restrict qdev code to system-mode emulation Paolo Bonzini
2021-01-29 11:18 ` [PULL 32/36] qapi/meson: Remove QMP from user-mode emulation Paolo Bonzini
2021-01-29 11:18 ` [PULL 33/36] qapi/meson: Restrict system-mode specific modules Paolo Bonzini
2021-01-29 11:18 ` [PULL 34/36] qapi/meson: Restrict UI module to system emulation and tools Paolo Bonzini
2021-01-29 11:18 ` [PULL 35/36] hvf: Fetch cr4 before evaluating CPUID(1) Paolo Bonzini
2021-01-29 11:18 ` [PULL 36/36] accel/kvm/kvm-all: Fix wrong return code handling in dirty log code Paolo Bonzini
2021-01-29 19:49 ` [PULL 00/36] Misc patches (buildsys, i386, fuzzing) for 2021-01-29 Peter Maydell
2021-01-29 19:54 ` Paolo Bonzini
2021-01-30 10:11 ` Marc-André Lureau
2021-01-30 11:14 ` 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=20210129111814.566629-13-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=wei.huang2@amd.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).