linux/drivers
Thomas Gleixner b04e7bdb98 ACPI: disable lower idle C-states across suspend/resume
device_suspend() calls ACPI suspend functions, which seems to have undesired
side effects on lower idle C-states. It took me some time to realize that
especially the VAIO BIOSes (both Andrews jinxed UP and my elfstruck SMP one)
show this effect. I'm quite sure that other bug reports against suspend/resume
about turning the system into a brick have the same root cause.

After fishing in the dark for quite some time, I realized that removing the ACPI
processor module before suspend (this removes the lower C-state functionality)
made the problem disappear. Interestingly enough the propability of having a
bricked box is influenced by various factors (interrupts, size of the ram image,
...). Even adding a bunch of printks in the wrong places made the problem go
away. The previous periodic tick implementation simply pampered over the
problem, which explains why the dyntick / clockevents changes made this more
prominent.

We avoid complex functionality during the boot process and we have to do the
same during suspend/resume. It is a similar scenario and equaly fragile.

Add suspend / resume functions to the ACPI processor code and disable the lower
idle C-states across suspend/resume. Fall back to the default idle
implementation (halt) instead.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Len Brown <lenb@kernel.org>
Cc: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Cc: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-09-22 17:15:34 -07:00
..
acorn/char Remove the arm26 port 2007-07-31 15:39:39 -07:00
acpi ACPI: disable lower idle C-states across suspend/resume 2007-09-22 17:15:34 -07:00
amba
ata [libata] ahci: add ATI SB800 PCI IDs 2007-09-20 16:07:33 -04:00
atm Add some help texts to recently-introduced kconfig items 2007-08-18 09:52:50 -07:00
auxdisplay cfag12864b fix 2007-08-22 19:52:46 -07:00
base Driver core: fix deprectated sysfs structure for nested class devices 2007-09-19 11:24:18 -07:00
block Fix "Fix DAC960 driver on machines which don't support 64-bit DMA" 2007-09-19 11:24:16 -07:00
bluetooth [Bluetooth] Add missing stat.byte_rx counter modification 2007-09-09 08:39:27 +02:00
cdrom
char intel-agp: Fix i830 mask variable that changed with G33 support 2007-09-19 11:24:18 -07:00
clocksource
connector
cpufreq
crypto Add some help texts to recently-introduced kconfig items 2007-08-18 09:52:50 -07:00
dio
dma [IOAT]: ioatdma needs to to play nice in a multi-dma-client world 2007-08-26 18:35:40 -07:00
edac drivers/edac: fix e752x correct return code 2007-09-11 17:21:19 -07:00
eisa
fc4
firewire firewire: fw-ohci: ignore failure of pci_set_power_state (fix suspend regression) 2007-09-07 18:44:35 +02:00
firmware
hid Add some help texts to recently-introduced kconfig items 2007-08-18 09:52:50 -07:00
hwmon hwmon: End of I/O region off-by-one 2007-09-09 10:38:37 -04:00
i2c i2c-algo-bit: Read block data bugfix 2007-09-09 22:29:14 +02:00
ide ide: remove unused variables from drivers/ide/ppc/pmac.c 2007-09-17 12:35:30 +02:00
ieee1394 ieee1394: ohci1394: fix initialization if built non-modular 2007-09-20 21:19:45 +02:00
infiniband Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 2007-08-31 20:40:37 -07:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2007-09-12 07:57:00 -07:00
isdn [ISDN]: Get rid of some pointless allocation casts in common and bsd comp. 2007-08-26 18:35:46 -07:00
kvm KVM: Fix virtualization menu help text 2007-09-22 12:55:18 -07:00
leds
lguest lguest: Fix guest crash when CONFIG_X86_USE_3DNOW=y 2007-09-12 12:19:46 -07:00
macintosh [POWERPC] Fix undefined reference to device_power_up/resume 2007-08-25 16:58:27 +10:00
mca
md Fix kernel buuild with (CONFIG_COMPAT && ! CONFIG_BLOCK) 2007-09-14 13:56:47 -07:00
media pci: fix unterminated pci_device_id lists 2007-09-19 11:24:17 -07:00
message Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 2007-08-06 17:48:34 -07:00
mfd
misc Pull thinkpad into release branch 2007-09-17 00:58:40 -04:00
mmc bug in AT91 MCI suspend routines 2007-09-11 17:21:51 +02:00
mtd pci: fix unterminated pci_device_id lists 2007-09-19 11:24:17 -07:00
net Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2007-09-20 12:42:47 -07:00
nubus
of
oprofile
parisc
parport parport_pc locking fix 2007-07-31 15:39:37 -07:00
pci PCI: unhide SMBus on Compaq Deskpro EP 401963-001 motherboard 2007-09-11 04:22:16 -07:00
pcmcia pcmcia: give socket time to power down 2007-07-31 15:39:38 -07:00
pnp PNP: remove SMCf010 quirk 2007-09-11 17:21:19 -07:00
power
ps3
rapidio
rtc rtc: rtc-ds1553.c should use resource_size_t for base address 2007-09-19 11:24:17 -07:00
s390 Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 2007-09-11 07:46:09 -07:00
sbus Videopix Frame Grabber: Fix unreleased lock in vfc_debug() 2007-07-31 15:39:43 -07:00
scsi Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 2007-09-11 07:46:09 -07:00
serial [SUNSAB]: Fix several bugs. 2007-09-17 16:47:07 -07:00
sh
sn
spi spi_mpc83xx: hang fix 2007-09-11 17:21:19 -07:00
tc
telephony
uio
usb Revert "usb-storage: implement autosuspend" 2007-09-13 06:01:24 -07:00
video intelfb: Fix bug in DPLL disable 2007-09-19 11:24:18 -07:00
w1 w1: fix w1_remove_master_device() searching 2007-08-22 19:52:46 -07:00
xen
zorro zorro: Make sysfs config attribute read-only 2007-08-22 19:52:45 -07:00
Kconfig
Makefile [WATCHDOG] Fix pcwd_init_module crash 2007-07-29 18:58:39 +00:00