linux/drivers/acpi
Rafael J. Wysocki 05087360fd ACPI / PM: Take SMART_SUSPEND driver flag into account
Make the ACPI PM domain take DPM_FLAG_SMART_SUSPEND into account in
its system suspend callbacks.

[Note that the pm_runtime_suspended() check in acpi_dev_needs_resume()
is an optimization, because if is not passed, all of the subsequent
checks may be skipped and some of them are much more overhead in
general.]

Also use the observation that if the device is in runtime suspend
at the beginning of the "late" phase of a system-wide suspend-like
transition, its state cannot change going forward (runtime PM is
disabled for it at that time) until the transition is over and the
subsequent system-wide PM callbacks should be skipped for it (as
they generally assume the device to not be suspended), so add
checks for that in acpi_subsys_suspend_late/noirq() and
acpi_subsys_freeze_late/noirq().

Moreover, if acpi_subsys_resume_noirq() is called during the
subsequent system-wide resume transition and if the device was left
in runtime suspend previously, its runtime PM status needs to be
changed to "active" as it is going to be put into the full-power
state going forward, so add a check for that too in there.

In turn, if acpi_subsys_thaw_noirq() runs after the device has been
left in runtime suspend, the subsequent "thaw" callbacks need
to be skipped for it (as they may not work correctly with a
suspended device), so set the power.direct_complete flag for the
device then to make the PM core skip those callbacks.

On top of the above, make the analogous changes in the acpi_lpss
driver that uses the ACPI PM domain callbacks.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-11-06 13:57:47 +01:00
..
acpica Merge branches 'acpi-scan' and 'acpi-pm' 2017-09-03 23:53:19 +02:00
apei ACPI / APEI: clear error status before acknowledging the error 2017-09-27 23:13:06 +02:00
arm64 ACPI/IORT: Fix PCI ACS enablement 2017-10-04 17:34:41 +01:00
dptf ACPI / DPTF: constify attribute_group structures 2017-07-04 22:15:28 +02:00
nfit libnvdimm for 4.14 2017-09-11 13:10:57 -07:00
pmic ACPI / PMIC: xpower: Do pinswitch magic when reading GPADC 2017-07-24 22:43:17 +02:00
x86 ACPI / property: Support Apple _DSM properties 2017-08-03 23:26:22 +02:00
ac.c ACPI / AC: Add a blacklist with PMIC ACPI HIDs with a native charger driver 2017-04-19 22:53:35 +02:00
acpi_amba.c ACPI / amba: Remove CLK_IS_ROOT 2016-04-27 23:42:57 +02:00
acpi_apd.c ACPI: APD: Fix HID for Hisilicon Hip07/08 2017-07-30 14:33:48 +02:00
acpi_cmos_rtc.c char/genrtc: x86: remove remnants of asm/rtc.h 2016-06-04 00:20:07 +02:00
acpi_configfs.c ACPI: configfs: Unload SSDT on configfs entry removal 2017-06-22 02:43:12 +02:00
acpi_dbg.c ACPI: fix whitespace in pr_fmt() to align log entries 2017-06-22 02:18:20 +02:00
acpi_extlog.c ACPI: Switch to use generic guid_t in acpi_evaluate_dsm() 2017-06-07 12:20:49 +02:00
acpi_ipmi.c ACPI / IPMI: change warning to debug on timeout 2017-04-07 12:25:37 -05:00
acpi_lpat.c ACPI / lpat: Fix typos in comments and kerneldoc style 2017-07-24 22:52:00 +02:00
acpi_lpit.c ACPI / LPIT: Add Low Power Idle Table (LPIT) support 2017-10-11 15:38:10 +02:00
acpi_lpss.c ACPI / PM: Take SMART_SUSPEND driver flag into account 2017-11-06 13:57:47 +01:00
acpi_memhotplug.c
acpi_pad.c sched/headers: Prepare for new header dependencies before moving code to <uapi/linux/sched/types.h> 2017-03-02 08:42:27 +01:00
acpi_platform.c ACPI / platform: Update platform device NUMA node based on _PXM method 2017-04-18 16:56:39 +02:00
acpi_pnp.c ACPI / PNP: constify device IDs 2016-01-04 22:10:30 +01:00
acpi_processor.c ACPI / processor: make function acpi_processor_check_duplicates() static 2017-08-24 03:25:47 +02:00
acpi_video.c dmi: Mark all struct dmi_system_id instances const 2017-09-14 11:59:30 +02:00
acpi_watchdog.c ACPI / watchdog: properly initialize resources 2017-09-19 01:49:02 +02:00
battery.c ACPI: make device_attribute const 2017-08-24 03:38:25 +02:00
battery.h
bgrt.c ACPI: BGRT: constify attribute_group structures 2017-07-04 22:15:20 +02:00
blacklist.c dmi: Mark all struct dmi_system_id instances const 2017-09-14 11:59:30 +02:00
bus.c dmi: Mark all struct dmi_system_id instances const 2017-09-14 11:59:30 +02:00
button.c ACPI updates for v4.13-rc1 2017-07-04 14:16:49 -07:00
cm_sbs.c
container.c
cppc_acpi.c scripts/spelling.txt: add regsiter -> register spelling mistake 2017-05-08 17:15:13 -07:00
custom_method.c
debugfs.c
device_pm.c ACPI / PM: Take SMART_SUSPEND driver flag into account 2017-11-06 13:57:47 +01:00
device_sysfs.c ACPI / property: Hierarchical properties support update 2016-11-24 02:43:47 +01:00
dock.c ACPI / dock: constify attribute_group structure 2017-08-03 23:28:24 +02:00
ec_sys.c ACPI / EC: Deny write access unless requested by module param 2016-03-09 23:26:15 +01:00
ec.c dmi: Mark all struct dmi_system_id instances const 2017-09-14 11:59:30 +02:00
event.c genetlink: mark families as __ro_after_init 2016-10-27 16:16:09 -04:00
evged.c ACPI / GED: make evged.c explicitly non-modular 2016-05-09 22:59:25 +02:00
fan.c ACPI / fan: Fix error reading cur_state 2016-10-10 02:20:43 +02:00
glue.c IOMMU Updates for Linux v4.12 2017-05-09 15:15:47 -07:00
hed.c
internal.h ACPI / LPIT: Add Low Power Idle Table (LPIT) support 2017-10-11 15:38:10 +02:00
ioapic.c ACPI: fix whitespace in pr_fmt() to align log entries 2017-06-22 02:18:20 +02:00
irq.c ACPI / irq: Fix return code of acpi_gsi_to_irq() 2017-07-12 13:11:49 +02:00
Kconfig ACPI / LPIT: Add Low Power Idle Table (LPIT) support 2017-10-11 15:38:10 +02:00
Makefile ACPI / LPIT: Add Low Power Idle Table (LPIT) support 2017-10-11 15:38:10 +02:00
numa.c ACPI: NUMA: Fix typo in the full name of SRAT 2017-07-24 22:27:44 +02:00
nvs.c
osi.c dmi: Mark all struct dmi_system_id instances const 2017-09-14 11:59:30 +02:00
osl.c ACPI / LPIT: Add Low Power Idle Table (LPIT) support 2017-10-11 15:38:10 +02:00
pci_irq.c ACPI / PCI: fix GIC irq model default PCI IRQ polarity 2016-09-10 02:50:50 +02:00
pci_link.c ACPI/PCI: pci_link: Include PIRQ_PENALTY_PCI_USING for ISA IRQs 2016-10-24 14:18:14 +02:00
pci_mcfg.c PCI/ACPI: Add ThunderX pass2.x 2nd node MCFG quirk 2017-04-24 11:58:56 -05:00
pci_root.c treewide: Consolidate Apple DMI checks 2017-08-03 23:26:22 +02:00
pci_slot.c dmi: Mark all struct dmi_system_id instances const 2017-09-14 11:59:30 +02:00
power.c ACPI / power: constify attribute_group structures 2017-07-04 22:15:14 +02:00
proc.c ACPI / PM: Drop run_wake from struct acpi_device_wakeup_flags 2017-06-28 01:52:15 +02:00
processor_core.c Revert"x86/acpi: Enable MADT APIs to return disabled apicids" 2017-03-11 14:41:18 +01:00
processor_driver.c ACPI: processor: use dev_dbg() instead of dev_warn() when CPPC probe failed 2017-07-27 01:51:06 +02:00
processor_idle.c Power management updates for v4.14-rc1 2017-09-05 12:19:08 -07:00
processor_pdc.c dmi: Mark all struct dmi_system_id instances const 2017-09-14 11:59:30 +02:00
processor_perflib.c ACPI: processor_perflib: Simplify code and stop using CPUFREQ_START 2017-02-04 00:05:29 +01:00
processor_thermal.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
processor_throttling.c acpi/processor: Prevent cpu hotplug deadlock 2017-05-26 10:10:47 +02:00
property.c Merge branches 'acpi-pmic', 'acpi-bus', 'acpi-wdat' and 'acpi-properties' 2017-09-22 23:38:45 +02:00
reboot.c
resource.c ACPI: Introduce DMA ranges parsing 2017-08-07 14:28:51 +02:00
sbs.c Merge branches 'acpi-video', 'acpi-battery', 'acpi-spcr' and 'acpi-misc' 2017-09-03 23:54:29 +02:00
sbshc.c Revert "ACPI / SBS: Add 5 us delay to fix SBS hangs on MacBook" 2015-11-16 23:26:45 +01:00
sbshc.h
scan.c ACPI / LPIT: Add Low Power Idle Table (LPIT) support 2017-10-11 15:38:10 +02:00
sleep.c dmi: Mark all struct dmi_system_id instances const 2017-09-14 11:59:30 +02:00
sleep.h ACPI / power: Delay turning off unused power resources after suspend 2017-05-01 23:11:21 +02:00
spcr.c Merge branches 'acpi-video', 'acpi-battery', 'acpi-spcr' and 'acpi-misc' 2017-09-03 23:54:29 +02:00
sysfs.c Merge branches 'acpi-sysfs', 'acpi-apei' and 'acpi-blacklist' 2017-09-03 23:55:34 +02:00
tables.c ACPICA: Tables: Change table duplication check to be related to acpi_gbl_verify_table_checksum 2017-07-20 16:38:25 +02:00
thermal.c dmi: Mark all struct dmi_system_id instances const 2017-09-14 11:59:30 +02:00
utils.c ACPI / blacklist: add acpi_match_platform_list() 2017-08-29 01:42:48 +02:00
video_detect.c ACPI / video: Add force_none quirk for Dell OptiPlex 9020M 2017-07-16 02:27:23 +02:00
wakeup.c