kernel-ark/drivers/acpi
Rafael J. Wysocki c7e0831d38 Hibernation: Check if ACPI is enabled during restore in the right place
The following scenario leads to total confusion of the platform firmware on
some boxes (eg. HPC nx6325):
* Hibernate with ACPI enabled
* Resume passing "acpi=off" to the boot kernel

To prevent this from happening it's necessary to check if ACPI is enabled (and
enable it if that's not the case) _right_ _after_ control has been transfered
from the boot kernel to the image kernel, before device_power_up() is called
(ie.  with interrupts disabled).   Enabling ACPI after calling
device_power_up() turns out to be insufficient.

For this reason, introduce new hibernation callback ->leave() that will be
executed before device_power_up() by the restored image kernel.   To make it
work, it also is necessary to move swsusp_suspend() from swsusp.c to disk.c
(it's name is changed to "create_image", which is more up to the point).

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-10-18 14:37:20 -07:00
..
dispatcher ACPICA: Lindent 2007-05-09 23:34:35 -04:00
events ACPI: autoload modules - ACPICA modifications 2007-07-23 13:56:00 -04:00
executer ACPICA: Lindent 2007-05-09 23:34:35 -04:00
hardware ACPI: enable GPEs before calling _WAK on resume 2007-08-24 01:24:47 -04:00
namespace ACPI: Fix a warning of discarding qualifiers from pointer target type 2007-08-25 01:38:40 -04:00
parser ACPICA: Lindent 2007-05-09 23:34:35 -04:00
resources fix compilation with gcc 4.2 2007-08-11 15:47:42 -07:00
sleep Hibernation: Check if ACPI is enabled during restore in the right place 2007-10-18 14:37:20 -07:00
tables ACPI: Validate XSDT, use RSDT if XSDT fails 2007-08-24 18:46:25 -04:00
utilities ACPI: add dump_stack() to trace acpi_format_exception programming errors 2007-08-25 01:39:02 -04:00
ac.c ACPI: Schedule /proc/acpi/event for removal 2007-08-23 15:20:26 -04:00
acpi_memhotplug.c ACPI: autoload modules - Create __mod_acpi_device_table symbol for all ACPI drivers 2007-07-23 13:56:42 -04:00
asus_acpi.c ACPI: Schedule /proc/acpi/event for removal 2007-08-23 15:20:26 -04:00
battery.c Pull events into release branch 2007-08-25 01:44:01 -04:00
bay.c ACPI: bay: send envp with uevent - fix 2007-08-11 22:10:04 -04:00
blacklist.c ACPI: make blacklist more verbose 2007-03-09 21:19:05 -05:00
bus.c kobjects: fix up improper use of the kobject name field 2007-10-12 14:51:02 -07:00
button.c ACPI: Schedule /proc/acpi/event for removal 2007-08-23 15:20:26 -04:00
cm_sbs.c ACPI: clean up ACPI_MODULE_NAME() use 2007-02-12 22:42:12 -05:00
container.c ACPI: autoload modules - Create __mod_acpi_device_table symbol for all ACPI drivers 2007-07-23 13:56:42 -04:00
debug.c ACPI: clean up ACPI_MODULE_NAME() use 2007-02-12 22:42:12 -05:00
dock.c ACPI: dock: Send key=value pair instead of plain value 2007-08-11 22:12:10 -04:00
ec.c ACPI: EC: Check if boot_ec was really found in DSDT 2007-08-30 22:20:13 -07:00
event.c ACPI: fix CONFIG_NET=n acpi_bus_generate_netlink_event build failure 2007-09-03 11:15:11 -04:00
fan.c ACPI: autoload modules - Create __mod_acpi_device_table symbol for all ACPI drivers 2007-07-23 13:56:42 -04:00
glue.c ACPI: fix empty macros found by -Wextra 2007-07-22 00:54:24 -04:00
Kconfig reverse CONFIG_ACPI_PROC_EVENT default 2007-08-27 10:27:48 -07:00
Makefile Pull sbs into release branch 2007-04-28 23:16:59 -04:00
numa.c x86_64: fake pxm-to-node mapping for fake numa 2007-07-21 18:37:10 -07:00
osl.c drivers/firmware: const-ify DMI API and internals 2007-10-09 20:22:20 -04:00
pci_bind.c ACPI: clean up ACPI_MODULE_NAME() use 2007-02-12 22:42:12 -05:00
pci_irq.c ACPI: clean up ACPI_MODULE_NAME() use 2007-02-12 22:42:12 -05:00
pci_link.c ACPI: autoload modules - Create __mod_acpi_device_table symbol for all ACPI drivers 2007-07-23 13:56:42 -04:00
pci_root.c ACPI: autoload modules - Create __mod_acpi_device_table symbol for all ACPI drivers 2007-07-23 13:56:42 -04:00
power.c ACPI: autoload modules - Create __mod_acpi_device_table symbol for all ACPI drivers 2007-07-23 13:56:42 -04:00
processor_core.c ACPI: disable lower idle C-states across suspend/resume 2007-09-22 17:15:34 -07:00
processor_idle.c ACPI: remove the now unused ifdef code 2007-10-12 23:04:23 +02:00
processor_perflib.c acpi-cpufreq: Fix some x86/x86-64 acpi-cpufreq driver issues 2007-08-07 18:40:30 -04:00
processor_thermal.c ACPI: delete extra #defines in /drivers/acpi/ drivers 2007-02-12 23:50:52 -05:00
processor_throttling.c ACPI: quiet ACPI Exceptions due to no _PTC or _TSS 2007-07-25 00:57:46 -04:00
sbs.c ACPI: Schedule /proc/acpi/event for removal 2007-08-23 15:20:26 -04:00
scan.c Driver core: change add_uevent_var to use a struct 2007-10-12 14:51:01 -07:00
system.c ACPI: Populate /sys/firmware/acpi/tables/ 2007-07-22 02:42:45 -04:00
tables.c Revert "ACPI: parse 2nd MADT by default" 2007-03-30 14:16:10 -04:00
thermal.c drivers/firmware: const-ify DMI API and internals 2007-10-09 20:22:20 -04:00
toshiba_acpi.c more trivial signedness fixes in drivers 2007-10-14 12:41:52 -07:00
utils.c ACPI: clean up ACPI_MODULE_NAME() use 2007-02-12 22:42:12 -05:00
video.c Convert from class_device to device for drivers/video 2007-10-12 14:51:04 -07:00