acrn-hypervisor/misc/config_tools/board_inspector/lib/mmio.py
Junjie Mao 0215603812 board_inspector/acpiparser: add DSDT/SSDT parser
This patch adds a parser and interpreter of ACPI DSDT/SSDT tables in
AML (ACPI Machine Language) in order to understand the complete device
layout and resource allocation.

Kindly note that the interpreter is still experimental and not yet
complete.

Tracked-On: #5922
Signed-off-by: Junjie Mao <junjie.mao@intel.com>
2021-05-16 19:02:00 +08:00

28 lines
748 B
Python

#!/usr/bin/env python3
import argparse
import lxml.etree
def mmio_regions(etree):
ret = []
resources = etree.xpath("//resources/mmio")
for res in resources:
base = res.get("min")
top = res.get("max")
dev = res.getparent().getparent()
obj = dev.get("object")
ret.append((obj, int(base, base=16), int(top, base=16)))
return sorted(ret, key=lambda x:(x[1], x[2]))
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("file", help="board XML file")
args = parser.parse_args()
etree = lxml.etree.parse(args.file)
regions = mmio_regions(etree)
for region in regions:
print("%-4s 0x%08x 0x%08x" % (region[0], region[1], region[2]))