mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 23:22:31 +02:00
riscv: 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. This patch also has the effect of moving the registration of CPUs from subsys to driver core initialisation, prior to any initcalls running. Signed-off-by: James Morse <james.morse@arm.com> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Acked-by: Palmer Dabbelt <palmer@rivosinc.com> Reviewed-by: Gavin Shan <gshan@redhat.com> Signed-off-by: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk> Reviewed-by: Samuel Holland <samuel.holland@sifive.com> Tested-by: Samuel Holland <samuel.holland@sifive.com> Reviewed-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/r/E1r5R4G-00Ct0M-PS@rmk-PC.armlinux.org.uk Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
13f9f0361c
commit
96cf203651
|
|
@ -71,6 +71,7 @@ config RISCV
|
|||
select GENERIC_ARCH_TOPOLOGY
|
||||
select GENERIC_ATOMIC64 if !64BIT
|
||||
select GENERIC_CLOCKEVENTS_BROADCAST if SMP
|
||||
select GENERIC_CPU_DEVICES
|
||||
select GENERIC_EARLY_IOREMAP
|
||||
select GENERIC_ENTRY
|
||||
select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO
|
||||
|
|
|
|||
|
|
@ -51,7 +51,6 @@ atomic_t hart_lottery __section(".sdata")
|
|||
#endif
|
||||
;
|
||||
unsigned long boot_cpu_hartid;
|
||||
static DEFINE_PER_CPU(struct cpu, cpu_devices);
|
||||
|
||||
/*
|
||||
* Place kernel memory regions on the resource tree so that
|
||||
|
|
@ -299,23 +298,13 @@ void __init setup_arch(char **cmdline_p)
|
|||
riscv_user_isa_enable();
|
||||
}
|
||||
|
||||
static int __init topology_init(void)
|
||||
int arch_register_cpu(int cpu)
|
||||
{
|
||||
int i, ret;
|
||||
struct cpu *c = &per_cpu(cpu_devices, cpu);
|
||||
|
||||
for_each_possible_cpu(i) {
|
||||
struct cpu *cpu = &per_cpu(cpu_devices, i);
|
||||
|
||||
cpu->hotpluggable = cpu_has_hotplug(i);
|
||||
ret = register_cpu(cpu, i);
|
||||
if (unlikely(ret))
|
||||
pr_warn("Warning: %s: register_cpu %d failed (%d)\n",
|
||||
__func__, i, ret);
|
||||
}
|
||||
|
||||
return 0;
|
||||
c->hotpluggable = cpu_has_hotplug(cpu);
|
||||
return register_cpu(c, cpu);
|
||||
}
|
||||
subsys_initcall(topology_init);
|
||||
|
||||
void free_initmem(void)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user