diff options
| -rw-r--r-- | arch/powerpc/kernel/machine_kexec_64.c | 2 | ||||
| -rw-r--r-- | kernel/kexec.c | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/machine_kexec_64.c b/arch/powerpc/kernel/machine_kexec_64.c index 59d229a2a3e0..879b3aacac32 100644 --- a/arch/powerpc/kernel/machine_kexec_64.c +++ b/arch/powerpc/kernel/machine_kexec_64.c | |||
| @@ -237,7 +237,7 @@ static void wake_offline_cpus(void) | |||
| 237 | if (!cpu_online(cpu)) { | 237 | if (!cpu_online(cpu)) { |
| 238 | printk(KERN_INFO "kexec: Waking offline cpu %d.\n", | 238 | printk(KERN_INFO "kexec: Waking offline cpu %d.\n", |
| 239 | cpu); | 239 | cpu); |
| 240 | cpu_up(cpu); | 240 | WARN_ON(cpu_up(cpu)); |
| 241 | } | 241 | } |
| 242 | } | 242 | } |
| 243 | } | 243 | } |
diff --git a/kernel/kexec.c b/kernel/kexec.c index c8380ad203bc..28c57069ef68 100644 --- a/kernel/kexec.c +++ b/kernel/kexec.c | |||
| @@ -1683,6 +1683,14 @@ int kernel_kexec(void) | |||
| 1683 | kexec_in_progress = true; | 1683 | kexec_in_progress = true; |
| 1684 | kernel_restart_prepare(NULL); | 1684 | kernel_restart_prepare(NULL); |
| 1685 | migrate_to_reboot_cpu(); | 1685 | migrate_to_reboot_cpu(); |
| 1686 | |||
| 1687 | /* | ||
| 1688 | * migrate_to_reboot_cpu() disables CPU hotplug assuming that | ||
| 1689 | * no further code needs to use CPU hotplug (which is true in | ||
| 1690 | * the reboot case). However, the kexec path depends on using | ||
| 1691 | * CPU hotplug again; so re-enable it here. | ||
| 1692 | */ | ||
| 1693 | cpu_hotplug_enable(); | ||
| 1686 | printk(KERN_EMERG "Starting new kernel\n"); | 1694 | printk(KERN_EMERG "Starting new kernel\n"); |
| 1687 | machine_shutdown(); | 1695 | machine_shutdown(); |
| 1688 | } | 1696 | } |
