aha/drivers
Rafael J. Wysocki aa8c6c9374 PCI PM: Restore standard config registers of all devices early
There is a problem in our handling of suspend-resume of PCI devices that
many of them have their standard config registers restored with
interrupts enabled and they are put into the full power state with
interrupts enabled as well.  This may lead to the following scenario:
  * an interrupt vector is shared between two or more devices
  * one device is resumed earlier and generates an interrupt
  * the interrupt handler of another device tries to handle it and
    attempts to access the device the config space of which hasn't been
    restored yet and/or which still is in a low power state
  * the system crashes as a result

To prevent this from happening we should restore the standard
configuration registers of all devices with interrupts disabled and we
should put them into the D0 power state right after that.
Unfortunately, this cannot be done using the existing
pci_set_power_state(), because it can sleep.  Also, to do it we have to
make sure that the config spaces of all devices were actually saved
during suspend.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
2009-01-16 12:57:58 -08:00
..
accessibility
acpi Merge branch 'drivers-platform' into release 2009-01-09 04:56:56 -05:00
amba [ARM] Fix realview build 2009-01-08 16:29:41 +00:00
ata sata_fsl: Return non-zero on error in probe() 2009-01-16 10:23:58 -05:00
atm generic swap(): iphase: rename swap() to swap_byte_order() 2009-01-08 08:31:14 -08:00
auxdisplay
base Revert "driver core: create a private portion of struct device" 2009-01-09 15:06:12 -08:00
block powerpc/ps3: Printing fixups for l64 to ll64 conversion drivers/block 2009-01-16 16:15:13 +11:00
bluetooth
cdrom
char hvc_console: Remove tty->low_latency 2009-01-16 16:15:16 +11:00
clocksource
connector
cpufreq Merge branch 'cpus4096-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-01-10 06:12:18 -08:00
cpuidle
crypto
dca
dio m68k: dio - Kill resource_size_t format warnings 2009-01-12 20:56:42 +01:00
dma
edac
eisa
firewire firewire: core: fix sleep in atomic context due to driver core change 2009-01-09 23:22:32 +01:00
firmware Make various things static 2009-01-08 08:31:15 -08:00
gpio gpio: fix probe() error return in gpio driver probes 2009-01-15 16:39:35 -08:00
gpu drm/i915: lock correct mutex around object unreference. 2009-01-16 18:45:22 +10:00
hid
hwmon Merge branch 'hwmon-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 2009-01-15 16:40:12 -08:00
i2c powerpc/83xx: Move mcu_mpc8349emitx driver out of drivers/i2c/chips/ 2009-01-13 17:46:31 -06:00
ide ide: fix suspend regression 2009-01-14 19:19:04 +01:00
idle
ieee1394 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 2009-01-08 11:05:59 -08:00
infiniband Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 2009-01-13 08:19:42 -08:00
input input: PCF50633 input driver 2009-01-11 01:34:25 +01:00
isdn i4l: minor cleanups 2009-01-14 14:42:21 -08:00
leds lis3lv02d: merge with leds hp disk 2009-01-15 16:39:40 -08:00
lguest
macintosh
mca
md md: don't retry recovery of raid1 that fails due to error on source drive. 2009-01-09 08:31:11 +11:00
media Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 2009-01-08 11:05:59 -08:00
memstick memstick: annotate endianness of attribute structs 2009-01-09 16:54:41 -08:00
message [SCSI] mpt fusion: Add Firmware debug support 2009-01-13 10:36:02 -06:00
mfd Merge master.kernel.org:/home/rmk/linux-2.6-arm 2009-01-13 14:52:35 -08:00
misc sgi-xp: eliminate false detection of no heartbeat 2009-01-15 16:39:37 -08:00
mmc Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx 2009-01-09 11:52:14 -08:00
mtd Merge git://git.infradead.org/mtd-2.6 2009-01-09 12:37:15 -08:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2009-01-15 16:53:15 -08:00
nubus
of drivers/of: Add the of_find_i2c_device_by_node function. 2009-01-09 15:49:06 -07:00
oprofile Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile 2009-01-09 12:43:06 -08:00
parisc fix early_serial_setup() regression 2009-01-13 14:03:43 -08:00
parport
pci PCI PM: Restore standard config registers of all devices early 2009-01-16 12:57:58 -08:00
pcmcia powerpc: Change u64/s64 to a long long integer type 2009-01-13 14:47:59 +11:00
platform hp-wmi: handle rfkill_register() failure 2009-01-09 16:54:41 -08:00
pnp Merge branch 'linus' into release 2009-01-09 03:39:43 -05:00
power power_supply: PCF50633 battery charger driver 2009-01-11 01:34:24 +01:00
ps3 powerpc/ps3: Printing fixups for l64 to ll64 conversion drivers/ps3 2009-01-16 16:15:14 +11:00
rapidio
regulator regulator: PCF50633 pmic driver 2009-01-11 01:34:25 +01:00
rtc rtc: rtc-twl4030 don't mask alarm interrupts on shutdown 2009-01-15 16:39:36 -08:00
s390 qeth: fix usage of netdev_ops 2009-01-11 00:05:16 -08:00
sbus
scsi Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2009-01-16 08:41:09 -08:00
serial serial: Add 16850 uart type support to OF uart driver 2009-01-16 16:15:17 +11:00
sh
sn
spi atmel_spi: allow transfer when max_speed_hz = 0 2009-01-15 16:39:35 -08:00
ssb
staging
tc
telephony
thermal
uio
usb drivers/usb/core/hub.c: fix CONFIG_USB_OTG=y build 2009-01-15 16:39:41 -08:00
uwb Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 2009-01-08 11:05:59 -08:00
video powerpc/ps3: printing fixups for l64 to ll64 conversion drivers/video 2009-01-16 16:15:15 +11:00
virtio
w1 w1: send status messages after command processing 2009-01-08 08:31:14 -08:00
watchdog [WATCHDOG] Pika Warp appliance watchdog timer 2009-01-12 20:08:56 +00:00
xen xen: add xenfs to allow usermode <-> Xen interaction 2009-01-08 08:30:59 -08:00
zorro m68k: zorro - Use %pR to print resources 2009-01-12 20:56:43 +01:00
Kconfig
Makefile Merge branch 'drivers-platform' into release 2009-01-09 04:56:56 -05:00