linux/drivers/acpi
Rafael J. Wysocki a4e90bed51 ACPI / sleep: Add extra checks for HW Reduced ACPI mode sleep states
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>
Cc: 3.4+ <stable@vger.kernel.org> # 3.4+
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2014-03-13 22:11:39 +01:00
..
acpica ACPICA: Remove bool usage from ACPICA. 2014-01-27 23:59:08 +01:00
apei ACPI and power management updates for 3.14-rc1 2014-01-24 15:51:02 -08:00
ac.c ACPI / AC: fix AC driver compile error when CONFIG_PM_SLEEP is undefined 2014-02-13 15:13:44 +01:00
acpi_cmos_rtc.c ACPI: Add CMOS RTC Operation Region handler support 2013-06-27 21:35:37 +02:00
acpi_extlog.c ACPI and power management updates for 3.14-rc1 2014-01-24 15:51:02 -08:00
acpi_ipmi.c ACPI / IPMI: Cleanup coding styles 2013-09-30 19:46:13 +02:00
acpi_lpss.c Revert "ACPI: Add BayTrail SoC GPIO and LPSS ACPI IDs" 2014-01-18 14:04:58 +01:00
acpi_memhotplug.c ACPI / memhotplug: add parameter to disable memory hotplug 2014-01-16 01:43:49 +01:00
acpi_pad.c ACPI and power management updates for 3.14-rc1 2014-01-24 15:51:02 -08:00
acpi_platform.c ACPI / driver core: Store an ACPI device pointer in struct acpi_dev_node 2013-11-14 23:14:43 +01:00
acpi_processor.c Merge branches 'acpi-processor', 'acpi-hotplug', 'acpi-init', 'acpi-pm' and 'acpica' 2014-01-29 11:47:18 +01:00
battery.c ACPI / battery: fix battery driver compile error when CONFIG_PM_SLEEP is undefined 2014-02-13 15:13:44 +01:00
bgrt.c acpi: bgrt: fix build error due to attribute change 2013-08-22 08:34:39 -07:00
blacklist.c Revert "ACPI: Blacklist Win8 OSI for some HP laptop 2013 models" 2014-02-20 01:33:40 +01:00
bus.c Merge branches 'acpi-processor', 'acpi-hotplug', 'acpi-init', 'acpi-pm' and 'acpica' 2014-01-29 11:47:18 +01:00
button.c ACPI / button: fix button driver compile error when CONFIG_PM_SLEEP is undefined 2014-02-13 15:13:44 +01:00
container.c ACPI / container: Fix error code path in container_device_attach() 2014-02-12 14:55:16 +01:00
custom_method.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
debugfs.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
device_pm.c Merge branches 'acpi-processor', 'acpi-hotplug', 'acpi-init', 'acpi-pm' and 'acpica' 2014-01-29 11:47:18 +01:00
dock.c ACPI / dock: Make 'docked' sysfs attribute work as documented 2014-02-15 01:29:06 +01:00
ec_sys.c ACPI / EC: Mark the function acpi_ec_add_debugfs() as static in ec_sys.c 2014-01-06 00:13:22 +01:00
ec.c ACPI / EC: Clear stale EC events on Samsung systems 2014-03-06 13:27:23 +01:00
event.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
fan.c ACPI / fan: fix fan driver compile error when CONFIG_PM_SLEEP is undefined 2014-02-13 15:13:44 +01:00
glue.c ACPI / bind: Move acpi_get_child() to drivers/ide/ide-acpi.c 2013-12-07 01:05:50 +01:00
hed.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
internal.h Merge branch 'acpi-hotplug' 2014-01-12 23:45:04 +01:00
Kconfig x86/efi: Don't select EFI from certain special ACPI drivers 2013-12-19 21:32:46 +01:00
Makefile ACPI and power management updates for 3.13-rc1 2013-11-14 13:41:48 +09:00
numa.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
nvs.c ACPI / NVS: Include appropriate header file in nvs.c 2014-01-06 00:13:22 +01:00
osl.c Merge branch 'acpi-hotplug' 2014-01-12 23:45:04 +01:00
pci_irq.c ACPI / PCI: Fix memory leak in acpi_pci_irq_enable() 2014-02-18 15:47:23 +01:00
pci_link.c ACPI / PCI: Include appropriate header file in pci_link.c 2014-01-06 00:13:22 +01:00
pci_root.c ACPI and power management updates for 3.14-rc1 2014-01-24 15:51:02 -08:00
pci_slot.c ACPI / PCI: Include appropriate header file in pci_slot.c 2014-01-06 00:13:22 +01:00
power.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
proc.c ACPI / proc: remove unneeded NULL check 2014-02-05 01:06:21 +01:00
processor_core.c Merge branches 'acpi-processor', 'acpi-hotplug', 'acpi-init', 'acpi-pm' and 'acpica' 2014-01-29 11:47:18 +01:00
processor_driver.c ACPI / processor: use ACPI_COMPANION() to get ACPI device 2013-12-07 01:41:01 +01:00
processor_idle.c ACPI and power management updates for 3.14-rc1 2014-01-24 15:51:02 -08:00
processor_perflib.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
processor_thermal.c ACPI: correct minor typos 2013-12-07 01:38:45 +01:00
processor_throttling.c ACPI / processor: Rework processor throttling with work_on_cpu() 2014-02-27 00:21:05 +01:00
reboot.c Revert "ACPI: ignore FADT reset-reg-sup flag" 2012-04-20 11:19:35 -07:00
resource.c ACPI / resources: ignore invalid ACPI device resources 2014-03-01 22:46:05 +01:00
sbs.c Merge branches 'acpi-pm' and 'acpi-video' 2014-02-21 01:28:12 +01:00
sbshc.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
sbshc.h
scan.c ACPI / hotplug: Fix panic on eject to ejected device 2014-02-05 12:14:43 +01:00
sleep.c ACPI / sleep: Add extra checks for HW Reduced ACPI mode sleep states 2014-03-13 22:11:39 +01:00
sleep.h ACPI: Drop power resources driver 2013-01-17 14:11:06 +01:00
sysfs.c Merge branches 'acpi-processor', 'acpi-hotplug', 'acpi-init', 'acpi-pm' and 'acpica' 2014-01-29 11:47:18 +01:00
tables.c ACPI / tables: Return proper error codes from acpi_table_parse() and fix comment. 2014-01-06 12:33:06 +01:00
thermal.c ACPI / thermal: fix thermal driver compile error when CONFIG_PM_SLEEP is undefined 2014-02-13 15:13:45 +01:00
utils.c ACPI / utils: remove a pointless NULL check 2014-02-05 01:05:24 +01:00
video_detect.c ACPI / video: Add systems that should favour native backlight interface 2014-02-20 01:33:40 +01:00
video.c ACPI / video: Add systems that should favour native backlight interface 2014-02-20 01:33:40 +01:00
wakeup.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00