x86: coreboot: Correctly report E820 types
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.cn@gmail.com>
This commit is contained in:
parent
89b870814c
commit
52b778603b
@ -22,9 +22,10 @@ DECLARE_GLOBAL_DATA_PTR;
|
|||||||
|
|
||||||
unsigned install_e820_map(unsigned max_entries, struct e820entry *entries)
|
unsigned install_e820_map(unsigned max_entries, struct e820entry *entries)
|
||||||
{
|
{
|
||||||
|
unsigned num_entries;
|
||||||
int i;
|
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) {
|
if (num_entries < lib_sysinfo.n_memranges) {
|
||||||
printf("Warning: Limiting e820 map to %d entries.\n",
|
printf("Warning: Limiting e820 map to %d entries.\n",
|
||||||
num_entries);
|
num_entries);
|
||||||
@ -34,8 +35,18 @@ unsigned install_e820_map(unsigned max_entries, struct e820entry *entries)
|
|||||||
|
|
||||||
entries[i].addr = memrange->base;
|
entries[i].addr = memrange->base;
|
||||||
entries[i].size = memrange->size;
|
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;
|
return num_entries;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user