summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Morse <james.morse@arm.com>2021-03-29 13:58:59 +0100
committerRussell King (Oracle) <rmk+kernel@armlinux.org.uk>2023-08-29 15:29:55 +0100
commit4195a899b447bfd1cf1349d81cca7005091f9103 (patch)
tree6d2a34354b581f0ebfe303589e8e487a58cd0b97
parent6f376abea52d366bcca1067ae68bcb990fdf8182 (diff)
drivers: base: Use present CPUs in GENERIC_CPU_DEVICES
The four ACPI architectures only create sysfs entries using register_cpu() for present CPUs, whereas GENERIC_CPU_DEVICES does this for possible CPUs. Only two of the eight architectures that use GENERIC_CPU_DEVICES have a distinction between present and possible CPUs. To allow all four ACPI architectures to use GENERIC_CPU_DEVICES, change it to use for_each_present_cpu(). The following architectures use GENERIC_CPU_DEVICES but are not SMP, so possible == present: * m68k * microblaze * nios2 The following architectures use GENERIC_CPU_DEVICES and consider possible == present: * csky: setup_smp() * hexagon: compare smp_start_cpus() and smp_prepare_cpus() * parisc: smp_prepare_boot_cpu() marks the boot cpu as present, processor_probe() sets possible for all CPUs and present for all CPUs except the boot cpu. um appears to be a subarchitecture of x86. The remaining architecture using GENERIC_CPU_DEVICES is openrisc, where smp_init_cpus() makes all CPUs < NR_CPUS possible, whereas smp_prepare_cpus() only makes CPUs < setup_max_cpus present. After this change, openrisc systems that boot with max_cpus=1 would not see other CPUs present in sysfs. This should not be a problem as these CPUs can't bre brought online as _cpu_up() checks cpu_present(). Signed-off-by: James Morse <james.morse@arm.com> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
-rw-r--r--drivers/base/cpu.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/base/cpu.c b/drivers/base/cpu.c
index fe6690ecf563..4a65a728c8c4 100644
--- a/drivers/base/cpu.c
+++ b/drivers/base/cpu.c
@@ -501,7 +501,7 @@ static void __init cpu_dev_register_generic(void)
#ifdef CONFIG_GENERIC_CPU_DEVICES
int i;
- for_each_possible_cpu(i) {
+ for_each_present_cpu(i) {
if (register_cpu(&per_cpu(cpu_devices, i), i))
panic("Failed to register CPU device");
}