forked from Imagelibrary/seL4
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 <kent@kry10.com> Signed-off-by: julia <git.ts@trainwit.ch>
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user