[PATCH v7 115/120] x86/cpu: Remove x86_capability[] and x86_power initialization
"Ahmed S. Darwish" <[email protected]> Thu, 28 May 2026 17:39:17 +0200
| Newsgroups | dev.linux.lists.x86-cpuid,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
X86_FEATURE queries are now routed to the CPUID tables instead of to x86_capability[]. x86_power call sites have all been converted to parsed CPUID(0x80000007) access. Remove all direct CPUID queries which populate x86_capability[] and x86_power. Signed-off-by: Ahmed S. Darwish <[email protected]> --- arch/x86/kernel/cpu/common.c | 58 ------------------------------------ 1 file changed, 58 deletions(-) diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index d6b3550b9f11..08e7c44dbc77 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -1020,70 +1020,12 @@ static void init_speculation_control(struct cpuinfo_x86 *c) void get_cpu_cap(struct cpuinfo_x86 *c) { const struct leaf_0x80000000_0 *el0; - u32 eax, ebx, ecx, edx; cpuid_scan_cpu(c); - /* Intel-defined flags: level 0x00000001 */ - if (c->cpuid_level >= 0x00000001) { - cpuid(0x00000001, &eax, &ebx, &ecx, &edx); - - c->x86_capability[CPUID_1_ECX] = ecx; - c->x86_capability[CPUID_1_EDX] = edx; - } - - /* Thermal and Power Management Leaf: level 0x00000006 (eax) */ - if (c->cpuid_level >= 0x00000006) - c->x86_capability[CPUID_6_EAX] = cpuid_eax(0x00000006); - - /* Additional Intel-defined flags: level 0x00000007 */ - if (c->cpuid_level >= 0x00000007) { - cpuid_count(0x00000007, 0, &eax, &ebx, &ecx, &edx); - c->x86_capability[CPUID_7_0_EBX] = ebx; - c->x86_capability[CPUID_7_ECX] = ecx; - c->x86_capability[CPUID_7_EDX] = edx; - - /* Check valid sub-leaf index before accessing it */ - if (eax >= 1) { - cpuid_count(0x00000007, 1, &eax, &ebx, &ecx, &edx); - c->x86_capability[CPUID_7_1_EAX] = eax; - } - } - - /* Extended state features: level 0x0000000d */ - if (c->cpuid_level >= 0x0000000d) { - cpuid_count(0x0000000d, 1, &eax, &ebx, &ecx, &edx); - - c->x86_capability[CPUID_D_1_EAX] = eax; - } - el0 = cpuid_leaf(c, 0x80000000); c->extended_cpuid_level = el0 ? el0->max_ext_leaf : 0; - if (c->extended_cpuid_level >= 0x80000001) { - cpuid(0x80000001, &eax, &ebx, &ecx, &edx); - - c->x86_capability[CPUID_8000_0001_ECX] = ecx; - c->x86_capability[CPUID_8000_0001_EDX] = 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); - c->x86_capability[CPUID_8000_0008_EBX] = ebx; - } - - if (c->extended_cpuid_level >= 0x8000000a) - c->x86_capability[CPUID_8000_000A_EDX] = cpuid_edx(0x8000000a); - - 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); -- 2.54.0