linux/drivers/base
Rafael J. Wysocki 2ed8d2b3a8 PM: Rework handling of interrupts during suspend-resume
Use the functions introduced in by the previous patch,
suspend_device_irqs(), resume_device_irqs() and check_wakeup_irqs(),
to rework the handling of interrupts during suspend (hibernation) and
resume.  Namely, interrupts will only be disabled on the CPU right
before suspending sysdevs, while device drivers will be prevented
from receiving interrupts, with the help of the new helper function,
before their "late" suspend callbacks run (and analogously during
resume).

In addition, since the device interrups are now disabled before the
CPU has turned all interrupts off and the CPU will ACK the interrupts
setting the IRQ_PENDING bit for them, check in sysdev_suspend() if
any wake-up interrupts are pending and abort suspend if that's the
case.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Ingo Molnar <mingo@elte.hu>
2009-03-30 21:46:54 +02:00
..
power PM: Rework handling of interrupts during suspend-resume 2009-03-30 21:46:54 +02:00
attribute_container.c driver core: struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-06 10:44:31 -08:00
base.h driver core: move knode_bus into private structure 2009-03-24 16:38:25 -07:00
bus.c driver core: move knode_bus into private structure 2009-03-24 16:38:25 -07:00
class.c driver-core: use klist for class device list and implement iterator 2008-10-09 08:56:04 +02:00
core.c Driver core: Fix device_move() vs. dpm list ordering, v2 2009-03-24 16:38:26 -07:00
cpu.c cpumask: convert misc driver functions 2009-01-11 19:12:52 +01:00
dd.c driver core: move knode_driver into private structure 2009-03-24 16:38:25 -07:00
devres.c Driver core: fix devres_release_all() return value 2007-07-11 16:09:02 -07:00
dma-mapping.c devres: device resource management 2007-02-09 17:39:36 -05:00
driver.c driver core: move knode_driver into private structure 2009-03-24 16:38:25 -07:00
firmware_class.c Driver core: implement uevent suppress in kobject 2009-03-24 16:38:26 -07:00
firmware.c firmware: change firmware_kset to firmware_kobj 2008-01-24 20:40:23 -08:00
hypervisor.c kobject: convert /sys/hypervisor to use kobject_create 2008-01-24 20:40:15 -08:00
init.c Driver core: coding style fixes 2008-01-24 22:50:12 -08:00
iommu.c add frontend implementation for the IOMMU API 2009-01-03 14:10:09 +01:00
isa.c driver core: struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-06 10:44:31 -08:00
Kconfig trivial: Fix misspelled firmware in Kconfig 2009-01-06 11:28:07 +01:00
Makefile select IOMMU_API when DMAR and/or AMD_IOMMU is selected 2009-01-03 14:10:09 +01:00
map.c [PATCH] kobj_map semaphore to mutex conversion 2006-03-20 13:42:58 -08:00
memory.c mm: show node to memory section relationship with symlinks in sysfs 2009-01-06 15:59:00 -08:00
module.c Driver core: move the static kobject out of struct driver 2008-01-24 20:40:35 -08:00
node.c mm: get_nid_for_pfn() returns int 2009-03-10 15:55:10 -07:00
platform.c driver core: fix passing platform_data 2009-03-24 16:38:26 -07:00
sys.c PM: Rework handling of interrupts during suspend-resume 2009-03-30 21:46:54 +02:00
topology.c cpumask: Use topology_core_cpumask()/topology_thread_cpumask() 2009-01-11 19:12:49 +01:00
transport_class.c SCSI: convert struct class_device to struct device 2008-04-19 19:10:33 -07:00