Message ID | 1439450957-23197-4-git-send-email-bmeng.cn@gmail.com |
---|---|
State | Accepted |
Delegated to: | Simon Glass |
Headers | show |
Hi Bin, On 13 August 2015 at 01:29, Bin Meng <bmeng.cn@gmail.com> wrote: > 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> > --- > > arch/x86/cpu/coreboot/sdram.c | 15 +++++++++++++-- > 1 file changed, 13 insertions(+), 2 deletions(-) Acked-by: Simon Glass <sjg@chromium.org> I wonder what the kernel does when it sees the coreboot values? Regards, Simon
Hi Simon, On Mon, Aug 17, 2015 at 5:27 AM, Simon Glass <sjg@chromium.org> wrote: > Hi Bin, > > On 13 August 2015 at 01:29, Bin Meng <bmeng.cn@gmail.com> wrote: >> 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> >> --- >> >> arch/x86/cpu/coreboot/sdram.c | 15 +++++++++++++-- >> 1 file changed, 13 insertions(+), 2 deletions(-) > > Acked-by: Simon Glass <sjg@chromium.org> > > I wonder what the kernel does when it sees the coreboot values? > I noticed this by checking kernel dmesg, where the log prints the E820 ranges as well as types. For type 6 & 16, kernel does not understand that and it just prints the typer number. I believe kernel will ignore these. Regards, Bin
On 16 August 2015 at 19:22, Bin Meng <bmeng.cn@gmail.com> wrote: > Hi Simon, > > On Mon, Aug 17, 2015 at 5:27 AM, Simon Glass <sjg@chromium.org> wrote: >> Hi Bin, >> >> On 13 August 2015 at 01:29, Bin Meng <bmeng.cn@gmail.com> wrote: >>> 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> >>> --- >>> >>> arch/x86/cpu/coreboot/sdram.c | 15 +++++++++++++-- >>> 1 file changed, 13 insertions(+), 2 deletions(-) >> >> Acked-by: Simon Glass <sjg@chromium.org> >> >> I wonder what the kernel does when it sees the coreboot values? >> > > I noticed this by checking kernel dmesg, where the log prints the E820 > ranges as well as types. For type 6 & 16, kernel does not understand > that and it just prints the typer number. I believe kernel will ignore > these. > > Regards, > Bin Applied to u-boot-x86, thanks!
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; }
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> --- arch/x86/cpu/coreboot/sdram.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-)