mirror of
https://github.com/torvalds/linux.git
synced 2024-12-05 10:32:35 +00:00
a522b7ad8e
Now io master CPUs are not hotpluggable on LoongArch, but in the current
code only /sys/devices/system/cpu/cpu0/online is not created. Let us set
the hotpluggable field of all the io master CPUs as 0, then prevent to
create sysfs control file for all the io master CPUs which confuses some
user space tools. This is similar with commit 9cce844abf
("MIPS: CPU#0
is not hotpluggable").
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
54 lines
1.0 KiB
C
54 lines
1.0 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
#include <linux/cpu.h>
|
|
#include <linux/cpumask.h>
|
|
#include <linux/init.h>
|
|
#include <linux/node.h>
|
|
#include <linux/nodemask.h>
|
|
#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;
|
|
ret = register_cpu(c, cpu);
|
|
if (ret < 0)
|
|
pr_warn("register_cpu %d failed (%d)\n", cpu, ret);
|
|
|
|
return ret;
|
|
}
|
|
EXPORT_SYMBOL(arch_register_cpu);
|
|
|
|
void arch_unregister_cpu(int cpu)
|
|
{
|
|
struct cpu *c = &per_cpu(cpu_devices, cpu);
|
|
|
|
c->hotpluggable = 0;
|
|
unregister_cpu(c);
|
|
}
|
|
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);
|