mirror-linux/arch/x86/kernel/cpu
Thomas Gleixner 2066f00e5b x86/topology: Implement topology_is_core_online() to address SMT regression
Christian reported that commit a430c11f40 ("intel_idle: Rescan "dead" SMT
siblings during initialization") broke the use case in which both 'nosmt'
and 'maxcpus' are on the kernel command line because it onlines primary
threads, which were offline due to the maxcpus limit.

The initially proposed fix to skip primary threads in the loop is
inconsistent. While it prevents the primary thread to be onlined, it then
onlines the corresponding hyperthread(s), which does not really make sense.

The CPU iterator in cpuhp_smt_enable() contains a check which excludes all
threads of a core, when the primary thread is offline. The default
implementation is a NOOP and therefore not effective on x86.

Implement topology_is_core_online() on x86 to address this issue. This
makes the behaviour consistent between x86 and PowerPC.

Fixes: a430c11f40 ("intel_idle: Rescan "dead" SMT siblings during initialization")
Fixes: f694481b1d ("ACPI: processor: Rescan "dead" SMT siblings during initialization")
Closes: https://lore.kernel.org/linux-pm/724616a2-6374-4ba3-8ce3-ea9c45e2ae3b@arm.com/
Reported-by: Christian Loehle <christian.loehle@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Rafael J. Wysocki (Intel) <rafael@kernel.org>
Tested-by: Christian Loehle <christian.loehle@arm.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/12740505.O9o76ZdvQC@rafael.j.wysocki
2025-09-22 21:25:36 +02:00
..
mce x86/mce: Make sure CMCI banks are cleared during shutdown on Intel 2025-06-28 12:45:48 +02:00
microcode x86/microcode/AMD: Handle the case of no BIOS microcode 2025-08-27 10:24:10 +02:00
mtrr x86/mtrr: Check if fixed-range MTRRs exist in mtrr_save_fixed_ranges() 2025-05-12 13:04:40 +02:00
resctrl x86,fs/resctrl: Remove inappropriate references to cacheinfo in the resctrl subsystem 2025-06-16 21:06:12 +02:00
sgx mm: update architecture and driver code to use vm_flags_t 2025-07-09 22:42:14 -07:00
.gitignore
Makefile x86/cpu: Consolidate CPUID leaf 0x2 tables 2025-03-25 10:23:04 +01:00
acrn.c
amd.c x86/CPU/AMD: Ignore invalid reset reason value 2025-08-18 16:36:59 +02:00
amd_cache_disable.c x86/platform/amd: Move the <asm/amd_nb.h> header to <asm/amd/nb.h> 2025-04-14 09:34:14 +02:00
aperfmperf.c x86/msr: Add explicit includes of <asm/msr.h> 2025-05-02 10:23:47 +02:00
bugs.c Mitigate VMSCAPE issue with indirect branch predictor flushes 2025-09-10 20:52:16 -07:00
bus_lock.c x86/msr: Add explicit includes of <asm/msr.h> 2025-05-02 10:23:47 +02:00
cacheinfo.c x86/cacheinfo: Rename CPUID(0x2) descriptors iterator parameter 2025-05-16 10:49:55 +02:00
centaur.c
common.c x86/vmscape: Add old Intel CPUs to affected list 2025-08-29 15:28:52 -07:00
cpu.h x86/cacheinfo: Move AMD cache_disable_0/1 handling to separate file 2025-03-25 10:22:39 +01:00
cpuid-deps.c x86/cpufeatures: Add X86_FEATURE_APX 2025-04-16 09:44:13 +02:00
cpuid_0x2_table.c x86/cpu: Consolidate CPUID leaf 0x2 tables 2025-03-25 10:23:04 +01:00
cyrix.c x86/CPU: Fix warm boot hang regression on AMD SC1100 SoC systems 2025-02-25 22:44:01 +01:00
debugfs.c x86/cpu: Prefix hexadecimal values with 0x in cpu_debug_show() 2025-02-27 13:26:53 +01:00
feat_ctl.c x86/msr: Add explicit includes of <asm/msr.h> 2025-05-02 10:23:47 +02:00
hygon.c x86/cpu/hygon: Add missing resctrl_cpu_detect() in bsp_init helper 2025-08-18 12:09:26 +02:00
hypervisor.c
intel.c x86/cpu/intel: Fix the constant_tsc model check for Pentium 4 2025-08-25 08:23:37 -07:00
intel_epb.c x86/msr: Rename 'wrmsrl_on_cpu()' to 'wrmsrq_on_cpu()' 2025-04-10 11:59:05 +02:00
match.c x86/cpu: Update x86_match_cpu() to also use cpu-type 2025-03-19 11:17:11 +01:00
mkcapflags.sh
mshyperv.c x86/msr: Add explicit includes of <asm/msr.h> 2025-05-02 10:23:47 +02:00
perfctr-watchdog.c
powerflags.c
proc.c cpufreq: Allow arch_freq_get_on_cpu to return an error 2025-02-17 18:09:20 +00:00
rdrand.c
scattered.c x86/sev: Evict cache lines during SNP memory validation 2025-08-06 19:17:22 +02:00
topology.c x86/topology: Implement topology_is_core_online() to address SMT regression 2025-09-22 21:25:36 +02:00
topology.h
topology_amd.c x86/cpu/topology: Always try cpu_parse_topology_ext() on AMD/Hygon 2025-09-08 11:37:49 +02:00
topology_common.c x86/topology: Introduce topology_logical_core_id() 2024-12-02 12:01:35 +01:00
topology_ext.c
transmeta.c
tsx.c x86/msr: Add explicit includes of <asm/msr.h> 2025-05-02 10:23:47 +02:00
umc.c
umwait.c x86/msr: Replace wrmsr(msr, low, 0) with wrmsrq(msr, low) 2025-05-02 10:36:36 +02:00
vmware.c x86/vmware: Parse MP tables for SEV-SNP enabled guests under VMware hypervisors 2025-03-13 19:01:09 +01:00
vortex.c
zhaoxin.c x86/msr: Add explicit includes of <asm/msr.h> 2025-05-02 10:23:47 +02:00