On 12/15/2020 11:26 AM, liwei (GF) wrote:
Hi,

On 2020/11/25 18:11, Tiezhu Yang wrote:
After commit 9cce844abf07 ("MIPS: CPU#0 is not hotpluggable"),
Why CPU#0 is not hotpluggable on MIPS? Does that unrealizable?

The early discussion is here:
https://patchwork.kernel.org/project/linux-mips/patch/1594896024-16624-1-git-send-email-che...@lemote.com/

As Jiaxun said, it seems that this is a software limitation.
I think the initial aim of commit 9cce844abf07 ("MIPS: CPU#0 is not hotpluggable")
is to solve ltp test failure.


c->hotpluggable is 0 for CPU 0 and it will not generate a control
file in sysfs for this CPU:

[root@linux loongson]# cat /sys/devices/system/cpu/cpu0/online
cat: /sys/devices/system/cpu/cpu0/online: No such file or directory
[root@linux loongson]# echo 0 > /sys/devices/system/cpu/cpu0/online
bash: /sys/devices/system/cpu/cpu0/online: Permission denied

So no need to check CPU 0 in {loongson3,bmips,octeon}_cpu_disable(),
missing cps_cpu_disable()?

Yes, thank you, let me send a patch to do it.

Thanks,
Tiezhu


Thanks,
Wei

just remove them.

Signed-off-by: Tiezhu Yang <yangtie...@loongson.cn>
---
  arch/mips/cavium-octeon/smp.c | 3 ---
  arch/mips/kernel/smp-bmips.c  | 3 ---
  arch/mips/loongson64/smp.c    | 3 ---
  3 files changed, 9 deletions(-)

diff --git a/arch/mips/cavium-octeon/smp.c b/arch/mips/cavium-octeon/smp.c
index 076db9a..66ce552 100644
--- a/arch/mips/cavium-octeon/smp.c
+++ b/arch/mips/cavium-octeon/smp.c
@@ -290,9 +290,6 @@ static int octeon_cpu_disable(void)
  {
        unsigned int cpu = smp_processor_id();
- if (cpu == 0)
-               return -EBUSY;
-
        if (!octeon_bootloader_entry_addr)
                return -ENOTSUPP;
diff --git a/arch/mips/kernel/smp-bmips.c b/arch/mips/kernel/smp-bmips.c
index 1dbfb5a..359b176 100644
--- a/arch/mips/kernel/smp-bmips.c
+++ b/arch/mips/kernel/smp-bmips.c
@@ -362,9 +362,6 @@ static int bmips_cpu_disable(void)
  {
        unsigned int cpu = smp_processor_id();
- if (cpu == 0)
-               return -EBUSY;
-
        pr_info("SMP: CPU%d is offline\n", cpu);
set_cpu_online(cpu, false);
diff --git a/arch/mips/loongson64/smp.c b/arch/mips/loongson64/smp.c
index aa0cd72..b8c1fc3 100644
--- a/arch/mips/loongson64/smp.c
+++ b/arch/mips/loongson64/smp.c
@@ -544,9 +544,6 @@ static int loongson3_cpu_disable(void)
        unsigned long flags;
        unsigned int cpu = smp_processor_id();
- if (cpu == 0)
-               return -EBUSY;
-
        set_cpu_online(cpu, false);
        calculate_cpu_foreign_map();
        local_irq_save(flags);


Reply via email to