From 87903ac513143420876cf1310e352a532157e035 Mon Sep 17 00:00:00 2001 From: Michael Schierl Date: Thu, 29 Jan 2004 06:08:53 -0800 Subject: [PATCH] [PATCH] [APM] Is this the correct way to fix suspend bug introduced This fixes my APM problems (without them my laptop, Acer TravelMate 210TEV (Celeron 700, 128 MB RAM), hangs after resuming from APM since 2.6.0-test4). Modified based on comments from Pavel Machek , who has acked the updated patch. --- arch/i386/kernel/apm.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/i386/kernel/apm.c b/arch/i386/kernel/apm.c index 2212132dacfb3..75b2a8c4ae89c 100644 --- a/arch/i386/kernel/apm.c +++ b/arch/i386/kernel/apm.c @@ -1201,6 +1201,7 @@ static int suspend(int vetoable) } device_suspend(3); + device_power_down(3); /* serialize with the timer interrupt */ write_seqlock_irq(&xtime_lock); @@ -1234,6 +1235,7 @@ static int suspend(int vetoable) if (err != APM_SUCCESS) apm_error("suspend", err); err = (err == APM_SUCCESS) ? 0 : -EIO; + device_power_up(); device_resume(); pm_send_all(PM_RESUME, (void *)0); queue_event(APM_NORMAL_RESUME, NULL); @@ -1252,6 +1254,7 @@ static void standby(void) { int err; + device_power_down(3); /* serialize with the timer interrupt */ write_seqlock_irq(&xtime_lock); /* If needed, notify drivers here */ @@ -1261,6 +1264,7 @@ static void standby(void) err = set_system_power_state(APM_STATE_STANDBY); if ((err != APM_SUCCESS) && (err != APM_NO_ERROR)) apm_error("standby", err); + device_power_up(); } static apm_event_t get_event(void) -- 2.53.0