mirror of https://github.com/OpenIPC/firmware.git
48 lines
1.6 KiB
Diff
48 lines
1.6 KiB
Diff
diff -drupN a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
|
|
--- a/arch/x86/kvm/cpuid.c 2018-08-06 17:23:04.000000000 +0300
|
|
+++ b/arch/x86/kvm/cpuid.c 2022-06-12 05:28:14.000000000 +0300
|
|
@@ -357,7 +357,7 @@ static inline int __do_cpuid_ent(struct
|
|
|
|
/* cpuid 0x80000008.ebx */
|
|
const u32 kvm_cpuid_8000_0008_ebx_x86_features =
|
|
- F(AMD_IBPB) | F(AMD_IBRS) | F(VIRT_SSBD);
|
|
+ F(IBPB) | F(IBRS);
|
|
|
|
/* cpuid 0xC0000001.edx */
|
|
const u32 kvm_cpuid_C000_0001_edx_x86_features =
|
|
@@ -382,7 +382,7 @@ static inline int __do_cpuid_ent(struct
|
|
|
|
/* cpuid 7.0.edx*/
|
|
const u32 kvm_cpuid_7_0_edx_x86_features =
|
|
- F(SPEC_CTRL) | F(SPEC_CTRL_SSBD) | F(ARCH_CAPABILITIES);
|
|
+ F(SPEC_CTRL) | F(RDS) | F(ARCH_CAPABILITIES);
|
|
|
|
/* all calls to cpuid_count() should be made on the same cpu */
|
|
get_cpu();
|
|
@@ -623,20 +623,13 @@ static inline int __do_cpuid_ent(struct
|
|
g_phys_as = phys_as;
|
|
entry->eax = g_phys_as | (virt_as << 8);
|
|
entry->edx = 0;
|
|
- /*
|
|
- * IBRS, IBPB and VIRT_SSBD aren't necessarily present in
|
|
- * hardware cpuid
|
|
- */
|
|
- if (boot_cpu_has(X86_FEATURE_AMD_IBPB))
|
|
- entry->ebx |= F(AMD_IBPB);
|
|
- if (boot_cpu_has(X86_FEATURE_AMD_IBRS))
|
|
- entry->ebx |= F(AMD_IBRS);
|
|
- if (boot_cpu_has(X86_FEATURE_VIRT_SSBD))
|
|
- entry->ebx |= F(VIRT_SSBD);
|
|
+ /* IBRS and IBPB aren't necessarily present in hardware cpuid */
|
|
+ if (boot_cpu_has(X86_FEATURE_IBPB))
|
|
+ entry->ebx |= F(IBPB);
|
|
+ if (boot_cpu_has(X86_FEATURE_IBRS))
|
|
+ entry->ebx |= F(IBRS);
|
|
entry->ebx &= kvm_cpuid_8000_0008_ebx_x86_features;
|
|
cpuid_mask(&entry->ebx, CPUID_8000_0008_EBX);
|
|
- if (boot_cpu_has(X86_FEATURE_LS_CFG_SSBD))
|
|
- entry->ebx |= F(VIRT_SSBD);
|
|
break;
|
|
}
|
|
case 0x80000019:
|