78 lines
2.9 KiB
Diff
78 lines
2.9 KiB
Diff
|
From 58f7b0c78ff579aef5a470804ff76e4ed913056b Mon Sep 17 00:00:00 2001
|
||
|
From: Kim Phillips <kim.phillips@amd.com>
|
||
|
Date: Tue, 10 Jan 2023 16:46:37 -0600
|
||
|
Subject: [PATCH 28/36] x86/cpu, kvm: Add support for CPUID_80000021_EAX
|
||
|
|
||
|
Add support for CPUID leaf 80000021, EAX. The majority of the features will be
|
||
|
used in the kernel and thus a separate leaf is appropriate.
|
||
|
|
||
|
Include KVM's reverse_cpuid entry because features are used by VM guests, too.
|
||
|
|
||
|
[ bp: Massage commit message. ]
|
||
|
|
||
|
Signed-off-by: Kim Phillips <kim.phillips@amd.com>
|
||
|
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
|
||
|
Acked-by: Sean Christopherson <seanjc@google.com>
|
||
|
Link: https://lore.kernel.org/r/20230124163319.2277355-2-kim.phillips@amd.com
|
||
|
(cherry picked from commit 8415a74852d7c24795007ee9862d25feb519007c)
|
||
|
|
||
|
The conflicts in arch/x86/include/asm/cpufeature.h,
|
||
|
arch/x86/include/asm/cpufeatures.h, arch/x86/include/asm/disabled-features.h
|
||
|
and arch/x86/include/asm/required-features.h are due to
|
||
|
the below commit added for kABI compatibility:
|
||
|
Repo: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/:
|
||
|
commit: 219a085bc8ba328d65a1e12bc1886415525a38d9
|
||
|
|
||
|
The conflict in arch/x86/kvm/reverse_cpuid.h is due to
|
||
|
upstream commit 24d74b9f5f2a972ac9228372adeac62b2dc10ea2
|
||
|
|
||
|
Signed-off-by: Mridula Shastry <mridula.c.shastry@oracle.com>
|
||
|
Reviewed-by: Todd Vierling <todd.vierling@oracle.com>
|
||
|
---
|
||
|
arch/x86/include/asm/cpufeature.h | 1 +
|
||
|
arch/x86/kernel/cpu/common.c | 3 +++
|
||
|
arch/x86/kvm/reverse_cpuid.h | 1 +
|
||
|
3 files changed, 5 insertions(+)
|
||
|
|
||
|
diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
|
||
|
index 925722baef7c..3b2473cdf2ad 100644
|
||
|
--- a/arch/x86/include/asm/cpufeature.h
|
||
|
+++ b/arch/x86/include/asm/cpufeature.h
|
||
|
@@ -31,6 +31,7 @@ enum cpuid_leafs
|
||
|
CPUID_8000_0007_EBX,
|
||
|
CPUID_7_EDX,
|
||
|
CPUID_8000_001F_EAX,
|
||
|
+ CPUID_8000_0021_EAX,
|
||
|
};
|
||
|
|
||
|
#ifdef CONFIG_X86_FEATURE_NAMES
|
||
|
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
|
||
|
index 22763a691b7b..a8dfd75588cd 100644
|
||
|
--- a/arch/x86/kernel/cpu/common.c
|
||
|
+++ b/arch/x86/kernel/cpu/common.c
|
||
|
@@ -962,6 +962,9 @@ void get_cpu_cap(struct cpuinfo_x86 *c)
|
||
|
if (c->extended_cpuid_level >= 0x8000001f)
|
||
|
c->x86_capability[CPUID_8000_001F_EAX] = cpuid_eax(0x8000001f);
|
||
|
|
||
|
+ if (c->extended_cpuid_level >= 0x80000021)
|
||
|
+ c->x86_capability[CPUID_8000_0021_EAX] = cpuid_eax(0x80000021);
|
||
|
+
|
||
|
init_scattered_cpuid_features(c);
|
||
|
init_speculation_control(c);
|
||
|
|
||
|
diff --git a/arch/x86/kvm/reverse_cpuid.h b/arch/x86/kvm/reverse_cpuid.h
|
||
|
index a19d473d0184..7eeade35a425 100644
|
||
|
--- a/arch/x86/kvm/reverse_cpuid.h
|
||
|
+++ b/arch/x86/kvm/reverse_cpuid.h
|
||
|
@@ -48,6 +48,7 @@ static const struct cpuid_reg reverse_cpuid[] = {
|
||
|
[CPUID_7_1_EAX] = { 7, 1, CPUID_EAX},
|
||
|
[CPUID_12_EAX] = {0x00000012, 0, CPUID_EAX},
|
||
|
[CPUID_8000_001F_EAX] = {0x8000001f, 0, CPUID_EAX},
|
||
|
+ [CPUID_8000_0021_EAX] = {0x80000021, 0, CPUID_EAX},
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
--
|
||
|
2.39.3
|
||
|
|