[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 06/33] i386: Add primary SGX CPUID and MSR defines
From: |
Yang Zhong |
Subject: |
[PATCH v4 06/33] i386: Add primary SGX CPUID and MSR defines |
Date: |
Mon, 19 Jul 2021 19:21:09 +0800 |
From: Sean Christopherson <sean.j.christopherson@intel.com>
Add CPUID defines for SGX and SGX Launch Control (LC), as well as
defines for their associated FEATURE_CONTROL MSR bits. Define the
Launch Enclave Public Key Hash MSRs (LE Hash MSRs), which exist
when SGX LC is present (in CPUID), and are writable when SGX LC is
enabled (in FEATURE_CONTROL).
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Yang Zhong <yang.zhong@intel.com>
---
target/i386/cpu.c | 4 ++--
target/i386/cpu.h | 12 ++++++++++++
2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 48b55ebd0a..7796d1caa6 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -794,7 +794,7 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
[FEAT_7_0_EBX] = {
.type = CPUID_FEATURE_WORD,
.feat_names = {
- "fsgsbase", "tsc-adjust", NULL, "bmi1",
+ "fsgsbase", "tsc-adjust", "sgx", "bmi1",
"hle", "avx2", NULL, "smep",
"bmi2", "erms", "invpcid", "rtm",
NULL, NULL, "mpx", NULL,
@@ -820,7 +820,7 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
"la57", NULL, NULL, NULL,
NULL, NULL, "rdpid", NULL,
"bus-lock-detect", "cldemote", NULL, "movdiri",
- "movdir64b", NULL, NULL, "pks",
+ "movdir64b", NULL, "sgxlc", "pks",
},
.cpuid = {
.eax = 7,
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
index 5d98a4e7c0..af33f956fe 100644
--- a/target/i386/cpu.h
+++ b/target/i386/cpu.h
@@ -377,9 +377,17 @@ typedef enum X86Seg {
#define MSR_IA32_PKRS 0x6e1
#define FEATURE_CONTROL_LOCKED (1<<0)
+#define FEATURE_CONTROL_VMXON_ENABLED_INSIDE_SMX (1ULL << 1)
#define FEATURE_CONTROL_VMXON_ENABLED_OUTSIDE_SMX (1<<2)
+#define FEATURE_CONTROL_SGX_LC (1ULL << 17)
+#define FEATURE_CONTROL_SGX (1ULL << 18)
#define FEATURE_CONTROL_LMCE (1<<20)
+#define MSR_IA32_SGXLEPUBKEYHASH0 0x8c
+#define MSR_IA32_SGXLEPUBKEYHASH1 0x8d
+#define MSR_IA32_SGXLEPUBKEYHASH2 0x8e
+#define MSR_IA32_SGXLEPUBKEYHASH3 0x8f
+
#define MSR_P6_PERFCTR0 0xc1
#define MSR_IA32_SMBASE 0x9e
@@ -701,6 +709,8 @@ typedef uint64_t FeatureWordArray[FEATURE_WORDS];
/* Support RDFSBASE/RDGSBASE/WRFSBASE/WRGSBASE */
#define CPUID_7_0_EBX_FSGSBASE (1U << 0)
+/* Support SGX */
+#define CPUID_7_0_EBX_SGX (1U << 2)
/* 1st Group of Advanced Bit Manipulation Extensions */
#define CPUID_7_0_EBX_BMI1 (1U << 3)
/* Hardware Lock Elision */
@@ -788,6 +798,8 @@ typedef uint64_t FeatureWordArray[FEATURE_WORDS];
#define CPUID_7_0_ECX_MOVDIRI (1U << 27)
/* Move 64 Bytes as Direct Store Instruction */
#define CPUID_7_0_ECX_MOVDIR64B (1U << 28)
+/* Support SGX Launch Control */
+#define CPUID_7_0_ECX_SGX_LC (1U << 30)
/* Protection Keys for Supervisor-mode Pages */
#define CPUID_7_0_ECX_PKS (1U << 31)
- [PATCH v4 00/33] Qemu SGX virtualization, Yang Zhong, 2021/07/19
- [PATCH v4 01/33] memory: Add RAM_PROTECTED flag to skip IOMMU mappings, Yang Zhong, 2021/07/19
- [PATCH v4 03/33] qom: Add memory-backend-epc ObjectOptions support, Yang Zhong, 2021/07/19
- [PATCH v4 02/33] hostmem: Add hostmem-epc as a backend for SGX EPC, Yang Zhong, 2021/07/19
- [PATCH v4 04/33] i386: Add 'sgx-epc' device to expose EPC sections to guest, Yang Zhong, 2021/07/19
- [PATCH v4 05/33] vl: Add sgx compound properties to expose SGX EPC sections to guest, Yang Zhong, 2021/07/19
- [PATCH v4 06/33] i386: Add primary SGX CPUID and MSR defines,
Yang Zhong <=
- [PATCH v4 07/33] i386: Add SGX CPUID leaf FEAT_SGX_12_0_EAX, Yang Zhong, 2021/07/19
- [PATCH v4 08/33] i386: Add SGX CPUID leaf FEAT_SGX_12_0_EBX, Yang Zhong, 2021/07/19
- [PATCH v4 09/33] i386: Add SGX CPUID leaf FEAT_SGX_12_1_EAX, Yang Zhong, 2021/07/19
- [PATCH v4 10/33] i386: Add get/set/migrate support for SGX_LEPUBKEYHASH MSRs, Yang Zhong, 2021/07/19
- [PATCH v4 11/33] i386: Add feature control MSR dependency when SGX is enabled, Yang Zhong, 2021/07/19
- [PATCH v4 12/33] i386: Update SGX CPUID info according to hardware/KVM/user input, Yang Zhong, 2021/07/19
- [PATCH v4 13/33] i386: kvm: Add support for exposing PROVISIONKEY to guest, Yang Zhong, 2021/07/19
- [PATCH v4 14/33] i386: Propagate SGX CPUID sub-leafs to KVM, Yang Zhong, 2021/07/19
- [PATCH v4 15/33] Adjust min CPUID level to 0x12 when SGX is enabled, Yang Zhong, 2021/07/19
- [PATCH v4 16/33] hw/i386/fw_cfg: Set SGX bits in feature control fw_cfg accordingly, Yang Zhong, 2021/07/19