mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-05-09 00:46:57 +00:00
This patch extracts information on devices and put them under the `/acrn-config/devices` node in the board XML. The generated XML looks like the following: <devices> <bus type="system"> <acpi_object>\_SB_</acpi_object> <bus id="PNP0A08" type="pci" address="0x0" description="..."> <vendor>0x8086</vendor> <identifier>0x591f</identifier> <subsystem_vendor>0x1028</subsystem_vendor> <subsystem_identifier>0x07a1</subsystem_identifier> <class>0x060000</class> <acpi_object>\_SB_.PCI0</acpi_object> <resource type="bus_number" min="0x0" max="0x3e" len="0x3f"/> <resource type="io_port" min="0x0" max="0xcf7" len="0xcf8"/> <resource type="io_port" min="0xcf8" max="0xcf8" len="0x8"/> <resource type="io_port" min="0xd00" max="0xffff" len="0xf300"/> <resource type="memory" min="0x10000" max="0x1ffff" len="0x0"/> <resource type="memory" min="0xa0000" max="0xbffff" len="0x20000"/> <resource type="memory" min="0xc0000" max="0xc3fff" len="0x4000"/> <resource type="memory" min="0xc4000" max="0xc7fff" len="0x4000"/> ... <capability id="vendor_specific"/> <device address="0x1"> ... </device> ... <bus> <bus> <device> ... <device> <devices> The hierarchy of devices are based on the hierarchy of device objects in the ACPI namespace (which is established by interpreting the ACPI DSDT and SSDT tables). Typically most device objects are under the predefined `_SB_` (i.e. System Bus) object under which an object representing the PCI root complex (`\_SB_.PCI0` in the example above) can be found. The PCI devices attached to bus 0 are listed as children of the PCI root complex node. For each bus or device, the board inspector tries best to parse the information from both ACPI device objects and PCI configuration space to extract the following: - the model (via `_HID` object and PCI vendor ID, device ID and class code), - assigned resources (via `_CRS` object and PCI BARs), - capabilities (via the PCI capability list) v1 -> v2: - Fix references to undeclared modules or variables. - Make the ACPI extractor advanced and not enabled by default. - Extract the secondary I/O and memory-mapped I/O addresses of bridges. Tracked-On: #5922 Signed-off-by: Junjie Mao <junjie.mao@intel.com> |
||
---|---|---|
.. | ||
__init__.py | ||
caps.py | ||
extcaps.py | ||
header.py |