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
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
auxdisplay
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
dio
dma
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
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
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
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
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
pci PCI: unhide SMBus on Compaq Deskpro EP 401963-001 motherboard 2007-09-11 04:22:16 -07:00
pcmcia
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
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
xen
zorro
Kconfig
Makefile