mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-02 20:35:32 +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> |
||
---|---|---|
.. | ||
acpiparser | ||
cpuparser | ||
extractors | ||
legacy | ||
lib | ||
memmapparser | ||
pcieparser | ||
smbiosparser | ||
cli.py | ||
README |
board_parser.py will collect all board related info and then generate a board info file for acrn-config host tool usage. usage: python3 run.py <board_name> [--out board_info_file] board_name : the name of board that run ACRN hypervisor, like apl-up2/nuc7i7dnb. It will be used as name of the board configurations folder which created by acrn-config host tool. board_info_file : (optional) the name of board info file. if it is not specified, a name of <board_name>.xml will be generated under the current working directory by default. Please run this script under native Linux environment with root privilege. OS requirement: Release: Ubuntu 18.04+ or ClearLinux 30210+ Tools: cpuid, rdmsr, lspci, dmidecode kernel cmdline: "idle=nomwait intel_idle.max_cstate=0 intel_pstate=disable"