From f9eb65c9a586ccacb5d2583c1cf1882212bb592a Mon Sep 17 00:00:00 2001 From: julia Date: Thu, 16 Oct 2025 17:02:38 +1100 Subject: [PATCH] tools: don't exclude device-tree reserved memory ... from the device UT listed by platform_gen. The kernel itself does not care about this memory, and it is just given as device UT. We also just remove the reserved array entirely from the return of `get_physical_memory` since it only seems to be a footgun, it's only used internally to affect what memory the kernel wants to use. Co-authored-by: Kent McLeod Signed-off-by: julia --- tools/hardware/outputs/c_header.py | 2 +- tools/hardware/outputs/json.py | 5 ++--- tools/hardware/outputs/yaml.py | 5 ++--- tools/hardware/utils/memory.py | 8 ++++---- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/tools/hardware/outputs/c_header.py b/tools/hardware/outputs/c_header.py index fdc7a9705..a968c95a3 100644 --- a/tools/hardware/outputs/c_header.py +++ b/tools/hardware/outputs/c_header.py @@ -212,7 +212,7 @@ def run(tree: FdtParser, hw_yaml: HardwareYaml, config: Config, kernel_config_di if not args.header_out: raise ValueError('You need to specify a header-out to use c header output') - physical_memory, reserved, physBase = hardware.utils.memory.get_physical_memory(tree, config) + physical_memory, physBase = hardware.utils.memory.get_physical_memory(tree, config) kernel_regions, kernel_macros = get_kernel_devices(tree, hw_yaml, kernel_config_dict) create_c_header_file( diff --git a/tools/hardware/outputs/json.py b/tools/hardware/outputs/json.py index 99044f3e1..4138adf01 100644 --- a/tools/hardware/outputs/json.py +++ b/tools/hardware/outputs/json.py @@ -56,10 +56,9 @@ def run(tree: FdtParser, hw_yaml: HardwareYaml, config: Config, if not args.json_out: raise ValueError('you need to provide a json-out to use the JSON output method') - phys_mem, reserved, _ = hardware.utils.memory.get_physical_memory(tree, config) + phys_mem, _ = hardware.utils.memory.get_physical_memory(tree, config) kernel_devs = get_kernel_devices(tree, hw_yaml, kernel_config_dict) - dev_mem = hardware.utils.memory.get_addrspace_exclude( - list(reserved) + phys_mem + kernel_devs, config) + dev_mem = hardware.utils.memory.get_addrspace_exclude(phys_mem + kernel_devs, config) create_json_file(dev_mem, phys_mem, args.json_out) diff --git a/tools/hardware/outputs/yaml.py b/tools/hardware/outputs/yaml.py index 23ab54103..ea1c008d0 100644 --- a/tools/hardware/outputs/yaml.py +++ b/tools/hardware/outputs/yaml.py @@ -61,10 +61,9 @@ def run(tree: FdtParser, hw_yaml: HardwareYaml, config: Config, if not args.yaml_out: raise ValueError('you need to provide a yaml-out to use the yaml output method') - phys_mem, reserved, _ = hardware.utils.memory.get_physical_memory(tree, config) + phys_mem, _ = hardware.utils.memory.get_physical_memory(tree, config) kernel_devs = get_kernel_devices(tree, hw_yaml, kernel_config_dict) - dev_mem = hardware.utils.memory.get_addrspace_exclude( - list(reserved) + phys_mem + kernel_devs, config) + dev_mem = hardware.utils.memory.get_addrspace_exclude(phys_mem + kernel_devs, config) create_yaml_file(dev_mem, phys_mem, args.yaml_out) diff --git a/tools/hardware/utils/memory.py b/tools/hardware/utils/memory.py index 56134cb7d..4390ca580 100644 --- a/tools/hardware/utils/memory.py +++ b/tools/hardware/utils/memory.py @@ -4,7 +4,7 @@ # SPDX-License-Identifier: GPL-2.0-only # -from typing import List, Set +from typing import List, Set, Tuple import hardware from hardware.config import Config @@ -83,7 +83,7 @@ def reserve_regions(regions: Set[Region], reserved: Set[Region]) -> Set[Region]: return ret -def align_memory(regions: Set[Region], config: Config) -> List[Region]: +def align_memory(regions: Set[Region], config: Config) -> Tuple[List[Region], int]: ''' Given a set of regions, sort them and align the first so that the ELF loader will be able to load the kernel into it. Will return the aligned memory region list, a set of any regions of memory that were @@ -99,14 +99,14 @@ def align_memory(regions: Set[Region], config: Config) -> List[Region]: return ret, physBase -def get_physical_memory(tree: FdtParser, config: Config) -> List[Region]: +def get_physical_memory(tree: FdtParser, config: Config) -> Tuple[List[Region], int]: ''' returns a list of regions representing physical memory as used by the kernel ''' regions = merge_memory_regions(get_memory_regions(tree)) reserved = parse_reserved_regions(tree.get_path('/reserved-memory')) regions = reserve_regions(regions, reserved) regions, physBase = align_memory(regions, config) - return regions, reserved, physBase + return regions, physBase def get_addrspace_exclude(regions: List[Region], config: Config):