linux/include/acpi
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
..
platform ACPICA: Changes for Cygwin compatibility 2007-07-03 01:55:36 -04:00
acconfig.h ACPICA: Update version to 20070126 2007-02-02 21:14:32 -05:00
acdebug.h ACPICA: Update copyright to 2007. 2007-02-02 21:14:31 -05:00
acdisasm.h ACPICA: Update copyright to 2007. 2007-02-02 21:14:31 -05:00
acdispat.h ACPICA: Lindent 2007-05-09 23:34:35 -04:00
acevents.h ACPICA: Update copyright to 2007. 2007-02-02 21:14:31 -05:00
acexcep.h ACPICA: Update copyright to 2007. 2007-02-02 21:14:31 -05:00
acglobal.h ACPICA: Lindent 2007-05-09 23:34:35 -04:00
achware.h ACPICA: Update copyright to 2007. 2007-02-02 21:14:31 -05:00
acinterp.h Revert "ACPICA: fix AML mutex re-entrancy" 2007-05-09 23:01:59 -04:00
aclocal.h ACPICA: Lindent 2007-05-09 23:34:35 -04:00
acmacros.h Pull misc into release branch 2007-07-22 02:27:40 -04:00
acnames.h ACPICA: Update copyright to 2007. 2007-02-02 21:14:31 -05:00
acnamesp.h ACPICA: Lindent 2007-05-09 23:34:35 -04:00
acobject.h ACPICA: Lindent 2007-05-09 23:34:35 -04:00
acopcode.h ACPICA: Update copyright to 2007. 2007-02-02 21:14:31 -05:00
acoutput.h ACPI: create CONFIG_ACPI_DEBUG_FUNC_TRACE 2007-07-22 02:20:07 -04:00
acparser.h ACPICA: Update copyright to 2007. 2007-02-02 21:14:31 -05:00
acpi_bus.h ACPI: Schedule /proc/acpi/event for removal 2007-08-23 15:20:26 -04:00
acpi_drivers.h ACPI: restore CONFIG_ACPI_SLEEP 2007-07-29 16:53:59 -07:00
acpi_numa.h x86_64: fake pxm-to-node mapping for fake numa 2007-07-21 18:37:10 -07:00
acpi.h ACPICA: Update copyright to 2007. 2007-02-02 21:14:31 -05:00
acpiosxf.h ACPI: add __init to acpi_initialize_subsystem() 2007-05-30 00:26:11 -04:00
acpixf.h ACPI: Fix a warning of discarding qualifiers from pointer target type 2007-08-25 01:38:40 -04:00
acresrc.h ACPICA: Update copyright to 2007. 2007-02-02 21:14:31 -05:00
acstruct.h ACPI: Fix a warning of discarding qualifiers from pointer target type 2007-08-25 01:38:40 -04:00
actables.h ACPICA: Update copyright to 2007. 2007-02-02 21:14:31 -05:00
actbl1.h ACPICA: Update copyright to 2007. 2007-02-02 21:14:31 -05:00
actbl.h ACPI: Disable MSI on request of FADT 2007-04-25 01:13:47 -04:00
actypes.h ACPI: autoload modules - ACPICA modifications 2007-07-23 13:56:00 -04:00
acutils.h ACPI: autoload modules - ACPICA modifications 2007-07-23 13:56:00 -04:00
amlcode.h ACPICA: Update copyright to 2007. 2007-02-02 21:14:31 -05:00
amlresrc.h ACPICA: Update copyright to 2007. 2007-02-02 21:14:31 -05:00
container.h [ACPI] Lindent all ACPI files 2005-08-05 00:45:14 -04:00
pdc_intel.h ACPI: Processor native C-states using MWAIT 2006-10-14 00:35:39 -04:00
processor.h ACPI: disable lower idle C-states across suspend/resume 2007-09-22 17:15:34 -07:00