| From 8add1ecb81f541ef2fcb0b85a5470ad9ecfb4a84 Mon Sep 17 00:00:00 2001 |
| From: Huacai Chen <chenhc@lemote.com> |
| Date: Mon, 13 Aug 2012 20:52:24 +0800 |
| Subject: MIPS: Fix poweroff failure when HOTPLUG_CPU configured. |
| |
| From: Huacai Chen <chenhc@lemote.com> |
| |
| commit 8add1ecb81f541ef2fcb0b85a5470ad9ecfb4a84 upstream. |
| |
| 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: 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> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/mips/kernel/process.c | 4 +--- |
| 1 file changed, 1 insertion(+), 3 deletions(-) |
| |
| --- a/arch/mips/kernel/process.c |
| +++ b/arch/mips/kernel/process.c |
| @@ -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(); |