Commit 922cc38ab71d1360978e65207e4a4f4988987127
1 parent
499d19b82b
Exists in
master
and in
7 other branches
xen: don't call dpm_resume_noirq() with interrupts disabled.
dpm_resume_noirq() takes a mutex, so it can't be called from a no-interrupt context. Don't call it from within the stop-machine function, but just afterwards, since we're resuming anyway, regardless of what happened. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Cc: Stable Kernel <stable@kernel.org>
Showing 1 changed file with 3 additions and 4 deletions Side-by-side Diff
drivers/xen/manage.c
... | ... | @@ -43,7 +43,6 @@ |
43 | 43 | if (err) { |
44 | 44 | printk(KERN_ERR "xen_suspend: sysdev_suspend failed: %d\n", |
45 | 45 | err); |
46 | - dpm_resume_noirq(PMSG_RESUME); | |
47 | 46 | return err; |
48 | 47 | } |
49 | 48 | |
... | ... | @@ -69,7 +68,6 @@ |
69 | 68 | } |
70 | 69 | |
71 | 70 | sysdev_resume(); |
72 | - dpm_resume_noirq(PMSG_RESUME); | |
73 | 71 | |
74 | 72 | return 0; |
75 | 73 | } |
... | ... | @@ -108,6 +106,9 @@ |
108 | 106 | } |
109 | 107 | |
110 | 108 | err = stop_machine(xen_suspend, &cancelled, cpumask_of(0)); |
109 | + | |
110 | + dpm_resume_noirq(PMSG_RESUME); | |
111 | + | |
111 | 112 | if (err) { |
112 | 113 | printk(KERN_ERR "failed to start xen_suspend: %d\n", err); |
113 | 114 | goto out; |
... | ... | @@ -118,8 +119,6 @@ |
118 | 119 | xs_resume(); |
119 | 120 | } else |
120 | 121 | xs_suspend_cancel(); |
121 | - | |
122 | - dpm_resume_noirq(PMSG_RESUME); | |
123 | 122 | |
124 | 123 | resume_devices: |
125 | 124 | dpm_resume_end(PMSG_RESUME); |