[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 12/18] target/i386: TCG supports WBNOINVD
From: |
Paolo Bonzini |
Subject: |
[PULL 12/18] target/i386: TCG supports WBNOINVD |
Date: |
Mon, 26 Jun 2023 13:14:39 +0200 |
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
- [PULL 01/18] build: further refine build.ninja rules, (continued)
- [PULL 01/18] build: further refine build.ninja rules, Paolo Bonzini, 2023/06/26
- [PULL 02/18] hw/remote/proxy: Remove dubious 'event_notifier-posix.c' include, Paolo Bonzini, 2023/06/26
- [PULL 06/18] kvm: reuse per-vcpu stats fd to avoid vcpu interruption, Paolo Bonzini, 2023/06/26
- [PULL 05/18] hw/riscv: Validate cluster and NUMA node boundary, Paolo Bonzini, 2023/06/26
- [PULL 07/18] target/i386: fix INVD vmexit, Paolo Bonzini, 2023/06/26
- [PULL 08/18] target/i386: TCG supports 3DNow! prefetch(w), Paolo Bonzini, 2023/06/26
- [PULL 09/18] target/i386: TCG supports RDSEED, Paolo Bonzini, 2023/06/26
- [PULL 10/18] target/i386: do not accept RDSEED if CPUID bit absent, Paolo Bonzini, 2023/06/26
- [PULL 11/18] target/i386: TCG supports XSAVEERPTR, Paolo Bonzini, 2023/06/26
- [PULL 13/18] target/i386: Intel only supports SYSCALL/SYSRET in long mode, Paolo Bonzini, 2023/06/26
- [PULL 12/18] target/i386: TCG supports WBNOINVD,
Paolo Bonzini <=
- [PULL 16/18] target/i386: implement RDPID in TCG, Paolo Bonzini, 2023/06/26
- [PULL 14/18] target/i386: AMD only supports SYSENTER/SYSEXIT in 32-bit mode, Paolo Bonzini, 2023/06/26
- [PULL 15/18] target/i386: sysret and sysexit are privileged, Paolo Bonzini, 2023/06/26
- [PULL 17/18] target/i386: implement SYSCALL/SYSRET in 32-bit emulators, Paolo Bonzini, 2023/06/26
- [PULL 18/18] git-submodule.sh: allow running in validate mode without previous update, Paolo Bonzini, 2023/06/26
- Re: [PULL 00/18] Misc, i386 patches for 2023-06-26, Richard Henderson, 2023/06/26