• Rafael J. Wysocki's avatar
    ACPI / sleep: Add extra checks for HW Reduced ACPI mode sleep states · a4e90bed
    Rafael J. Wysocki authored
    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=70931Reported-by: default avatarAdam Williamson <awilliam@redhat.com>
    Tested-by: default avatarAubrey Li <aubrey.li@linux.intel.com>
    Cc: 3.4+ <stable@vger.kernel.org> # 3.4+
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    a4e90bed
sleep.c 20.1 KB