From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>
Subject: [PULL 12/18] target/i386: TCG supports WBNOINVD
Date: Mon, 26 Jun 2023 13:14:39 +0200 [thread overview]
Message-ID: <20230626111445.163573-13-pbonzini@redhat.com> (raw)
In-Reply-To: <20230626111445.163573-1-pbonzini@redhat.com>
WBNOINVD is the same as INVD or WBINVD as far as TCG is concerned,
since there is no cache in TCG and therefore no invalidation side effect
in WBNOINVD.
With respect to SVM emulation, processors that do not support WBNOINVD
will ignore the prefix and treat it as WBINVD, while those that support
it will generate exactly the same vmexit.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
target/i386/cpu.c | 3 ++-
target/i386/tcg/translate.c | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index bce0cb73e85..695e01582bf 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -678,7 +678,8 @@ void x86_cpu_vendor_words2str(char *dst, uint32_t vendor1,
#define TCG_SGX_12_0_EBX_FEATURES 0
#define TCG_SGX_12_1_EAX_FEATURES 0
-#define TCG_8000_0008_EBX CPUID_8000_0008_EBX_XSAVEERPTR
+#define TCG_8000_0008_EBX (CPUID_8000_0008_EBX_XSAVEERPTR | \
+ CPUID_8000_0008_EBX_WBNOINVD)
FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
[FEAT_1_EDX] = {
diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c
index 4ef45bbd71e..b2e2dccb84f 100644
--- a/target/i386/tcg/translate.c
+++ b/target/i386/tcg/translate.c
@@ -6125,7 +6125,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
break;
case 0x108: /* invd */
- case 0x109: /* wbinvd */
+ case 0x109: /* wbinvd; wbnoinvd with REPZ prefix */
if (check_cpl0(s)) {
gen_svm_check_intercept(s, (b & 1) ? SVM_EXIT_WBINVD : SVM_EXIT_INVD);
/* nothing to do */
--
2.41.0
next prev parent reply other threads:[~2023-06-26 11:15 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-26 11:14 [PULL 00/18] Misc, i386 patches for 2023-06-26 Paolo Bonzini
2023-06-26 11:14 ` [PULL 01/18] build: further refine build.ninja rules Paolo Bonzini
2023-06-26 11:14 ` [PULL 02/18] hw/remote/proxy: Remove dubious 'event_notifier-posix.c' include Paolo Bonzini
2023-06-26 11:14 ` [PULL 03/18] numa: Validate cluster and NUMA node boundary if required Paolo Bonzini
2023-07-20 13:10 ` Peter Maydell
2023-07-21 10:50 ` Gavin Shan
2023-06-26 11:14 ` [PULL 04/18] hw/arm: Validate cluster and NUMA node boundary Paolo Bonzini
2023-06-26 11:14 ` [PULL 05/18] hw/riscv: " Paolo Bonzini
2023-06-26 11:14 ` [PULL 06/18] kvm: reuse per-vcpu stats fd to avoid vcpu interruption Paolo Bonzini
2023-06-26 11:14 ` [PULL 07/18] target/i386: fix INVD vmexit Paolo Bonzini
2023-06-26 11:14 ` [PULL 08/18] target/i386: TCG supports 3DNow! prefetch(w) Paolo Bonzini
2023-06-26 11:14 ` [PULL 09/18] target/i386: TCG supports RDSEED Paolo Bonzini
2023-06-26 11:14 ` [PULL 10/18] target/i386: do not accept RDSEED if CPUID bit absent Paolo Bonzini
2023-06-26 11:14 ` [PULL 11/18] target/i386: TCG supports XSAVEERPTR Paolo Bonzini
2023-06-26 11:14 ` Paolo Bonzini [this message]
2023-06-26 11:14 ` [PULL 13/18] target/i386: Intel only supports SYSCALL/SYSRET in long mode Paolo Bonzini
2023-06-26 11:14 ` [PULL 14/18] target/i386: AMD only supports SYSENTER/SYSEXIT in 32-bit mode Paolo Bonzini
2023-06-26 11:14 ` [PULL 15/18] target/i386: sysret and sysexit are privileged Paolo Bonzini
2023-06-26 11:14 ` [PULL 16/18] target/i386: implement RDPID in TCG Paolo Bonzini
2023-06-26 11:14 ` [PULL 17/18] target/i386: implement SYSCALL/SYSRET in 32-bit emulators Paolo Bonzini
2023-06-26 11:14 ` [PULL 18/18] git-submodule.sh: allow running in validate mode without previous update Paolo Bonzini
2023-06-26 14:04 ` [PULL 00/18] Misc, i386 patches for 2023-06-26 Richard Henderson
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=20230626111445.163573-13-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--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 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).