coreboot has some extensions (type 6 & 16) to the E820 types.
When we detect this, mark it as E820_RESERVED.

Signed-off-by: Bin Meng <bmeng...@gmail.com>
---

 arch/x86/cpu/coreboot/sdram.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/arch/x86/cpu/coreboot/sdram.c b/arch/x86/cpu/coreboot/sdram.c
index 9c3ab81..2722886 100644
--- a/arch/x86/cpu/coreboot/sdram.c
+++ b/arch/x86/cpu/coreboot/sdram.c
@@ -22,9 +22,10 @@ DECLARE_GLOBAL_DATA_PTR;
 
 unsigned install_e820_map(unsigned max_entries, struct e820entry *entries)
 {
+       unsigned num_entries;
        int i;
 
-       unsigned num_entries = min((unsigned)lib_sysinfo.n_memranges, 
max_entries);
+       num_entries = min((unsigned)lib_sysinfo.n_memranges, max_entries);
        if (num_entries < lib_sysinfo.n_memranges) {
                printf("Warning: Limiting e820 map to %d entries.\n",
                        num_entries);
@@ -34,8 +35,18 @@ unsigned install_e820_map(unsigned max_entries, struct 
e820entry *entries)
 
                entries[i].addr = memrange->base;
                entries[i].size = memrange->size;
-               entries[i].type = memrange->type;
+
+               /*
+                * coreboot has some extensions (type 6 & 16) to the E820 types.
+                * When we detect this, mark it as E820_RESERVED.
+                */
+               if (memrange->type == CB_MEM_VENDOR_RSVD ||
+                   memrange->type == CB_MEM_TABLE)
+                       entries[i].type = E820_RESERVED;
+               else
+                       entries[i].type = memrange->type;
        }
+
        return num_entries;
 }
 
-- 
1.8.2.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to