mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-01 03:45:29 +00:00
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>
28 lines
748 B
Python
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]))
|