1# Copyright (C) 2021-2022 Intel Corporation. 2# 3# SPDX-License-Identifier: BSD-3-Clause 4# 5 6import logging 7import lxml.etree 8 9from memmapparser import parse_e820, e820 10from extractors.helpers import get_node, add_child 11 12def extract_layout(memory_node): 13 e820_table = parse_e820() 14 for e820_entry in e820_table: 15 if e820_entry.type == e820.E820_TYPE_RAM: 16 start = "0x{:016x}".format(e820_entry.start) 17 end = "0x{:016x}".format(e820_entry.end) 18 size = e820_entry.end - e820_entry.start + 1 19 add_child(memory_node, "range", start=start, end=end, size=str(size)) 20 21def extract(args, board_etree): 22 memory_node = get_node(board_etree, "//memory") 23 extract_layout(memory_node) 24