From c653623d59bc207d035078b63d4bfe1c45e6f58d Mon Sep 17 00:00:00 2001 From: Patrick Rudolph Date: Tue, 10 Apr 2018 09:34:29 +0200 Subject: lib/bootmem: Add method to walk memory tables Add a method to walk bootmem memory tables and call a function for each memory range. The tables might not match with OS sight of view. Return true if the callback function returned false. Required for FIT support in coreboot to find a usable RAM region. Tested on Cavium SoC. Change-Id: I0004e5ad5fe2289827f370f0d0f9979d3cbd3926 Signed-off-by: Patrick Rudolph Reviewed-on: https://review.coreboot.org/25583 Tested-by: build bot (Jenkins) Reviewed-by: Julius Werner Reviewed-by: Aaron Durbin --- src/lib/bootmem.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/lib/bootmem.c') diff --git a/src/lib/bootmem.c b/src/lib/bootmem.c index 4fbc4b3a3f..ed45e0f384 100644 --- a/src/lib/bootmem.c +++ b/src/lib/bootmem.c @@ -180,6 +180,20 @@ void bootmem_dump_ranges(void) } } +bool bootmem_walk(range_action_t action, void *arg) +{ + const struct range_entry *r; + + assert(bootmem_is_initialized()); + + memranges_each_entry(r, &bootmem) { + if (!action(r, arg)) + return true; + } + + return false; +} + int bootmem_region_targets_usable_ram(uint64_t start, uint64_t size) { const struct range_entry *r; -- cgit v1.2.3