mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-05-24 10:39:52 +00:00
x86/cpufeatures: Add SEV-ES CPU feature
Add CPU feature detection for Secure Encrypted Virtualization with Encrypted State. This feature enhances SEV by also encrypting the guest register state, making it in-accessible to the hypervisor. Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com> Signed-off-by: Joerg Roedel <jroedel@suse.de> Signed-off-by: Borislav Petkov <bp@suse.de> Link: https://lkml.kernel.org/r/20200907131613.12703-6-joro@8bytes.org
This commit is contained in:
parent
976bc5e2ac
commit
360e7c5c4c
3 changed files with 4 additions and 1 deletions
|
@ -236,6 +236,7 @@
|
||||||
#define X86_FEATURE_EPT_AD ( 8*32+17) /* Intel Extended Page Table access-dirty bit */
|
#define X86_FEATURE_EPT_AD ( 8*32+17) /* Intel Extended Page Table access-dirty bit */
|
||||||
#define X86_FEATURE_VMCALL ( 8*32+18) /* "" Hypervisor supports the VMCALL instruction */
|
#define X86_FEATURE_VMCALL ( 8*32+18) /* "" Hypervisor supports the VMCALL instruction */
|
||||||
#define X86_FEATURE_VMW_VMMCALL ( 8*32+19) /* "" VMware prefers VMMCALL hypercall instruction */
|
#define X86_FEATURE_VMW_VMMCALL ( 8*32+19) /* "" VMware prefers VMMCALL hypercall instruction */
|
||||||
|
#define X86_FEATURE_SEV_ES ( 8*32+20) /* AMD Secure Encrypted Virtualization - Encrypted State */
|
||||||
|
|
||||||
/* Intel-defined CPU features, CPUID level 0x00000007:0 (EBX), word 9 */
|
/* Intel-defined CPU features, CPUID level 0x00000007:0 (EBX), word 9 */
|
||||||
#define X86_FEATURE_FSGSBASE ( 9*32+ 0) /* RDFSBASE, WRFSBASE, RDGSBASE, WRGSBASE instructions*/
|
#define X86_FEATURE_FSGSBASE ( 9*32+ 0) /* RDFSBASE, WRFSBASE, RDGSBASE, WRGSBASE instructions*/
|
||||||
|
|
|
@ -614,7 +614,7 @@ static void early_detect_mem_encrypt(struct cpuinfo_x86 *c)
|
||||||
* If BIOS has not enabled SME then don't advertise the
|
* If BIOS has not enabled SME then don't advertise the
|
||||||
* SME feature (set in scattered.c).
|
* SME feature (set in scattered.c).
|
||||||
* For SEV: If BIOS has not enabled SEV then don't advertise the
|
* For SEV: If BIOS has not enabled SEV then don't advertise the
|
||||||
* SEV feature (set in scattered.c).
|
* SEV and SEV_ES feature (set in scattered.c).
|
||||||
*
|
*
|
||||||
* In all cases, since support for SME and SEV requires long mode,
|
* In all cases, since support for SME and SEV requires long mode,
|
||||||
* don't advertise the feature under CONFIG_X86_32.
|
* don't advertise the feature under CONFIG_X86_32.
|
||||||
|
@ -645,6 +645,7 @@ clear_all:
|
||||||
setup_clear_cpu_cap(X86_FEATURE_SME);
|
setup_clear_cpu_cap(X86_FEATURE_SME);
|
||||||
clear_sev:
|
clear_sev:
|
||||||
setup_clear_cpu_cap(X86_FEATURE_SEV);
|
setup_clear_cpu_cap(X86_FEATURE_SEV);
|
||||||
|
setup_clear_cpu_cap(X86_FEATURE_SEV_ES);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,7 @@ static const struct cpuid_bit cpuid_bits[] = {
|
||||||
{ X86_FEATURE_MBA, CPUID_EBX, 6, 0x80000008, 0 },
|
{ X86_FEATURE_MBA, CPUID_EBX, 6, 0x80000008, 0 },
|
||||||
{ X86_FEATURE_SME, CPUID_EAX, 0, 0x8000001f, 0 },
|
{ X86_FEATURE_SME, CPUID_EAX, 0, 0x8000001f, 0 },
|
||||||
{ X86_FEATURE_SEV, CPUID_EAX, 1, 0x8000001f, 0 },
|
{ X86_FEATURE_SEV, CPUID_EAX, 1, 0x8000001f, 0 },
|
||||||
|
{ X86_FEATURE_SEV_ES, CPUID_EAX, 3, 0x8000001f, 0 },
|
||||||
{ 0, 0, 0, 0, 0 }
|
{ 0, 0, 0, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue