]> git.hungrycats.org Git - linux/commit
ACPI / sleep: Add extra checks for HW Reduced ACPI mode sleep states
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 13 Mar 2014 21:11:39 +0000 (22:11 +0100)
committerJiri Slaby <jslaby@suse.cz>
Sat, 22 Mar 2014 21:01:58 +0000 (22:01 +0100)
commit8eb0508cc0ce870329ff9c2427fe640e903d47c0
tree1f9b2a2a22e1894c63549293c4fea19d0385314c
parentff3918ebdc2d35c0e57b6aa8c32098f40ab83bd0
ACPI / sleep: Add extra checks for HW Reduced ACPI mode sleep states

commit a4e90bed511220ff601d064c9e5d583e91308f65 upstream.

If the HW Reduced ACPI mode bit is set in the FADT, ACPICA uses
the optional sleep control and sleep status registers for making
the system enter sleep states (including S5), so it is not possible
to use system sleep states or power it off using ACPI if the HW
Reduced ACPI mode bit is set and those registers are not available.

For this reason, add a new function, acpi_sleep_state_supported(),
checking if the HW Reduced ACPI mode bit is set and whether or not
system sleep states are usable in that case in addition to checking
the return value of acpi_get_sleep_type_data() and make the ACPI
sleep setup routines use that function to check the availability of
system sleep states.

Among other things, this prevents the kernel from attempting to
use ACPI for powering off HW Reduced ACPI systems without the sleep
control and sleep status registers, because ACPI power off doesn't
have a chance to work on them.  That allows alternative power off
mechanisms that may actually work to be used on those systems.  The
affected machines include Dell Venue 8 Pro, Asus T100TA, Haswell
Desktop SDP and Ivy Bridge EP Demo depot.

References: https://bugzilla.kernel.org/show_bug.cgi?id=70931
Reported-by: Adam Williamson <awilliam@redhat.com>
Tested-by: Aubrey Li <aubrey.li@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
drivers/acpi/sleep.c