Commit 922cc38ab71d1360978e65207e4a4f4988987127

Authored by Jeremy Fitzhardinge
1 parent 499d19b82b

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);