* [PM] Gracefully handle errors from device_suspend()
@ 2003-08-07 23:28 Pavel Machek
0 siblings, 0 replies; only message in thread
From: Pavel Machek @ 2003-08-07 23:28 UTC (permalink / raw)
To: kernel list, Patrick Mochel
Hi!
This makes drivers_suspend() correctly fail when some driver vetoes
the suspend. Device disable is moved after pm_send_all; that looks
more correct to me as pm_send_all may expect some mainboard devices to
still work. Few small whitespace/codingstyle fixes.
[Sorry, filename is wrong, but it should be easy to fix.]
Please apply,
Pavel
--- /usr/src/tmp/linux/kernel/suspend.c 2003-08-08 01:19:01.000000000 +0200
+++ /usr/src/linux/kernel/suspend.c 2003-08-08 01:14:26.000000000 +0200
@@ -636,19 +637,23 @@
/* Called from process context */
static int drivers_suspend(void)
{
- device_suspend(4, SUSPEND_NOTIFY);
- device_suspend(4, SUSPEND_SAVE_STATE);
- device_suspend(4, SUSPEND_DISABLE);
- if(!pm_suspend_state) {
+ if (device_suspend(4, SUSPEND_NOTIFY))
+ return -EIO;
+ if (device_suspend(4, SUSPEND_SAVE_STATE)) {
+ device_resume(RESUME_RESTORE_STATE);
+ return -EIO;
+ }
+ if (!pm_suspend_state) {
if(pm_send_all(PM_SUSPEND,(void *)3)) {
printk(KERN_WARNING "Problem while sending suspend event\n");
- return(1);
+ return -EIO;
}
pm_suspend_state=1;
} else
printk(KERN_WARNING "PM suspend state already raised\n");
+ device_suspend(4, SUSPEND_DISABLE);
- return(0);
+ return 0;
}
#define RESUME_PHASE1 1 /* Called from interrupts disabled */
@@ -661,7 +666,7 @@
device_resume(RESUME_ENABLE);
}
if (flags & RESUME_PHASE2) {
- if(pm_suspend_state) {
+ if (pm_suspend_state) {
if(pm_send_all(PM_RESUME,(void *)0))
printk(KERN_WARNING "Problem while sending resume event\n");
pm_suspend_state=0;
@@ -868,7 +873,7 @@
blk_run_queues();
/* Save state of all device drivers, and stop them. */
- if(drivers_suspend()==0)
+ if (drivers_suspend()==0)
/* If stopping device drivers worked, we proceed basically into
* suspend_save_image.
*
--
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2003-08-07 23:29 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-08-07 23:28 [PM] Gracefully handle errors from device_suspend() Pavel Machek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).