diff options
author | James Morse <james.morse@arm.com> | 2022-07-07 16:17:48 +0100 |
---|---|---|
committer | Russell King (Oracle) <rmk+kernel@armlinux.org.uk> | 2023-08-29 15:30:00 +0100 |
commit | db5908c82a9c9867e8e594ab156a9f90f0b00fea (patch) | |
tree | c2298e3a66ed6271a9e78ed3a1b11496dcc4b8c4 | |
parent | b780069399ebfda70817deed5984bdae57dc5abd (diff) |
LoongArch: Switch over to GENERIC_CPU_DEVICES
Now that GENERIC_CPU_DEVICES calls arch_register_cpu(), which can be
overridden by the arch code, switch over to this to allow common code
to choose when the register_cpu() call is made.
This allows topology_init() to be removed.
This is an intermediate step to the logic being moved to drivers/acpi,
where GENERIC_CPU_DEVICES will do the work when booting with acpi=off.
Signed-off-by: James Morse <james.morse@arm.com>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
-rw-r--r-- | arch/loongarch/Kconfig | 1 | ||||
-rw-r--r-- | arch/loongarch/kernel/topology.c | 22 |
2 files changed, 2 insertions, 21 deletions
diff --git a/arch/loongarch/Kconfig b/arch/loongarch/Kconfig index 3ec2ed070409..1e9bb1be35d7 100644 --- a/arch/loongarch/Kconfig +++ b/arch/loongarch/Kconfig @@ -70,6 +70,7 @@ config LOONGARCH select GENERIC_CLOCKEVENTS select GENERIC_CMOS_UPDATE select GENERIC_CPU_AUTOPROBE + select GENERIC_CPU_DEVICES select GENERIC_ENTRY select GENERIC_GETTIMEOFDAY select GENERIC_IOREMAP if !ARCH_IOREMAP diff --git a/arch/loongarch/kernel/topology.c b/arch/loongarch/kernel/topology.c index caa7cd859078..a86d51269b09 100644 --- a/arch/loongarch/kernel/topology.c +++ b/arch/loongarch/kernel/topology.c @@ -7,15 +7,13 @@ #include <linux/percpu.h> #include <asm/bootinfo.h> -static DEFINE_PER_CPU(struct cpu, cpu_devices); - #ifdef CONFIG_HOTPLUG_CPU int arch_register_cpu(int cpu) { int ret; struct cpu *c = &per_cpu(cpu_devices, cpu); - c->hotpluggable = 1; + c->hotpluggable = !io_master(cpu); ret = register_cpu(c, cpu); if (ret < 0) pr_warn("register_cpu %d failed (%d)\n", cpu, ret); @@ -33,21 +31,3 @@ void arch_unregister_cpu(int cpu) } EXPORT_SYMBOL(arch_unregister_cpu); #endif - -static int __init topology_init(void) -{ - int i, ret; - - for_each_present_cpu(i) { - struct cpu *c = &per_cpu(cpu_devices, i); - - c->hotpluggable = !io_master(i); - ret = register_cpu(c, i); - if (ret < 0) - pr_warn("topology_init: register_cpu %d failed (%d)\n", i, ret); - } - - return 0; -} - -subsys_initcall(topology_init); |