linux_dsm_epyc7002/include/acpi
Rafael J. Wysocki 20dacb71ad ACPI / PM: Rework device power management to follow ACPI 6
The ACPI 6 specification has made some changes in the device power
management area.  In particular:

 * The D3hot power state is now supposed to be always available
   (instead of D3cold) and D3cold is only regarded as valid if the
   _PR3 object is present for the given device.

 * The required ordering of transitions into power states deeper than
   D0 is now such that for a transition into state Dx the _PSx method
   is supposed to be executed first, if present, and the states of
   the power resources the device depends on are supposed to be
   changed after that.

 * It is now explicitly forbidden to transition devices from
   lower-power (deeper) into higher-power (shallower) power states
   other than D0.

Those changes have been made so the specification reflects the
Windows' device power management code that the vast majority of
systems using ACPI is validated against.

To avoid artificial differences in ACPI device power management
between Windows and Linux, modify the ACPI device power management
code to follow the new specification.  Add comments explaining the
code flow in some unclear places.

This only may affect some real corner cases in which the OS behavior
expected by the firmware is different from the Windows one, but that's
quite unlikely.  The transition ordering change affects transitions
to D1 and D2 which are rarely used (if at all) and into D3hot and
D3cold for devices actually having _PR3, but those are likely to
be validated against Windows anyway.  The other changes may affect
code calling acpi_device_get_power() or acpi_device_update_power()
where ACPI_STATE_D3_HOT may be returned instead of ACPI_STATE_D3_COLD
(that's why the ACPI fan driver needs to be updated too) and since
transitions into ACPI_STATE_D3_HOT may remove power now, it is better
to avoid this one in acpi_pm_device_sleep_state() if the "no power
off" PM QoS flag is set.

The only existing user of acpi_device_can_poweroff() really cares
about the case when _PR3 is present, so the change in that function
should not cause any problems to happen too.

A plus is that PCI_D3hot can be mapped to ACPI_STATE_D3_HOT
now and the compatibility with older systems should be covered
automatically.

In any case, if any real problems result from this, it still will
be better to follow the Windows' behavior (which now is reflected
by the specification too) in general and handle the cases when it
doesn't work via quirks.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-05-16 01:55:35 +02:00
..
platform ACPICA: Utilities: split IO address types from data type models. 2015-04-14 14:51:52 +02:00
acbuffer.h ACPICA: Update Copyright headers to 2015 2015-02-05 15:31:43 +01:00
acconfig.h ACPICA: Update Copyright headers to 2015 2015-02-05 15:31:43 +01:00
acexcep.h ACPICA: Update Copyright headers to 2015 2015-02-05 15:31:43 +01:00
acnames.h ACPICA: Update Copyright headers to 2015 2015-02-05 15:31:43 +01:00
acoutput.h kernel.h: remove ancient __FUNCTION__ hack 2015-02-12 18:54:13 -08:00
acpi_bus.h ACPI / PM: Rework device power management to follow ACPI 6 2015-05-16 01:55:35 +02:00
acpi_drivers.h ACPI / PCI: Stub out pci_acpi_crs_quirks() and make it x86 specific 2014-05-07 01:09:47 +02:00
acpi_io.h ACPI: fix acpi_os_ioremap for arm64 2015-03-25 11:49:30 +00:00
acpi_lpat.h ACPI / LPAT: Common table processing functions 2015-01-29 21:02:10 +08:00
acpi_numa.h ACPI / numa: Make __acpi_map_pxm_to_node(), acpi_get_pxm() static 2014-02-03 10:39:38 -07:00
acpi.h ACPICA: Update Copyright headers to 2015 2015-02-05 15:31:43 +01:00
acpiosxf.h ACPICA: Update Copyright headers to 2015 2015-02-05 15:31:43 +01:00
acpixf.h ACPICA: Update version to 20150410. 2015-04-14 14:51:56 +02:00
acrestyp.h ACPICA: Update Copyright headers to 2015 2015-02-05 15:31:43 +01:00
actbl1.h ACPICA: Update Copyright headers to 2015 2015-02-05 15:31:43 +01:00
actbl2.h ACPICA: Disassembler: Some cleanup of the table dump module. 2015-04-14 14:51:56 +02:00
actbl3.h ACPICA: Update Copyright headers to 2015 2015-02-05 15:31:43 +01:00
actbl.h ACPICA: Update Copyright headers to 2015 2015-02-05 15:31:43 +01:00
actypes.h ACPICA: remove duplicate u8 typedef 2015-04-28 23:58:54 +02:00
apei.h acpi, apei, ghes: Factor out ioremap virtual memory for IRQ and NMI context. 2014-07-22 15:05:06 -07:00
button.h ACPI: make ACPI button funcs no-ops if not built in 2009-09-17 14:48:23 -07:00
ghes.h ACPICA: Restore error table definitions to reduce code differences between Linux and ACPICA upstream. 2014-06-16 22:33:50 +02:00
hed.h ACPI Hardware Error Device (PNP0C33) support 2010-05-19 22:40:24 -04:00
pdc_intel.h ACPI: Enable bit 11 in _PDC to advertise hw coord 2009-02-07 00:41:14 -05:00
processor.h ACPI / processor: Introduce phys_cpuid_t for CPU hardware ID 2015-03-26 15:12:51 +00:00
reboot.h Add the ability to reset the machine using the RESET_REG in ACPI's FADT table. 2008-07-16 23:27:08 +02:00
video.h ACPI / i915: ignore firmware requests for backlight change 2014-07-07 23:38:05 +02:00