alistair23-linux/include
Rafael J. Wysocki 1eede070a5 Introduce new top level suspend and hibernation callbacks
Introduce 'struct pm_ops' and 'struct pm_ext_ops' ('ext' meaning
'extended') representing suspend and hibernation operations for bus
types, device classes, device types and device drivers.

Modify the PM core to use 'struct pm_ops' and 'struct pm_ext_ops'
objects, if defined, instead of the ->suspend(), ->resume(),
->suspend_late(), and ->resume_early() callbacks (the old callbacks
will be considered as legacy and gradually phased out).

The main purpose of doing this is to separate suspend (aka S2RAM and
standby) callbacks from hibernation callbacks in such a way that the
new callbacks won't take arguments and the semantics of each of them
will be clearly specified.  This has been requested for multiple
times by many people, including Linus himself, and the reason is that
within the current scheme if ->resume() is called, for example, it's
difficult to say why it's been called (ie. is it a resume from RAM or
from hibernation or a suspend/hibernation failure etc.?).

The second purpose is to make the suspend/hibernation callbacks more
flexible so that device drivers can handle more than they can within
the current scheme.  For example, some drivers may need to prevent
new children of the device from being registered before their
->suspend() callbacks are executed or they may want to carry out some
operations requiring the availability of some other devices, not
directly bound via the parent-child relationship, in order to prepare
for the execution of ->suspend(), etc.

Ultimately, we'd like to stop using the freezing of tasks for suspend
and therefore the drivers' suspend/hibernation code will have to take
care of the handling of the user space during suspend/hibernation.
That, in turn, would be difficult within the current scheme, without
the new ->prepare() and ->complete() callbacks.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
2008-06-10 10:59:50 -07:00
..
acpi
asm-alpha
asm-arm [ARM] 5067/1: _raw_write_can_lock macro bugfix 2008-06-02 13:44:17 +01:00
asm-avr32
asm-blackfin Blackfin Serial Driver: Clean up BF54x macro in blackfin UART driver. 2008-06-03 12:19:45 +08:00
asm-cris
asm-frv FRV: ip_fast_csum() requires a memory clobber on its inline asm 2008-06-05 10:31:21 -07:00
asm-generic Suspend/Resume bug in PCI layer wrt quirks 2008-06-10 10:59:46 -07:00
asm-h8300 h8300: fix typo in header guard 2008-06-06 11:29:12 -07:00
asm-ia64 [IA64] Workaround for RSE issue 2008-05-27 13:24:39 -07:00
asm-m32r asm-m32r/uaccess.h must #include <asm/setup.h> 2008-06-06 11:29:13 -07:00
asm-m68k
asm-m68knommu
asm-mips [MIPS] Fix typo in header guard 2008-06-05 18:13:16 +01:00
asm-mn10300 MN10300: Fix typo in header guard 2008-05-28 07:59:06 -07:00
asm-parisc
asm-powerpc [POWERPC] Add "memory" clobber to MMIO accessors 2008-05-31 17:08:28 +10:00
asm-ppc
asm-s390 [S390] s390 types: make dma_addr_t 64 bit capable 2008-05-30 10:03:33 +02:00
asm-sh sh: fix miscompilation of ip_fast_csum with gcc >= 4.3 2008-06-02 12:40:14 +09:00
asm-sparc
asm-sparc64 sparc64: IO accessors fix 2008-05-30 02:01:28 -07:00
asm-um uml: activate_mm: remove the dead PF_BORROWED_MM check 2008-06-06 11:36:22 -07:00
asm-v850 v850: fix typo in header guard 2008-06-06 11:29:12 -07:00
asm-x86 x86: fix broken math-emu with lazy allocation of fpu area 2008-06-04 13:11:46 +02:00
asm-xtensa
crypto
keys
linux Introduce new top level suspend and hibernation callbacks 2008-06-10 10:59:50 -07:00
math-emu
media V4L/DVB (7911): Remove v4l2_video_std_fps prototype declaration 2008-06-05 06:35:42 -03:00
mtd
net sctp: Fix ECN markings for IPv6 2008-06-04 12:40:15 -07:00
pcmcia
rdma IB/core: Remove IB_DEVICE_SEND_W_INV capability flag 2008-06-09 09:58:42 -07:00
rxrpc
scsi
sound [ALSA] ac97 - Fix ASUS A9T laptop output 2008-05-30 16:20:42 +02:00
video
xen
Kbuild