From 36b6b84b825f6788598f3fc9980ab3ec42d897d3 Mon Sep 17 00:00:00 2001 From: "Rafael J. Wysocki" Date: Mon, 16 Mar 2009 22:34:35 +0100 Subject: [PATCH] --- yaml --- r: 139003 b: refs/heads/master c: 749b0afc3a9d90dda3319fd1464a3b32fc225361 h: refs/heads/master i: 139001: b67ce37ece83c7f833ef488b2764949edb3d126d 138999: eae1bed2a2ff0d52902a51da835ca4697f868b1f v: v3 --- [refs] | 2 +- trunk/kernel/kexec.c | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/[refs] b/[refs] index 789761b99418..c5c6a65703b1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4aecd6718939eb3c4145b248369b65f7483a8a02 +refs/heads/master: 749b0afc3a9d90dda3319fd1464a3b32fc225361 diff --git a/trunk/kernel/kexec.c b/trunk/kernel/kexec.c index dade9af6bf21..93eed85fe017 100644 --- a/trunk/kernel/kexec.c +++ b/trunk/kernel/kexec.c @@ -1450,9 +1450,6 @@ int kernel_kexec(void) error = device_suspend(PMSG_FREEZE); if (error) goto Resume_console; - error = disable_nonboot_cpus(); - if (error) - goto Resume_devices; device_pm_lock(); /* At this point, device_suspend() has been called, * but *not* device_power_down(). We *must* @@ -1463,13 +1460,15 @@ int kernel_kexec(void) */ error = device_power_down(PMSG_FREEZE); if (error) - goto Unlock_pm; - + goto Resume_devices; + error = disable_nonboot_cpus(); + if (error) + goto Enable_cpus; local_irq_disable(); /* Suspend system devices */ error = sysdev_suspend(PMSG_FREEZE); if (error) - goto Power_up_devices; + goto Enable_irqs; } else #endif { @@ -1483,13 +1482,13 @@ int kernel_kexec(void) #ifdef CONFIG_KEXEC_JUMP if (kexec_image->preserve_context) { sysdev_resume(); - Power_up_devices: + Enable_irqs: local_irq_enable(); - device_power_up(PMSG_RESTORE); - Unlock_pm: - device_pm_unlock(); + Enable_cpus: enable_nonboot_cpus(); + device_power_up(PMSG_RESTORE); Resume_devices: + device_pm_unlock(); device_resume(PMSG_RESTORE); Resume_console: resume_console();