linux_dsm_epyc7002/include/acpi
Rafael J. Wysocki 445b0eb058 ACPI / property: Add support for data-only subnodes
In some cases, the information expressed via device properties is
hierarchical by nature.  For example, the properties of a composite
device consisting of multiple semi-dependent components may need
to be represented in the form of a tree of property data sets
corresponding to specific components of the device.

Unfortunately, using ACPI device objects for this purpose turns out
to be problematic, mostly due to the assumption made by some operating
systems (that platform firmware generally needs to work with) that
each device object in the ACPI namespace represents a device requiring
a separate driver.  That assumption leads to complications which
reportedly are impractically difficult to overcome and a different
approach is needed for the sake of interoperability.

The approach implemented here is based on extending _DSD via pointers
(links) to additional ACPI objects returning data packages formatted
in accordance with the _DSD formatting rules defined by Section 6.2.5
of ACPI 6.  Those additional objects are referred to as data-only
subnodes of the device object containing the _DSD pointing to them.

The links to them need to be located in a separate section of the
_DSD data package following UUID dbb8e3e6-5886-4ba6-8795-1319f52a966b
referred to as the Hierarchical Data Extension UUID as defined in [1].
Each of them is represented by a package of two strings.  The first
string in that package (the key) is regarded as the name of the
data-only subnode pointed to by the link.  The second string in it
(the target) is expected to hold the ACPI namespace path (possibly
utilizing the usual ACPI namespace search rules) of an ACPI object
evaluating to a data package extending the _DSD.

The device properties initialization code follows those links,
creates a struct acpi_data_node object for each of them to store
the data returned by the ACPI object pointed to by it and processes
those data recursively (which may lead to the creation of more
struct acpi_data_node objects if the returned data package contains
the Hierarchical Data Extension UUID section with more links in it).

All of the struct acpi_data_node objects are present until the the
ACPI device object containing the _DSD with links to them is deleted
and they are deleted along with that object.

[1]: http://www.uefi.org/sites/default/files/resources/_DSD-hierarchical-data-extension-UUID-v1.pdf

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Tested-by: Mika Westerberg <mika.westerberg@linux.intel.com>
2015-09-15 01:47:34 +02:00
..
platform ACPICA: Header support to improve compatibility with MSVC 2015-08-25 23:11:32 +02:00
acbuffer.h ACPICA: Disassembler: Remove duplicate code in _PLD processing. 2015-08-25 23:11:30 +02:00
acconfig.h ACPICA: Make the max-number-of-loops runtime configurable 2015-08-25 23:11:32 +02:00
acexcep.h ACPICA: Correctly cleanup after a ACPI table load failure 2015-08-25 23:11:30 +02:00
acnames.h ACPICA: Utilities: Add _CLS processing 2015-07-01 23:17:53 +02:00
acoutput.h ACPICA: Executer: Add option to bypass opcode tracing 2015-07-23 23:09:07 +02:00
acpi_bus.h ACPI / property: Add support for data-only subnodes 2015-09-15 01:47:34 +02:00
acpi_drivers.h ACPI: Remove FSF mailing addresses 2015-07-08 02:27:32 +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: Executer: Add OSL trace hook support 2015-07-23 23:09:07 +02:00
acpixf.h ACPICA: Update version to 20150818 2015-08-25 23:11:33 +02:00
acrestyp.h ACPICA: Update Copyright headers to 2015 2015-02-05 15:31:43 +01:00
actbl1.h ACPICA: ACPI 6.0: Add values for MADT GIC version field 2015-07-01 23:17:53 +02:00
actbl2.h ACPICA: iASL: Add support for TCPA Server Table 2015-07-23 23:09:08 +02:00
actbl3.h ACPICA: Update definitions for the TCPA and TPM2 ACPI tables 2015-07-01 23:17:56 +02:00
actbl.h ACPICA: Namespace: Add support of OSDT table 2015-07-01 23:17:54 +02:00
actypes.h ACPICA: Debugger: Add option to display namespace summary/counts 2015-08-25 23:11:32 +02:00
acuuid.h ACPICA: Fix for ill-formed GUID strings for NFIT tables. 2015-05-25 23:42:34 +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 Merge branch 'pm-cpufreq' 2015-09-01 15:52:35 +02: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 / video: Inline acpi_video_set_dmi_backlight_type 2015-06-24 19:59:28 +02:00