forked from rpms/qemu-kvm
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
3.4 KiB
92 lines
3.4 KiB
1 month ago
|
From cfb4964556facf1cb4500f0e3a754e4e20c13aed Mon Sep 17 00:00:00 2001
|
||
|
From: Tao Su <tao1.su@linux.intel.com>
|
||
|
Date: Thu, 31 Oct 2024 16:52:30 +0800
|
||
|
Subject: [PATCH 34/38] target/i386: add CPUID.24 features for AVX10
|
||
|
|
||
|
RH-Author: Paolo Bonzini <pbonzini@redhat.com>
|
||
|
RH-MergeRequest: 280: Add support for the AVX10.1, SHA512, SM3 and SM4 instruction sets
|
||
|
RH-Jira: RHEL-30315 RHEL-45110
|
||
|
RH-Acked-by: Vitaly Kuznetsov <vkuznets@redhat.com>
|
||
|
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||
|
RH-Commit: [5/9] a8b6f9edc330b412fbd27eece2f4961f4f876e5b (bonzini/rhel-qemu-kvm)
|
||
|
|
||
|
Introduce features for the supported vector bit lengths.
|
||
|
|
||
|
Signed-off-by: Tao Su <tao1.su@linux.intel.com>
|
||
|
Link: https://lore.kernel.org/r/20241028024512.156724-3-tao1.su@linux.intel.com
|
||
|
Link: https://lore.kernel.org/r/20241028024512.156724-4-tao1.su@linux.intel.com
|
||
|
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||
|
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
|
||
|
Tested-by: Xuelian Guo <xuelian.guo@intel.com>
|
||
|
Link: https://lore.kernel.org/r/20241031085233.425388-6-tao1.su@linux.intel.com
|
||
|
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||
|
(cherry picked from commit 2d055b8fe11ee567c2ae8047311fd83697e494b6)
|
||
|
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||
|
---
|
||
|
target/i386/cpu.c | 15 +++++++++++++++
|
||
|
target/i386/cpu.h | 8 ++++++++
|
||
|
2 files changed, 23 insertions(+)
|
||
|
|
||
|
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
|
||
|
index a2e1a18537..958cbff54d 100644
|
||
|
--- a/target/i386/cpu.c
|
||
|
+++ b/target/i386/cpu.c
|
||
|
@@ -902,6 +902,7 @@ void x86_cpu_vendor_words2str(char *dst, uint32_t vendor1,
|
||
|
#define TCG_SGX_12_0_EAX_FEATURES 0
|
||
|
#define TCG_SGX_12_0_EBX_FEATURES 0
|
||
|
#define TCG_SGX_12_1_EAX_FEATURES 0
|
||
|
+#define TCG_24_0_EBX_FEATURES 0
|
||
|
|
||
|
#if defined CONFIG_USER_ONLY
|
||
|
#define CPUID_8000_0008_EBX_KERNEL_FEATURES (CPUID_8000_0008_EBX_IBPB | \
|
||
|
@@ -1167,6 +1168,20 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
|
||
|
},
|
||
|
.tcg_features = TCG_7_2_EDX_FEATURES,
|
||
|
},
|
||
|
+ [FEAT_24_0_EBX] = {
|
||
|
+ .type = CPUID_FEATURE_WORD,
|
||
|
+ .feat_names = {
|
||
|
+ [16] = "avx10-128",
|
||
|
+ [17] = "avx10-256",
|
||
|
+ [18] = "avx10-512",
|
||
|
+ },
|
||
|
+ .cpuid = {
|
||
|
+ .eax = 0x24,
|
||
|
+ .needs_ecx = true, .ecx = 0,
|
||
|
+ .reg = R_EBX,
|
||
|
+ },
|
||
|
+ .tcg_features = TCG_24_0_EBX_FEATURES,
|
||
|
+ },
|
||
|
[FEAT_8000_0007_EDX] = {
|
||
|
.type = CPUID_FEATURE_WORD,
|
||
|
.feat_names = {
|
||
|
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
|
||
|
index 591113349d..c60290b8d5 100644
|
||
|
--- a/target/i386/cpu.h
|
||
|
+++ b/target/i386/cpu.h
|
||
|
@@ -666,6 +666,7 @@ typedef enum FeatureWord {
|
||
|
FEAT_XSAVE_XSS_HI, /* CPUID[EAX=0xd,ECX=1].EDX */
|
||
|
FEAT_7_1_EDX, /* CPUID[EAX=7,ECX=1].EDX */
|
||
|
FEAT_7_2_EDX, /* CPUID[EAX=7,ECX=2].EDX */
|
||
|
+ FEAT_24_0_EBX, /* CPUID[EAX=0x24,ECX=0].EBX */
|
||
|
FEATURE_WORDS,
|
||
|
} FeatureWord;
|
||
|
|
||
|
@@ -990,6 +991,13 @@ uint64_t x86_cpu_get_supported_feature_word(X86CPU *cpu, FeatureWord w);
|
||
|
/* Packets which contain IP payload have LIP values */
|
||
|
#define CPUID_14_0_ECX_LIP (1U << 31)
|
||
|
|
||
|
+/* AVX10 128-bit vector support is present */
|
||
|
+#define CPUID_24_0_EBX_AVX10_128 (1U << 16)
|
||
|
+/* AVX10 256-bit vector support is present */
|
||
|
+#define CPUID_24_0_EBX_AVX10_256 (1U << 17)
|
||
|
+/* AVX10 512-bit vector support is present */
|
||
|
+#define CPUID_24_0_EBX_AVX10_512 (1U << 18)
|
||
|
+
|
||
|
/* RAS Features */
|
||
|
#define CPUID_8000_0007_EBX_OVERFLOW_RECOV (1U << 0)
|
||
|
#define CPUID_8000_0007_EBX_SUCCOR (1U << 1)
|
||
|
--
|
||
|
2.39.3
|
||
|
|