LoongArch: Do not create sysfs control file for io master CPUs
authorTiezhu Yang <yangtiezhu@loongson.cn>
Wed, 12 Oct 2022 08:36:08 +0000 (16:36 +0800)
committerHuacai Chen <chenhuacai@loongson.cn>
Wed, 12 Oct 2022 08:36:08 +0000 (16:36 +0800)
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 9cce844abf07 ("MIPS: CPU#0
is not hotpluggable").

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
arch/loongarch/include/asm/bootinfo.h
arch/loongarch/kernel/smp.c
arch/loongarch/kernel/topology.c

index 8e5881bc5ad19c57b426f5e0b97a1bcc940a008b..ed0910e8b856b8804c2d1027f44e74be8e23f620 100644 (file)
@@ -40,4 +40,9 @@ extern unsigned long fw_arg0, fw_arg1, fw_arg2;
 extern struct loongson_board_info b_info;
 extern struct loongson_system_configuration loongson_sysconf;
 
+static inline bool io_master(int cpu)
+{
+       return test_bit(cpu, &loongson_sysconf.cores_io_master);
+}
+
 #endif /* _ASM_BOOTINFO_H */
index b5fab308dcf25a3693ded821c584cee6952ead1d..781a4d4bdddc994f6f6c6c8e473382ccad1fe355 100644 (file)
@@ -240,11 +240,6 @@ void loongson3_smp_finish(void)
 
 #ifdef CONFIG_HOTPLUG_CPU
 
-static bool io_master(int cpu)
-{
-       return test_bit(cpu, &loongson_sysconf.cores_io_master);
-}
-
 int loongson3_cpu_disable(void)
 {
        unsigned long flags;
index ab1a75c0b5a64572c60c0062a2926812067cfe1c..caa7cd8590788ca39cdc27205951bc1a368fcff7 100644 (file)
@@ -5,6 +5,7 @@
 #include <linux/node.h>
 #include <linux/nodemask.h>
 #include <linux/percpu.h>
+#include <asm/bootinfo.h>
 
 static DEFINE_PER_CPU(struct cpu, cpu_devices);
 
@@ -40,7 +41,7 @@ static int __init topology_init(void)
        for_each_present_cpu(i) {
                struct cpu *c = &per_cpu(cpu_devices, i);
 
-               c->hotpluggable = !!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);