<p>Nico Huber has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/26975">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">[RFC] Revert recent bootmem changes<br><br>It wasn't thought through and we might want to revert instead<br>of working on the third serious fixup.<br><br>Revert "bootmem: Keep OS memory map separate from the start"<br><br>This reverts commit ae05d095b36ac835a6b1a221e6858065e5486888.<br><br>Revert "lib/bootmem: ensure ramstage memory isn't given to OS"<br><br>This reverts commit 1ecec5f979b903f7f789f7e05132061d633f65ea.<br><br>Revert "lib/bootmem: Add method to walk OS POV memory tables"<br><br>This reverts commit 64049be508671bbd98e2c69bbe32a2434bc17b9d.<br><br>Revert "lib/bootmem: Add method to walk memory tables"<br><br>This reverts commit c653623d59bc207d035078b63d4bfe1c45e6f58d.<br><br>Revert "lib/bootmem: Add more bootmem tags"<br><br>This reverts commit 23d62dd15c39b3628b102cf6417d476e78ffcdaf.<br><br>Revert "lib/bootmem: Introduce custom bootmem tags"<br><br>This reverts commit 9ab9db0bc5a1bf8bb35980068a840691d54aa5dd.<br><br>Change-Id: If9b28ee50d94fe443a6e2b6e9d337f0c784b18c4<br>---<br>M src/arch/arm/tables.c<br>M src/arch/arm64/tables.c<br>M src/arch/x86/tables.c<br>M src/include/bootmem.h<br>M src/lib/bootmem.c<br>M src/lib/imd_cbmem.c<br>M src/lib/selfboot.c<br>7 files changed, 28 insertions(+), 184 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/75/26975/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/arch/arm/tables.c b/src/arch/arm/tables.c</span><br><span>index 682c2bc..eef6bf2 100644</span><br><span>--- a/src/arch/arm/tables.c</span><br><span>+++ b/src/arch/arm/tables.c</span><br><span>@@ -18,7 +18,6 @@</span><br><span> #include <bootmem.h></span><br><span> #include <boot/tables.h></span><br><span> #include <boot/coreboot_tables.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <symbols.h></span><br><span> </span><br><span> void arch_write_tables(uintptr_t coreboot_table)</span><br><span> {</span><br><span>@@ -26,16 +25,6 @@</span><br><span> </span><br><span> void bootmem_arch_add_ranges(void)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-       DECLARE_OPTIONAL_REGION(ttb_subtables);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- bootmem_add_range((uintptr_t)_ttb, _ttb_size, BM_MEM_RAMSTAGE);</span><br><span style="color: hsl(0, 100%, 40%);">- bootmem_add_range((uintptr_t)_ttb_subtables, _ttb_subtables_size,</span><br><span style="color: hsl(0, 100%, 40%);">-                         BM_MEM_RAMSTAGE);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     if (!IS_ENABLED(CONFIG_COMMON_CBFS_SPI_WRAPPER))</span><br><span style="color: hsl(0, 100%, 40%);">-                return;</span><br><span style="color: hsl(0, 100%, 40%);">- bootmem_add_range((uintptr_t)_postram_cbfs_cache,</span><br><span style="color: hsl(0, 100%, 40%);">-                         _postram_cbfs_cache_size, BM_MEM_RAMSTAGE);</span><br><span> }</span><br><span> </span><br><span> void lb_arch_add_records(struct lb_header *header)</span><br><span>diff --git a/src/arch/arm64/tables.c b/src/arch/arm64/tables.c</span><br><span>index f36679e..eef6bf2 100644</span><br><span>--- a/src/arch/arm64/tables.c</span><br><span>+++ b/src/arch/arm64/tables.c</span><br><span>@@ -18,7 +18,6 @@</span><br><span> #include <bootmem.h></span><br><span> #include <boot/tables.h></span><br><span> #include <boot/coreboot_tables.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <symbols.h></span><br><span> </span><br><span> void arch_write_tables(uintptr_t coreboot_table)</span><br><span> {</span><br><span>@@ -26,12 +25,6 @@</span><br><span> </span><br><span> void bootmem_arch_add_ranges(void)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- bootmem_add_range((uintptr_t)_ttb, _ttb_size, BM_MEM_RAMSTAGE);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if (!IS_ENABLED(CONFIG_COMMON_CBFS_SPI_WRAPPER))</span><br><span style="color: hsl(0, 100%, 40%);">-                return;</span><br><span style="color: hsl(0, 100%, 40%);">- bootmem_add_range((uintptr_t)_postram_cbfs_cache,</span><br><span style="color: hsl(0, 100%, 40%);">-                         _postram_cbfs_cache_size, BM_MEM_RAMSTAGE);</span><br><span> }</span><br><span> </span><br><span> void lb_arch_add_records(struct lb_header *header)</span><br><span>diff --git a/src/arch/x86/tables.c b/src/arch/x86/tables.c</span><br><span>index 0a9a3d5..057f665 100644</span><br><span>--- a/src/arch/x86/tables.c</span><br><span>+++ b/src/arch/x86/tables.c</span><br><span>@@ -266,5 +266,5 @@</span><br><span>  /* Memory from 0 through the forwarding_table is reserved. */</span><br><span>        const uintptr_t base = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   bootmem_add_range(base, forwarding_table - base, BM_MEM_TABLE);</span><br><span style="color: hsl(120, 100%, 40%);">+       bootmem_add_range(base, forwarding_table - base, LB_MEM_TABLE);</span><br><span> }</span><br><span>diff --git a/src/include/bootmem.h b/src/include/bootmem.h</span><br><span>index 0a960c9..6e7d127 100644</span><br><span>--- a/src/include/bootmem.h</span><br><span>+++ b/src/include/bootmem.h</span><br><span>@@ -20,80 +20,21 @@</span><br><span> #include <stdint.h></span><br><span> #include <boot/coreboot_tables.h></span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * Bootmem types match to LB_MEM tags, except for the following:</span><br><span style="color: hsl(0, 100%, 40%);">- * BM_MEM_RAMSTAGE : Memory where any kind of boot firmware resides and that</span><br><span style="color: hsl(0, 100%, 40%);">- *                   should not be touched by bootmem (by example: stack,</span><br><span style="color: hsl(0, 100%, 40%);">- *                   TTB, program, ...).</span><br><span style="color: hsl(0, 100%, 40%);">- * BM_MEM_PAYLOAD  : Memory where any kind of payload resides and that should</span><br><span style="color: hsl(0, 100%, 40%);">- *                   not be touched by bootmem.</span><br><span style="color: hsl(0, 100%, 40%);">- * Start at 0x10000 to make sure that the caller doesn't provide LB_MEM tags.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-enum bootmem_type {</span><br><span style="color: hsl(0, 100%, 40%);">-      BM_MEM_FIRST = 0x10000, /* First entry in this list */</span><br><span style="color: hsl(0, 100%, 40%);">-  BM_MEM_RAM,             /* Memory anyone can use */</span><br><span style="color: hsl(0, 100%, 40%);">-     BM_MEM_RESERVED,        /* Don't use this memory region */</span><br><span style="color: hsl(0, 100%, 40%);">-  BM_MEM_ACPI,            /* ACPI Tables */</span><br><span style="color: hsl(0, 100%, 40%);">-       BM_MEM_NVS,             /* ACPI NVS Memory */</span><br><span style="color: hsl(0, 100%, 40%);">-   BM_MEM_UNUSABLE,        /* Unusable address space */</span><br><span style="color: hsl(0, 100%, 40%);">-    BM_MEM_VENDOR_RSVD,     /* Vendor Reserved */</span><br><span style="color: hsl(0, 100%, 40%);">-   BM_MEM_TABLE,           /* Ram configuration tables are kept in */</span><br><span style="color: hsl(0, 100%, 40%);">-      /* Tags below this point are ignored for the OS table. */</span><br><span style="color: hsl(0, 100%, 40%);">-       BM_MEM_OS_CUTOFF = BM_MEM_TABLE,</span><br><span style="color: hsl(0, 100%, 40%);">-        BM_MEM_RAMSTAGE,</span><br><span style="color: hsl(0, 100%, 40%);">-        BM_MEM_PAYLOAD,</span><br><span style="color: hsl(0, 100%, 40%);">- BM_MEM_LAST,            /* Last entry in this list */</span><br><span style="color: hsl(0, 100%, 40%);">-};</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * Write memory coreboot table. Current resource map is serialized into</span><br><span style="color: hsl(120, 100%, 40%);">+/* Write memory coreboot table. Current resource map is serialized into</span><br><span>  * memtable (LB_MEM_* types). bootmem library is unusable until this function</span><br><span style="color: hsl(0, 100%, 40%);">- * is called first in the write tables path before payload is loaded.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Bootmem types match to LB_MEM tags, except for the following:</span><br><span style="color: hsl(0, 100%, 40%);">- * BM_MEM_RAMSTAGE : Translates to LB_MEM_RAM.</span><br><span style="color: hsl(0, 100%, 40%);">- * BM_MEM_PAYLOAD  : Translates to LB_MEM_RAM.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(120, 100%, 40%);">+ * is called first in the write tables path before payload is loaded. */</span><br><span> void bootmem_write_memory_table(struct lb_memory *mem);</span><br><span> </span><br><span> /* Architecture hook to add bootmem areas the architecture controls when</span><br><span>  * bootmem_write_memory_table() is called. */</span><br><span> void bootmem_arch_add_ranges(void);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Platform hook to add bootmem areas the platform / board controls. */</span><br><span style="color: hsl(0, 100%, 40%);">-void bootmem_platform_add_ranges(void);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> /* Add a range of a given type to the bootmem address space. */</span><br><span style="color: hsl(0, 100%, 40%);">-void bootmem_add_range(uint64_t start, uint64_t size,</span><br><span style="color: hsl(0, 100%, 40%);">-                       const enum bootmem_type tag);</span><br><span style="color: hsl(120, 100%, 40%);">+void bootmem_add_range(uint64_t start, uint64_t size, uint32_t type);</span><br><span> </span><br><span> /* Print current range map of boot memory. */</span><br><span> void bootmem_dump_ranges(void);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-typedef bool (*range_action_t)(const struct range_entry *r, void *arg);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * Walk memory tables from OS point of view and call the provided function,</span><br><span style="color: hsl(0, 100%, 40%);">- * for every region. The caller has to return false to break out of the loop any</span><br><span style="color: hsl(0, 100%, 40%);">- * time, or return true to continue.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @param action The function to call for each memory range.</span><br><span style="color: hsl(0, 100%, 40%);">- * @param arg Pointer passed to function @action. Set to NULL if unused.</span><br><span style="color: hsl(0, 100%, 40%);">- * @return true if the function 'action' returned false.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-bool bootmem_walk_os_mem(range_action_t action, void *arg);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * Walk memory tables and call the provided function, for every region.</span><br><span style="color: hsl(0, 100%, 40%);">- * The caller has to return false to break out of the loop any time, or</span><br><span style="color: hsl(0, 100%, 40%);">- * return true to continue.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @param action The function to call for each memory range.</span><br><span style="color: hsl(0, 100%, 40%);">- * @param arg Pointer passed to function @action. Set to NULL if unused.</span><br><span style="color: hsl(0, 100%, 40%);">- * @return true if the function 'action' returned false.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-bool bootmem_walk(range_action_t action, void *arg);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> /* Return 1 if region targets usable RAM, 0 otherwise. */</span><br><span> int bootmem_region_targets_usable_ram(uint64_t start, uint64_t size);</span><br><span> </span><br><span>diff --git a/src/lib/bootmem.c b/src/lib/bootmem.c</span><br><span>index 90f4970..07391a5 100644</span><br><span>--- a/src/lib/bootmem.c</span><br><span>+++ b/src/lib/bootmem.c</span><br><span>@@ -20,53 +20,15 @@</span><br><span> #include <cbmem.h></span><br><span> #include <device/resource.h></span><br><span> #include <stdlib.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <symbols.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <assert.h></span><br><span> </span><br><span> static int initialized;</span><br><span style="color: hsl(0, 100%, 40%);">-static int table_written;</span><br><span> static struct memranges bootmem;</span><br><span style="color: hsl(0, 100%, 40%);">-static struct memranges bootmem_os;</span><br><span> </span><br><span> static int bootmem_is_initialized(void)</span><br><span> {</span><br><span>  return initialized;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int bootmem_memory_table_written(void)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-      return table_written;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* Platform hook to add bootmem areas the platform / board controls. */</span><br><span style="color: hsl(0, 100%, 40%);">-void __attribute__((weak)) bootmem_platform_add_ranges(void)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* Convert bootmem tag to LB_MEM tag */</span><br><span style="color: hsl(0, 100%, 40%);">-static uint32_t bootmem_to_lb_tag(const enum bootmem_type tag)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-       switch (tag) {</span><br><span style="color: hsl(0, 100%, 40%);">-  case BM_MEM_RAM:</span><br><span style="color: hsl(0, 100%, 40%);">-                return LB_MEM_RAM;</span><br><span style="color: hsl(0, 100%, 40%);">-      case BM_MEM_RESERVED:</span><br><span style="color: hsl(0, 100%, 40%);">-           return LB_MEM_RESERVED;</span><br><span style="color: hsl(0, 100%, 40%);">- case BM_MEM_ACPI:</span><br><span style="color: hsl(0, 100%, 40%);">-               return LB_MEM_ACPI;</span><br><span style="color: hsl(0, 100%, 40%);">-     case BM_MEM_NVS:</span><br><span style="color: hsl(0, 100%, 40%);">-                return LB_MEM_NVS;</span><br><span style="color: hsl(0, 100%, 40%);">-      case BM_MEM_UNUSABLE:</span><br><span style="color: hsl(0, 100%, 40%);">-           return LB_MEM_UNUSABLE;</span><br><span style="color: hsl(0, 100%, 40%);">- case BM_MEM_VENDOR_RSVD:</span><br><span style="color: hsl(0, 100%, 40%);">-                return LB_MEM_VENDOR_RSVD;</span><br><span style="color: hsl(0, 100%, 40%);">-      case BM_MEM_TABLE:</span><br><span style="color: hsl(0, 100%, 40%);">-              return LB_MEM_TABLE;</span><br><span style="color: hsl(0, 100%, 40%);">-    default:</span><br><span style="color: hsl(0, 100%, 40%);">-                printk(BIOS_ERR, "ERROR: Unsupported tag %u\n", tag);</span><br><span style="color: hsl(0, 100%, 40%);">-         return LB_MEM_RESERVED;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> static void bootmem_init(void)</span><br><span> {</span><br><span>    const unsigned long cacheable = IORESOURCE_CACHEABLE;</span><br><span>@@ -80,32 +42,23 @@</span><br><span>   * that each overlapping range will take over the next. Therefore,</span><br><span>    * add cacheable resources as RAM then add the reserved resources.</span><br><span>    */</span><br><span style="color: hsl(0, 100%, 40%);">-     memranges_init(bm, cacheable, cacheable, BM_MEM_RAM);</span><br><span style="color: hsl(0, 100%, 40%);">-   memranges_add_resources(bm, reserved, reserved, BM_MEM_RESERVED);</span><br><span style="color: hsl(0, 100%, 40%);">-       memranges_clone(&bootmem_os, bm);</span><br><span style="color: hsl(120, 100%, 40%);">+ memranges_init(bm, cacheable, cacheable, LB_MEM_RAM);</span><br><span style="color: hsl(120, 100%, 40%);">+ memranges_add_resources(bm, reserved, reserved, LB_MEM_RESERVED);</span><br><span> </span><br><span>        /* Add memory used by CBMEM. */</span><br><span>      cbmem_add_bootmem();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        bootmem_add_range((uintptr_t)_stack, _stack_size, BM_MEM_RAMSTAGE);</span><br><span style="color: hsl(0, 100%, 40%);">-     bootmem_add_range((uintptr_t)_program, _program_size, BM_MEM_RAMSTAGE);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>      bootmem_arch_add_ranges();</span><br><span style="color: hsl(0, 100%, 40%);">-      bootmem_platform_add_ranges();</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-void bootmem_add_range(uint64_t start, uint64_t size,</span><br><span style="color: hsl(0, 100%, 40%);">-                   const enum bootmem_type tag)</span><br><span style="color: hsl(120, 100%, 40%);">+void bootmem_add_range(uint64_t start, uint64_t size, uint32_t type)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-  assert(tag > BM_MEM_FIRST && tag < BM_MEM_LAST);</span><br><span style="color: hsl(0, 100%, 40%);">-  assert(bootmem_is_initialized());</span><br><span style="color: hsl(120, 100%, 40%);">+     if (!bootmem_is_initialized()) {</span><br><span style="color: hsl(120, 100%, 40%);">+              printk(BIOS_ERR, "%s: lib unitialized!\n", __func__);</span><br><span style="color: hsl(120, 100%, 40%);">+               return;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   memranges_insert(&bootmem, start, size, tag);</span><br><span style="color: hsl(0, 100%, 40%);">-       if (tag <= BM_MEM_OS_CUTOFF) {</span><br><span style="color: hsl(0, 100%, 40%);">-               /* Can't change OS tables anymore after they are written out. */</span><br><span style="color: hsl(0, 100%, 40%);">-            assert(!bootmem_memory_table_written());</span><br><span style="color: hsl(0, 100%, 40%);">-                memranges_insert(&bootmem_os, start, size, tag);</span><br><span style="color: hsl(0, 100%, 40%);">-    };</span><br><span style="color: hsl(120, 100%, 40%);">+    memranges_insert(&bootmem, start, size, type);</span><br><span> }</span><br><span> </span><br><span> void bootmem_write_memory_table(struct lb_memory *mem)</span><br><span>@@ -118,36 +71,32 @@</span><br><span>         bootmem_init();</span><br><span>      bootmem_dump_ranges();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      memranges_each_entry(r, &bootmem_os) {</span><br><span style="color: hsl(120, 100%, 40%);">+    memranges_each_entry(r, &bootmem) {</span><br><span>              lb_r->start = pack_lb64(range_entry_base(r));</span><br><span>             lb_r->size = pack_lb64(range_entry_size(r));</span><br><span style="color: hsl(0, 100%, 40%);">-         lb_r->type = bootmem_to_lb_tag(range_entry_tag(r));</span><br><span style="color: hsl(120, 100%, 40%);">+                lb_r->type = range_entry_tag(r);</span><br><span> </span><br><span>              lb_r++;</span><br><span>              mem->size += sizeof(struct lb_memory_range);</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       table_written = 1;</span><br><span> }</span><br><span> </span><br><span> struct range_strings {</span><br><span style="color: hsl(0, 100%, 40%);">-   enum bootmem_type tag;</span><br><span style="color: hsl(120, 100%, 40%);">+        unsigned long tag;</span><br><span>   const char *str;</span><br><span> };</span><br><span> </span><br><span> static const struct range_strings type_strings[] = {</span><br><span style="color: hsl(0, 100%, 40%);">-      { BM_MEM_RAM, "RAM" },</span><br><span style="color: hsl(0, 100%, 40%);">-        { BM_MEM_RESERVED, "RESERVED" },</span><br><span style="color: hsl(0, 100%, 40%);">-      { BM_MEM_ACPI, "ACPI" },</span><br><span style="color: hsl(0, 100%, 40%);">-      { BM_MEM_NVS, "NVS" },</span><br><span style="color: hsl(0, 100%, 40%);">-        { BM_MEM_UNUSABLE, "UNUSABLE" },</span><br><span style="color: hsl(0, 100%, 40%);">-      { BM_MEM_VENDOR_RSVD, "VENDOR RESERVED" },</span><br><span style="color: hsl(0, 100%, 40%);">-    { BM_MEM_TABLE, "CONFIGURATION TABLES" },</span><br><span style="color: hsl(0, 100%, 40%);">-     { BM_MEM_RAMSTAGE, "RAMSTAGE" },</span><br><span style="color: hsl(0, 100%, 40%);">-      { BM_MEM_PAYLOAD, "PAYLOAD" },</span><br><span style="color: hsl(120, 100%, 40%);">+      { LB_MEM_RAM, "RAM" },</span><br><span style="color: hsl(120, 100%, 40%);">+      { LB_MEM_RESERVED, "RESERVED" },</span><br><span style="color: hsl(120, 100%, 40%);">+    { LB_MEM_ACPI, "ACPI" },</span><br><span style="color: hsl(120, 100%, 40%);">+    { LB_MEM_NVS, "NVS" },</span><br><span style="color: hsl(120, 100%, 40%);">+      { LB_MEM_UNUSABLE, "UNUSABLE" },</span><br><span style="color: hsl(120, 100%, 40%);">+    { LB_MEM_VENDOR_RSVD, "VENDOR RESERVED" },</span><br><span style="color: hsl(120, 100%, 40%);">+  { LB_MEM_TABLE, "CONFIGURATION TABLES" },</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static const char *bootmem_range_string(const enum bootmem_type tag)</span><br><span style="color: hsl(120, 100%, 40%);">+static const char *bootmem_range_string(unsigned long tag)</span><br><span> {</span><br><span>   int i;</span><br><span> </span><br><span>@@ -173,34 +122,6 @@</span><br><span>    }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-bool bootmem_walk_os_mem(range_action_t action, void *arg)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-   const struct range_entry *r;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    assert(bootmem_is_initialized());</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       memranges_each_entry(r, &bootmem_os) {</span><br><span style="color: hsl(0, 100%, 40%);">-              if (!action(r, arg))</span><br><span style="color: hsl(0, 100%, 40%);">-                    return true;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       return false;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-bool bootmem_walk(range_action_t action, void *arg)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-      const struct range_entry *r;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    assert(bootmem_is_initialized());</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       memranges_each_entry(r, &bootmem) {</span><br><span style="color: hsl(0, 100%, 40%);">-         if (!action(r, arg))</span><br><span style="color: hsl(0, 100%, 40%);">-                    return true;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       return false;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> int bootmem_region_targets_usable_ram(uint64_t start, uint64_t size)</span><br><span> {</span><br><span>  const struct range_entry *r;</span><br><span>@@ -212,7 +133,7 @@</span><br><span>                   break;</span><br><span> </span><br><span>           if (start >= range_entry_base(r) && end <= range_entry_end(r)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                  if (range_entry_tag(r) == BM_MEM_RAM)</span><br><span style="color: hsl(120, 100%, 40%);">+                 if (range_entry_tag(r) == LB_MEM_RAM)</span><br><span>                                return 1;</span><br><span>            }</span><br><span>    }</span><br><span>@@ -240,7 +161,7 @@</span><br><span>              if (range_entry_size(r) < size)</span><br><span>                   continue;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-           if (range_entry_tag(r) != BM_MEM_RAM)</span><br><span style="color: hsl(120, 100%, 40%);">+         if (range_entry_tag(r) != LB_MEM_RAM)</span><br><span>                        continue;</span><br><span> </span><br><span>                if (range_entry_base(r) >= max_addr)</span><br><span>@@ -267,7 +188,7 @@</span><br><span>        begin = end - size;</span><br><span> </span><br><span>      /* Mark buffer as unusuable for future buffer use. */</span><br><span style="color: hsl(0, 100%, 40%);">-   bootmem_add_range(begin, size, BM_MEM_PAYLOAD);</span><br><span style="color: hsl(120, 100%, 40%);">+       bootmem_add_range(begin, size, LB_MEM_UNUSABLE);</span><br><span> </span><br><span>         return (void *)(uintptr_t)begin;</span><br><span> }</span><br><span>diff --git a/src/lib/imd_cbmem.c b/src/lib/imd_cbmem.c</span><br><span>index 177d2ac..cc1294f 100644</span><br><span>--- a/src/lib/imd_cbmem.c</span><br><span>+++ b/src/lib/imd_cbmem.c</span><br><span>@@ -300,7 +300,7 @@</span><br><span>         size_t size = 0;</span><br><span> </span><br><span>         imd_region_used(cbmem_get_imd(), &baseptr, &size);</span><br><span style="color: hsl(0, 100%, 40%);">-      bootmem_add_range((uintptr_t)baseptr, size, BM_MEM_TABLE);</span><br><span style="color: hsl(120, 100%, 40%);">+    bootmem_add_range((uintptr_t)baseptr, size, LB_MEM_TABLE);</span><br><span> }</span><br><span> </span><br><span> #if ENV_RAMSTAGE || (IS_ENABLED(CONFIG_EARLY_CBMEM_LIST) \</span><br><span>diff --git a/src/lib/selfboot.c b/src/lib/selfboot.c</span><br><span>index 1cf32e5..160e8f5 100644</span><br><span>--- a/src/lib/selfboot.c</span><br><span>+++ b/src/lib/selfboot.c</span><br><span>@@ -381,7 +381,7 @@</span><br><span>                  */</span><br><span>          if (check_regions) {</span><br><span>                         bootmem_add_range(ptr->s_dstaddr, ptr->s_memsz,</span><br><span style="color: hsl(0, 100%, 40%);">-                                     BM_MEM_PAYLOAD);</span><br><span style="color: hsl(120, 100%, 40%);">+                                      LB_MEM_UNUSABLE);</span><br><span>          }</span><br><span> </span><br><span>                if (!overlaps_coreboot(ptr))</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/26975">change 26975</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/26975"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: If9b28ee50d94fe443a6e2b6e9d337f0c784b18c4 </div>
<div style="display:none"> Gerrit-Change-Number: 26975 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Nico Huber <nico.h@gmx.de> </div>