linux/drivers/acpi
Dmitry Torokhov f7599be2bb ACPI: PM: postpone bringing devices to D0 unless we need them
Currently ACPI power domain brings devices into D0 state in the "resume
early" phase. Normally this does not cause any issues, as powering up
happens quickly. However there are peripherals that have certain timing
requirements for powering on, for example some models of Elan
touchscreens need 300msec after powering up/releasing reset line before
they can accept commands from the host. Such devices will dominate
the time spent in early resume phase and cause increase in overall
resume time as we wait for early resume to complete before we can
proceed to the normal resume stage.

There are ways for a driver to indicate that it can tolerate device
being in the low power mode and that it knows how to power the device
back up when resuming, bit that requires changes to individual drivers
that may not really care about details of ACPI controlled power
management.

This change attempts to solve this issue at ACPI power domain level, by
postponing powering up device until we get to the normal resume stage,
unless there is early resume handler defined for the device, or device
does not declare any resume handlers, in which case we continue powering
up such devices early. This allows us to shave off several hundred
milliseconds of resume time on affected systems.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2021-06-23 19:33:42 +02:00
..
acpica ACPICA: Clean up context mutex during object deletion 2021-05-31 13:56:33 +02:00
apei Merge branch 'acpi-misc' 2021-04-26 17:04:41 +02:00
arm64 Assorted arm64 fixes and clean-ups, the most important: 2021-05-07 12:11:05 -07:00
dptf ACPI: DPTF: Support Alder Lake 2020-11-10 18:52:51 +01:00
nfit ACPI: NFIT: Fix support for variable 'SPA' structure size 2021-05-12 12:38:25 -07:00
numa CFI on arm64 series for v5.13-rc1 2021-04-27 10:16:46 -07:00
pmic ACPI: fix various typos in comments 2021-03-19 17:45:49 +01:00
x86 ACPI: PM: Adjust behavior for field problems on AMD systems 2021-06-18 18:39:54 +02:00
ac.c ACPI: AC: fix some coding style issues 2021-04-08 16:17:32 +02:00
acpi_adxl.c ACPI/ADXL: Add address translation interface using an ACPI DSM 2018-10-16 10:03:00 +02:00
acpi_amba.c Merge 5.2-rc6 into char-misc-next 2019-06-23 09:23:33 +02:00
acpi_apd.c serial: 8250_dw: Add device HID for new AMD UART controller 2021-05-13 17:08:42 +02:00
acpi_cmos_rtc.c ACPI: cmos_rtc: Remove leftover ACPI_MODULE_NAME() 2020-09-25 18:25:51 +02:00
acpi_configfs.c ACPI: configfs: add missing check after configfs_register_default_group() 2021-01-22 16:35:34 +01:00
acpi_dbg.c ACPI: debug: Remove the not used function 2020-11-17 18:12:34 +01:00
acpi_extlog.c ACPI / extlog: Check for RDMSR failure 2020-10-02 19:01:55 +02:00
acpi_fpdt.c ACPI: tables: introduce support for FPDT table 2021-01-29 19:24:13 +01:00
acpi_ipmi.c ACPI: ipmi: remove useless return statement for void function 2021-04-08 16:27:02 +02:00
acpi_lpat.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
acpi_lpit.c ACPI: LPIT: Put the low power idle table after using it 2020-05-09 11:29:16 +02:00
acpi_lpss.c ACPI: LPSS: add a missed blank line after declarations 2021-04-08 16:27:02 +02:00
acpi_memhotplug.c acpi,memhotplug: enable MHP_MEMMAP_ON_MEMORY when supported 2021-05-05 11:27:27 -07:00
acpi_pad.c ACPI: acpi_pad: add a missed blank line after declarations 2021-04-08 16:27:02 +02:00
acpi_platform.c ACPI: platform: Remove ACPI_MODULE_NAME() 2020-09-25 18:25:51 +02:00
acpi_pnp.c ACPI: PNP: compare the string length in the matching_id() 2020-12-15 19:30:49 +01:00
acpi_processor.c Merge branch 'acpi-misc' 2021-04-26 17:04:41 +02:00
acpi_tad.c ACPI: Use DEVICE_ATTR_<RW|RO|WO> macros 2021-01-22 16:17:19 +01:00
acpi_video.c Merge branch 'acpi-misc' 2021-04-26 17:04:41 +02:00
acpi_watchdog.c ACPI: watchdog: Replace open coded variant of resource_union() 2020-11-17 18:06:29 +01:00
battery.c ACPI: battery: fix some coding style issues 2021-04-08 16:27:02 +02:00
bgrt.c ACPI: Use DEVICE_ATTR_<RW|RO|WO> macros 2021-01-22 16:17:19 +01:00
blacklist.c ACPI: blacklist: fix clang warning for unused DMI table 2019-07-11 22:45:00 +02:00
bus.c ACPI updates for 5.12-rc1 2021-02-20 21:50:59 -08:00
button.c ACPI: button: fix some coding style issues 2021-04-08 16:27:02 +02:00
container.c ACPI: container: Remove leftover ACPICA debug functionality 2020-09-25 18:25:51 +02:00
cppc_acpi.c Merge branch 'acpi-misc' 2021-04-26 17:04:41 +02:00
custom_method.c ACPI: custom_method: fix a possible memory leak 2021-04-28 19:17:54 +02:00
debugfs.c ACPI: debugfs: Remove dead ACPICA debug code 2020-09-25 18:25:51 +02:00
device_pm.c ACPI: PM: postpone bringing devices to D0 unless we need them 2021-06-23 19:33:42 +02:00
device_sysfs.c Merge branch 'acpi-misc' 2021-04-26 17:04:41 +02:00
dock.c ACPI: dock: fix some coding style issues 2021-04-08 16:27:03 +02:00
ec_sys.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 482 2019-06-19 17:09:52 +02:00
ec.c ACPI: EC: Clean up status flags checks in advance_transaction() 2020-11-23 20:01:01 +01:00
event.c ACPI: Fix whitespace inconsistencies 2020-11-09 19:08:06 +01:00
evged.c ACPI: GED: fix -Wformat 2020-11-09 19:25:20 +01:00
fan.c ACPI: PM / fan: Put fan device IDs into separate header file 2021-05-21 19:02:35 +02:00
fan.h ACPI: PM / fan: Put fan device IDs into separate header file 2021-05-21 19:02:35 +02:00
glue.c ACPI: bus: Introduce acpi_dev_get() and reuse it in ACPI code 2021-04-13 15:41:11 +02:00
hed.c ACPI: HED: Drop unused ACPI_MODULE_NAME() definition 2021-03-08 16:51:48 +01:00
internal.h ACPI: power: Rework turning off unused power resources 2021-05-31 13:59:02 +02:00
ioapic.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
irq.c ACPI: irq: Prevent unregistering of GIC SGIs 2021-04-23 18:00:52 +01:00
Kconfig Merge branch 'acpi-tables' 2021-02-25 18:57:40 +01:00
Makefile Merge branch 'acpi-tables' 2021-02-25 18:57:40 +01:00
nvs.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 428 2019-06-05 17:37:16 +02:00
osi.c ACPI: OSI: Shoot duplicate word 2019-11-13 11:12:08 +01:00
osl.c ACPI: OSL: Clean up printing messages 2021-02-10 19:09:43 +01:00
pci_irq.c ACPI: PCI: IRQ: Consolidate printing diagnostic messages 2021-03-08 16:51:08 +01:00
pci_link.c ACPI: utils: Introduce acpi_evaluation_failure_warn() 2021-03-08 19:10:30 +01:00
pci_mcfg.c PCI: tegra: Add Tegra194 MCFG quirks for ECAM errata 2021-04-16 11:34:17 -05:00
pci_root.c PCI/ACPI: Clarify message about _OSC failure 2021-01-27 09:38:36 -06:00
pci_slot.c ACPI: PCI: Remove unused ACPICA debug code 2020-09-25 18:25:51 +02:00
platform_profile.c ACPI: platform: Add balanced-performance platform profile 2021-02-24 14:52:41 +01:00
power.c ACPI: power: Use dev_dbg() to print some messages 2021-06-16 19:48:15 +02:00
pptt.c ACPI: PPTT: Consistently use unsigned int as parameter type 2020-01-07 11:46:36 +01:00
proc.c ACPI: proc: Remove dead ACPICA debug code 2020-09-25 18:25:51 +02:00
processor_core.c ACPI: processor: Remove dead ACPICA debug code 2020-09-25 18:25:51 +02:00
processor_driver.c ACPI: processor: Get rid of ACPICA message printing 2021-03-08 16:51:19 +01:00
processor_idle.c Merge branches 'acpi-pci' and 'acpi-processor' 2021-04-26 17:03:05 +02:00
processor_pdc.c ACPI: processor: Get rid of ACPICA message printing 2021-03-08 16:51:19 +01:00
processor_perflib.c Merge branch 'acpi-misc' 2021-04-26 17:04:41 +02:00
processor_thermal.c ACPI: processor: Remove the duplicated ACPI_PROCESSOR_CLASS macro 2020-11-17 18:12:34 +01:00
processor_throttling.c ACPI: utils: Introduce acpi_evaluation_failure_warn() 2021-03-08 19:10:30 +01:00
property.c ACPI: property: Satisfy kernel doc validator (part 2) 2021-02-12 15:34:14 +01:00
reboot.c ACPI: reboot: Avoid racing after writing to ACPI RESET_REG 2020-10-16 18:04:52 +02:00
resource.c ACPI: fix various typos in comments 2021-03-19 17:45:49 +01:00
sbs.c ACPI: SBS: Simplify the code using module_acpi_driver() 2020-11-17 18:12:34 +01:00
sbshc.c ACPI: Fix whitespace inconsistencies 2020-11-09 19:08:06 +01:00
sbshc.h ACPI: Fix whitespace inconsistencies 2020-11-09 19:08:06 +01:00
scan.c ACPI: power: Rework turning off unused power resources 2021-05-31 13:59:02 +02:00
sleep.c ACPI: sleep: Fix acpi_pm_pre_suspend() kernel-doc 2021-06-14 17:22:07 +02:00
sleep.h Revert "Revert "ACPI: scan: Turn off unused power resources during initialization"" 2021-05-10 14:02:17 +02:00
spcr.c ACPI: Use fallthrough pseudo-keyword 2020-07-09 14:09:28 +02:00
sysfs.c Merge branches 'acpi-pci' and 'acpi-processor' 2021-04-26 17:03:05 +02:00
tables.c ACPI: tables: x86: Reserve memory occupied by ACPI tables 2021-03-29 19:26:04 +02:00
thermal.c - Use the newly introduced 'hot' and 'critical' ops for the acpi 2021-02-22 09:39:11 -08:00
tiny-power-button.c ACPI: tiny-power-button: Simplify the code using module_acpi_driver() 2020-11-17 18:12:34 +01:00
utils.c Merge branches 'acpi-cppc', 'acpi-video' and 'acpi-utils' 2021-04-26 17:04:27 +02:00
video_detect.c ACPI: video: use native backlight for GA401/GA502/GA503 2021-04-21 18:54:41 +02:00
wakeup.c ACPI: Fix whitespace inconsistencies 2020-11-09 19:08:06 +01:00