diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-01-13 19:15:09 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-01-13 19:15:09 -0500 |
| commit | 4f374425b625d48445e370f63c896283eb2a9bae (patch) | |
| tree | 9f8641b37ebaf18accfdc179a5701e5f7271a8e1 | |
| parent | 004b35063296b6772fa72404a35b498f1e71e87e (diff) | |
| parent | c5cae661d6cf808b6984762f763261adf35f3eb7 (diff) | |
Merge branch 'for-linus/bugfixes' of git://xenbits.xensource.com/people/ianc/linux-2.6
* 'for-linus/bugfixes' of git://xenbits.xensource.com/people/ianc/linux-2.6:
xen: fix hang on suspend.
| -rw-r--r-- | drivers/xen/manage.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/xen/manage.c b/drivers/xen/manage.c index c4997930afc7..5d42d55e299b 100644 --- a/drivers/xen/manage.c +++ b/drivers/xen/manage.c | |||
| @@ -102,15 +102,15 @@ static void do_suspend(void) | |||
| 102 | goto out_thaw; | 102 | goto out_thaw; |
| 103 | } | 103 | } |
| 104 | 104 | ||
| 105 | printk(KERN_DEBUG "suspending xenstore...\n"); | ||
| 106 | xs_suspend(); | ||
| 107 | |||
| 105 | err = dpm_suspend_noirq(PMSG_SUSPEND); | 108 | err = dpm_suspend_noirq(PMSG_SUSPEND); |
| 106 | if (err) { | 109 | if (err) { |
| 107 | printk(KERN_ERR "dpm_suspend_noirq failed: %d\n", err); | 110 | printk(KERN_ERR "dpm_suspend_noirq failed: %d\n", err); |
| 108 | goto out_resume; | 111 | goto out_resume; |
| 109 | } | 112 | } |
| 110 | 113 | ||
| 111 | printk(KERN_DEBUG "suspending xenstore...\n"); | ||
| 112 | xs_suspend(); | ||
| 113 | |||
| 114 | err = stop_machine(xen_suspend, &cancelled, cpumask_of(0)); | 114 | err = stop_machine(xen_suspend, &cancelled, cpumask_of(0)); |
| 115 | 115 | ||
| 116 | dpm_resume_noirq(PMSG_RESUME); | 116 | dpm_resume_noirq(PMSG_RESUME); |
| @@ -120,13 +120,13 @@ static void do_suspend(void) | |||
| 120 | cancelled = 1; | 120 | cancelled = 1; |
| 121 | } | 121 | } |
| 122 | 122 | ||
| 123 | out_resume: | ||
| 123 | if (!cancelled) { | 124 | if (!cancelled) { |
| 124 | xen_arch_resume(); | 125 | xen_arch_resume(); |
| 125 | xs_resume(); | 126 | xs_resume(); |
| 126 | } else | 127 | } else |
| 127 | xs_suspend_cancel(); | 128 | xs_suspend_cancel(); |
| 128 | 129 | ||
| 129 | out_resume: | ||
| 130 | dpm_resume_end(PMSG_RESUME); | 130 | dpm_resume_end(PMSG_RESUME); |
| 131 | 131 | ||
| 132 | /* Make sure timer events get retriggered on all CPUs */ | 132 | /* Make sure timer events get retriggered on all CPUs */ |
