MIPS: Fix poweroff failure when HOTPLUG_CPU configured.
authorHuacai Chen <chenhc@lemote.com>
Mon, 13 Aug 2012 12:52:24 +0000 (20:52 +0800)
committerRalf Baechle <ralf@linux-mips.org>
Thu, 13 Dec 2012 17:15:26 +0000 (18:15 +0100)
When poweroff machine, kernel_power_off() call disable_nonboot_cpus().
And if we have HOTPLUG_CPU configured, disable_nonboot_cpus() is not an
empty function but attempt to actually disable the nonboot cpus. Since
system state is SYSTEM_POWER_OFF, play_dead() won't be called and thus
disable_nonboot_cpus() hangs. Therefore, we make this patch to avoid
poweroff failure.

Signed-off-by: Huacai Chen <chenhc@lemote.com>
Signed-off-by: Hongliang Tao <taohl@lemote.com>
Signed-off-by: Hua Yan <yanh@lemote.com>
Cc: Yong Zhang <yong.zhang@windriver.com>
Cc: stable@vger.kernel.org
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Cc: Fuxin Zhang <zhangfx@lemote.com>
Cc: Zhangjin Wu <wuzhangjin@gmail.com>
Patchwork: https://patchwork.linux-mips.org/patch/4211/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/kernel/process.c

index e9a5fd7277f4fd580172a5630d604e443c60513d..69b17a920049c53a49aec6b0d66597e48709b551 100644 (file)
@@ -72,9 +72,7 @@ void __noreturn cpu_idle(void)
                        }
                }
 #ifdef CONFIG_HOTPLUG_CPU
-               if (!cpu_online(cpu) && !cpu_isset(cpu, cpu_callin_map) &&
-                   (system_state == SYSTEM_RUNNING ||
-                    system_state == SYSTEM_BOOTING))
+               if (!cpu_online(cpu) && !cpu_isset(cpu, cpu_callin_map))
                        play_dead();
 #endif
                rcu_idle_exit();