Sorry, I meant executing _WAK _after_ resume of devices... Alex. On 5/4/07, Alexey Starikovskiy <aystarik@xxxxxxxxx> wrote:
Doing _WAK (from pm_finish) before device_resume will brake almost all ACPI devices. Regards, Alex. On 5/4/07, Rafael J. Wysocki <rjw@xxxxxxx> wrote: > Hi, > > The change of the hibernation/suspend code ordering made before 2.6.21 has > caused some systems to have problems related to ACPI. In particular, the > 'platform' hibernation mode doesn't work any more on some systems. > > It has been confirmed that the appended patch fixes the problem, but it's not > certain if this changes don't break some other systems. For this reason, all > users of hibernation (swsusp, uswsusp) are gently requested to verify if this > patch doesn't break their systems. > > Greetings, > Rafael > > --- > From: Rafael J. Wysocki <rjw@xxxxxxx> > > The current code ordering in the hibernation code paths causes some systems to > have problems. It has been confirmed by testers that these problems do not > appear if the acpi_pm_finish() function (called via platform_finish()) is > executed after device_suspend(). > > Signed-off-by: Rafael J. Wysocki <rjw@xxxxxxx> > --- > kernel/power/disk.c | 4 ++-- > kernel/power/user.c | 8 ++++---- > 2 files changed, 6 insertions(+), 6 deletions(-) > > Index: linux-2.6.21/kernel/power/disk.c > =================================================================== > --- linux-2.6.21.orig/kernel/power/disk.c 2007-05-04 10:31:51.000000000 +0200 > +++ linux-2.6.21/kernel/power/disk.c 2007-05-04 10:32:12.000000000 +0200 > @@ -195,9 +195,9 @@ int hibernate(void) > > if (in_suspend) { > enable_nonboot_cpus(); > - platform_finish(); > device_resume(); > resume_console(); > + platform_finish(); > pr_debug("PM: writing image.\n"); > error = swsusp_write(); > if (!error) > @@ -214,9 +214,9 @@ int hibernate(void) > Enable_cpus: > enable_nonboot_cpus(); > Resume_devices: > - platform_finish(); > device_resume(); > resume_console(); > + platform_finish(); > Thaw: > mutex_unlock(&pm_mutex); > unprepare_processes(); > Index: linux-2.6.21/kernel/power/user.c > =================================================================== > --- linux-2.6.21.orig/kernel/power/user.c 2007-05-04 10:31:51.000000000 +0200 > +++ linux-2.6.21/kernel/power/user.c 2007-05-04 10:32:12.000000000 +0200 > @@ -169,11 +169,11 @@ static inline int snapshot_suspend(int p > } > enable_nonboot_cpus(); > Resume_devices: > + device_resume(); > + resume_console(); > if (platform_suspend) > platform_finish(); > > - device_resume(); > - resume_console(); > Finish: > mutex_unlock(&pm_mutex); > return error; > @@ -201,11 +201,11 @@ static inline int snapshot_restore(int p > > enable_nonboot_cpus(); > Resume_devices: > + device_resume(); > + resume_console(); > if (platform_suspend) > platform_finish(); > > - device_resume(); > - resume_console(); > Finish: > pm_restore_console(); > mutex_unlock(&pm_mutex); > _______________________________________________ > linux-pm mailing list > linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx > https://lists.linux-foundation.org/mailman/listinfo/linux-pm >
_______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm