1

ARM: 9411/1: Switch over to GENERIC_CPU_DEVICES using arch_register_cpu()

Currently, almost all architectures have switched to GENERIC_CPU_DEVICES,
except for arm32. Also switch over to GENERIC_CPU_DEVICES, and provide an
arch_register_cpu() that populates the hotpluggable flag for arm32.

The struct cpu in struct cpuinfo_arm is never used directly, remove
it to use the one GENERIC_CPU_DEVICES provides.

This also has the effect of moving the registration of CPUs from subsys to
driver core initialisation, prior to any initcalls running.

Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
This commit is contained in:
Jinjie Ruan 2024-07-31 10:17:55 +01:00 committed by Russell King (Oracle)
parent 89a906dfa8
commit 609face018
3 changed files with 5 additions and 12 deletions

View File

@ -64,6 +64,7 @@ config ARM
select GENERIC_CLOCKEVENTS_BROADCAST if SMP select GENERIC_CLOCKEVENTS_BROADCAST if SMP
select GENERIC_IRQ_IPI if SMP select GENERIC_IRQ_IPI if SMP
select GENERIC_CPU_AUTOPROBE select GENERIC_CPU_AUTOPROBE
select GENERIC_CPU_DEVICES
select GENERIC_EARLY_IOREMAP select GENERIC_EARLY_IOREMAP
select GENERIC_IDLE_POLL_SETUP select GENERIC_IDLE_POLL_SETUP
select GENERIC_IRQ_MULTI_HANDLER select GENERIC_IRQ_MULTI_HANDLER

View File

@ -11,7 +11,6 @@
#include <linux/cpu.h> #include <linux/cpu.h>
struct cpuinfo_arm { struct cpuinfo_arm {
struct cpu cpu;
u32 cpuid; u32 cpuid;
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
unsigned int loops_per_jiffy; unsigned int loops_per_jiffy;

View File

@ -1201,20 +1201,13 @@ void __init setup_arch(char **cmdline_p)
mdesc->init_early(); mdesc->init_early();
} }
int arch_register_cpu(int num)
static int __init topology_init(void)
{ {
int cpu; struct cpu *cpu = &per_cpu(cpu_devices, num);
for_each_possible_cpu(cpu) { cpu->hotpluggable = platform_can_hotplug_cpu(num);
struct cpuinfo_arm *cpuinfo = &per_cpu(cpu_data, cpu); return register_cpu(cpu, num);
cpuinfo->cpu.hotpluggable = platform_can_hotplug_cpu(cpu);
register_cpu(&cpuinfo->cpu, cpu);
}
return 0;
} }
subsys_initcall(topology_init);
#ifdef CONFIG_HAVE_PROC_CPU #ifdef CONFIG_HAVE_PROC_CPU
static int __init proc_cpu_init(void) static int __init proc_cpu_init(void)