lkml.org 
[lkml]   [2004]   [Nov]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Subject[PATCH] make pm_suspend_disk suspend/resume sysdev and dpm_off_irq
Date
From

Hi,

This patch makes the new swsusp code ( pm_suspend_disk since 2.6.9-rc3)
call suspend/resume functions for sysdev and devices in dpm_off_irq
list.
Otherwise, PCI link device in the system won't provide correct interrupt
for PCI
devices during resume.

See the real bug report here:
http://www.bughost.org/bugzilla/show_bug.cgi?id=363

Thanks,
-yi


Signed-off-by: Zhu Yi <yi.zhu@intel.com>

diff -urp a/kernel/power/disk.c b/kernel/power/disk.c
--- a/kernel/power/disk.c 2004-11-12 05:45:35.000000000 +0800
+++ b/kernel/power/disk.c 2004-11-21 06:21:28.162720936 +0800
@@ -113,6 +113,11 @@ static inline void platform_finish(void)

static void finish(void)
{
+ unsigned long flags;
+
+ local_irq_save(flags);
+ device_power_up();
+ local_irq_restore(flags);
device_resume();
platform_finish();
enable_nonboot_cpus();
@@ -124,6 +129,7 @@ static void finish(void)
static int prepare(void)
{
int error;
+ unsigned long flags;

pm_prepare_console();

@@ -147,7 +153,14 @@ static int prepare(void)
if ((error = device_suspend(PM_SUSPEND_DISK)))
goto Finish;

+ local_irq_save(flags);
+ if ((error = device_power_down(PM_SUSPEND_DISK))) {
+ local_irq_restore(flags);
+ goto Finish;
+ }
+ local_irq_restore(flags);
return 0;
+
Finish:
platform_finish();
Thaw:
diff -urp a/kernel/power/swsusp.c b/kernel/power/swsusp.c
--- a/kernel/power/swsusp.c 2004-11-12 05:45:35.000000000 +0800
+++ b/kernel/power/swsusp.c 2004-11-21 06:18:55.734893488 +0800
@@ -829,6 +829,11 @@ int suspend_prepare_image(void)
int swsusp_write(void)
{
int error;
+ unsigned long flags;
+
+ local_irq_save(flags);
+ device_power_up();
+ local_irq_restore(flags);
device_resume();
lock_swapdevices();
error = write_suspend_image();[unhandled content-type:application/octet-stream]
\
 
 \ /
  Last update: 2005-03-22 14:08    [W:0.027 / U:0.328 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site