mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-05-31 19:35:28 +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> |
||
---|---|---|
.. | ||
acpi_gen | ||
acpi_template | ||
board_config | ||
board_inspector | ||
config_app | ||
data | ||
hv_config | ||
kconfig | ||
launch_config | ||
library | ||
scenario_config | ||
schema | ||
static_allocators | ||
xforms | ||
README |
folder structure Kconfig : Select working scenario and target board, configure ACRN hypervisor capabilities and features. target : Get target board information under native Linux environment and generate board_info XML. board_config : Parse board_info XML and scenario XML to generate board related configuration files under misc/acrn-config/xmls/board-xmls/ folder. scenario_config : Parse board_info XML and scenario XML to generate scenario based VM configuration files under misc/acrn-config/xmls/config-xmls/$(BOARD)/ folder. launch_config : Parse board_info XML, scenario XML and devicemodel param XML to generate launch script for post-launched vm under misc/acrn-config/xmls/config-xmls/$(BOARD)/ folder. library : The folder stores shared software modules or libs for acrn-config offline tool.