aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/acpica/hwxfsleep.c
diff options
context:
space:
mode:
authorLv Zheng <lv.zheng@intel.com>2013-06-08 00:59:18 +0000
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-06-16 00:56:22 +0200
commit7cec7048fe22e3e92389da2cd67098f6c4284e7f (patch)
tree69ace1151d4870173b6bf35dce23a9d3bd608f11 /drivers/acpi/acpica/hwxfsleep.c
parentACPICA: Split table print utilities to a new a separate file (diff)
downloadlinux-dev-7cec7048fe22e3e92389da2cd67098f6c4284e7f.tar.xz
linux-dev-7cec7048fe22e3e92389da2cd67098f6c4284e7f.zip
ACPICA: Do not use extended sleep registers unless HW-reduced bit is set
Previous implementation incorrectly used the ACPI 5.0 extended sleep registers if they were simply populated. This caused problems on some non-HW-reduced machines. As per the ACPI spec, they should only be used if the HW-reduced bit is set. Lv Zheng, ACPICA BZ 1020. References: https://bugzilla.kernel.org/show_bug.cgi?id=54181 References: https://bugs.acpica.org/show_bug.cgi?id=1020 Reported-by: Daniel Rowe <bart@fathom13.com> Bisected-by: Brint E. Kriebel <kernel@bekit.net> Cc: 3.4+ <stable@vger.kernel.org> Signed-off-by: Lv Zheng <lv.zheng@intel.com> Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/acpi/acpica/hwxfsleep.c')
-rw-r--r--drivers/acpi/acpica/hwxfsleep.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/acpi/acpica/hwxfsleep.c b/drivers/acpi/acpica/hwxfsleep.c
index 111849c2117f..f2e669db8b65 100644
--- a/drivers/acpi/acpica/hwxfsleep.c
+++ b/drivers/acpi/acpica/hwxfsleep.c
@@ -240,12 +240,14 @@ static acpi_status acpi_hw_sleep_dispatch(u8 sleep_state, u32 function_id)
&acpi_sleep_dispatch[function_id];
#if (!ACPI_REDUCED_HARDWARE)
-
/*
* If the Hardware Reduced flag is set (from the FADT), we must
- * use the extended sleep registers
+ * use the extended sleep registers (FADT). Note: As per the ACPI
+ * specification, these extended registers are to be used for HW-reduced
+ * platforms only. They are not general-purpose replacements for the
+ * legacy PM register sleep support.
*/
- if (acpi_gbl_reduced_hardware || acpi_gbl_FADT.sleep_control.address) {
+ if (acpi_gbl_reduced_hardware) {
status = sleep_functions->extended_function(sleep_state);
} else {
/* Legacy sleep */