]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
x86/cpufeatures: Make X86_FEATURE leaf 17 Linux-specific
authorBorislav Petkov (AMD) <bp@alien8.de>
Wed, 24 Sep 2025 12:59:35 +0000 (14:59 +0200)
committerBorislav Petkov (AMD) <bp@alien8.de>
Mon, 13 Oct 2025 14:21:25 +0000 (16:21 +0200)
That cpuinfo_x86.x86_capability[] element was supposed to mirror CPUID flags
from CPUID_0x80000007_EBX but that leaf has still to this day only three bits
defined in it. So move those bits to scattered.c and free the capability
element for synthetic flags.

No functional changes.

Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
arch/x86/include/asm/cpufeature.h
arch/x86/include/asm/cpufeatures.h
arch/x86/kernel/cpu/common.c
arch/x86/kernel/cpu/scattered.c
arch/x86/kvm/reverse_cpuid.h
tools/arch/x86/include/asm/cpufeatures.h

index 893cbca37fe99b5cad305acaa95e233b52b8e7ea..96acb669bed48bfbd8d2b276ecf3e18c517b9235 100644 (file)
@@ -30,7 +30,7 @@ enum cpuid_leafs
        CPUID_6_EAX,
        CPUID_8000_000A_EDX,
        CPUID_7_ECX,
-       CPUID_8000_0007_EBX,
+       CPUID_LNX_6,
        CPUID_7_EDX,
        CPUID_8000_001F_EAX,
        CPUID_8000_0021_EAX,
index 4091a776e37aaed67ca93b0a0cd23cc25dbc33d4..80b68f4726e7bf8251a07f973b11cdeb60746169 100644 (file)
 #define X86_FEATURE_ENQCMD             (16*32+29) /* "enqcmd" ENQCMD and ENQCMDS instructions */
 #define X86_FEATURE_SGX_LC             (16*32+30) /* "sgx_lc" Software Guard Extensions Launch Control */
 
-/* AMD-defined CPU features, CPUID level 0x80000007 (EBX), word 17 */
+/*
+ * Linux-defined word for use with scattered/synthetic bits.
+ */
 #define X86_FEATURE_OVERFLOW_RECOV     (17*32+ 0) /* "overflow_recov" MCA overflow recovery support */
 #define X86_FEATURE_SUCCOR             (17*32+ 1) /* "succor" Uncorrectable error containment and recovery */
+
 #define X86_FEATURE_SMCA               (17*32+ 3) /* "smca" Scalable MCA */
 
 /* Intel-defined CPU features, CPUID level 0x00000007:0 (EDX), word 18 */
index c7d3512914ca97814cb4a6a3db2ecccdadb28b67..3ff9682d8bc424142a96f44d32691e8fe17729da 100644 (file)
@@ -1021,12 +1021,8 @@ void get_cpu_cap(struct cpuinfo_x86 *c)
                c->x86_capability[CPUID_8000_0001_EDX] = edx;
        }
 
-       if (c->extended_cpuid_level >= 0x80000007) {
-               cpuid(0x80000007, &eax, &ebx, &ecx, &edx);
-
-               c->x86_capability[CPUID_8000_0007_EBX] = ebx;
-               c->x86_power = edx;
-       }
+       if (c->extended_cpuid_level >= 0x80000007)
+               c->x86_power = cpuid_edx(0x80000007);
 
        if (c->extended_cpuid_level >= 0x80000008) {
                cpuid(0x80000008, &eax, &ebx, &ecx, &edx);
index caa4dc885c214f70b7667154e151eefc34dc2f33..271f548ad156bcb032842c02e2bfd80555c08f58 100644 (file)
@@ -44,6 +44,9 @@ static const struct cpuid_bit cpuid_bits[] = {
        { X86_FEATURE_SGX1,                     CPUID_EAX,  0, 0x00000012, 0 },
        { X86_FEATURE_SGX2,                     CPUID_EAX,  1, 0x00000012, 0 },
        { X86_FEATURE_SGX_EDECCSSA,             CPUID_EAX, 11, 0x00000012, 0 },
+       { X86_FEATURE_OVERFLOW_RECOV,           CPUID_EBX,  0, 0x80000007, 0 },
+       { X86_FEATURE_SUCCOR,                   CPUID_EBX,  1, 0x80000007, 0 },
+       { X86_FEATURE_SMCA,                     CPUID_EBX,  3, 0x80000007, 0 },
        { X86_FEATURE_HW_PSTATE,                CPUID_EDX,  7, 0x80000007, 0 },
        { X86_FEATURE_CPB,                      CPUID_EDX,  9, 0x80000007, 0 },
        { X86_FEATURE_PROC_FEEDBACK,            CPUID_EDX, 11, 0x80000007, 0 },
index 743ab25ba7872b77de8f0a0863559b52355b6c74..81b4a7acf72e2c0ccb6a7ab2827a9f4de6130d62 100644 (file)
@@ -78,7 +78,6 @@ static const struct cpuid_reg reverse_cpuid[] = {
        [CPUID_6_EAX]         = {         6, 0, CPUID_EAX},
        [CPUID_8000_000A_EDX] = {0x8000000a, 0, CPUID_EDX},
        [CPUID_7_ECX]         = {         7, 0, CPUID_ECX},
-       [CPUID_8000_0007_EBX] = {0x80000007, 0, CPUID_EBX},
        [CPUID_7_EDX]         = {         7, 0, CPUID_EDX},
        [CPUID_7_1_EAX]       = {         7, 1, CPUID_EAX},
        [CPUID_12_EAX]        = {0x00000012, 0, CPUID_EAX},
index 06fc0479a23f01e5a65526fc185713294013f793..bd655e1003953ce0cf86a9a373b6ff1ba142ce16 100644 (file)
 #define X86_FEATURE_ENQCMD             (16*32+29) /* "enqcmd" ENQCMD and ENQCMDS instructions */
 #define X86_FEATURE_SGX_LC             (16*32+30) /* "sgx_lc" Software Guard Extensions Launch Control */
 
-/* AMD-defined CPU features, CPUID level 0x80000007 (EBX), word 17 */
+/*
+ * Linux-defined word for use with scattered/synthetic bits.
+ */
 #define X86_FEATURE_OVERFLOW_RECOV     (17*32+ 0) /* "overflow_recov" MCA overflow recovery support */
 #define X86_FEATURE_SUCCOR             (17*32+ 1) /* "succor" Uncorrectable error containment and recovery */
+
 #define X86_FEATURE_SMCA               (17*32+ 3) /* "smca" Scalable MCA */
 
 /* Intel-defined CPU features, CPUID level 0x00000007:0 (EDX), word 18 */