linux/kernel/power
Linus Torvalds 52ade9b3b9 Fix ACPI suspend / device suspend ordering problem
In commit e3c7db621b we fixed the resume
ordering, so that the ACPI low-level resume code was called before the
actual driver resume was called. However, that broke the nesting logic
of suspend and resume, and we continued to suspend the devices _after_
we the ACPI device suspend code was called.

That resulted in us saving PCI state for devices that had already been
changed by ACPI, and in some cases disabled entirely (causing the PCI
save_state to be all-ones).  Which in turn caused the wrong state to be
written back on resume.

This moves the ACPI device suspend to after the device model per-device
suspend() calls. This fixes the bogus state save.

Thanks to Lukáš Hejtmánek for testing.

Acked-by: Lukas Hejtmanek <xhejtman@ics.muni.cz>
Acked-by: Rafael J. Wysocki <rjw@sisk.pl>
Cc: Len Brown <len.brown@intel.com>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-16 15:33:19 -07:00
..
console.c [PATCH] swsusp: fix suspend when console is in VT_AUTO+KD_GRAPHICS mode 2007-03-16 19:25:05 -07:00
disk.c PM: Separate hibernation code from suspend code 2007-05-09 12:30:48 -07:00
Kconfig Merge branch 'linux-2.6' 2007-05-08 13:37:51 +10:00
main.c Fix ACPI suspend / device suspend ordering problem 2007-05-16 15:33:19 -07:00
Makefile [PATCH] Disable CPU hotplug during suspend 2006-09-26 08:48:59 -07:00
pm.c [PATCH] remove kernel/power/pm.c:pm_unregister_all() 2006-07-12 16:09:08 -07:00
power.h PM: Separate hibernation code from suspend code 2007-05-09 12:30:48 -07:00
poweroff.c WorkStruct: Pass the work_struct pointer instead of context data 2006-11-22 14:55:48 +00:00
process.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
snapshot.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2007-05-09 12:56:01 -07:00
swap.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
swsusp.c swsusp: free more memory 2007-05-07 12:12:59 -07:00
user.c PM: Separate hibernation code from suspend code 2007-05-09 12:30:48 -07:00