From 52ee5827e10b8fc9c8c01b3d499d5b8615ac98c9 Mon Sep 17 00:00:00 2001 From: Junjie Mao Date: Mon, 3 May 2021 16:17:30 +0800 Subject: [PATCH] board_inspector/extractors: extract memory layout This patch extracts information on mapping of available RAM and put them under the `/acrn-config/memory` node in the board XML. Each range of available RAM is represented by its start (host physical) address, end address and size (in byte). The following is an example of the generated XML. Tracked-On: #5922 Signed-off-by: Junjie Mao --- .../board_inspector/extractors/30-memory.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 misc/config_tools/board_inspector/extractors/30-memory.py diff --git a/misc/config_tools/board_inspector/extractors/30-memory.py b/misc/config_tools/board_inspector/extractors/30-memory.py new file mode 100644 index 000000000..164e7a4cb --- /dev/null +++ b/misc/config_tools/board_inspector/extractors/30-memory.py @@ -0,0 +1,23 @@ +# Copyright (C) 2021 Intel Corporation. All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# + +import logging +import lxml.etree + +from memmapparser import parse_e820, e820 +from extractors.helpers import get_node, add_child + +def extract_layout(memory_node): + e820_table = parse_e820() + for e820_entry in e820_table: + if e820_entry.type == e820.E820_TYPE_RAM: + start = "0x{:016x}".format(e820_entry.start) + end = "0x{:016x}".format(e820_entry.end) + size = e820_entry.end - e820_entry.start + 1 + add_child(memory_node, "range", start=start, end=end, size=str(size)) + +def extract(board_etree): + memory_node = get_node(board_etree, "//memory") + extract_layout(memory_node)