diff mbox

[U-Boot,03/11] x86: coreboot: Correctly report E820 types

Message ID 1439450957-23197-4-git-send-email-bmeng.cn@gmail.com
State Accepted
Delegated to: Simon Glass
Headers show

Commit Message

Bin Meng Aug. 13, 2015, 7:29 a.m. UTC
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(-)

Comments

Simon Glass Aug. 16, 2015, 9:27 p.m. UTC | #1
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
Bin Meng Aug. 17, 2015, 1:22 a.m. UTC | #2
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
Simon Glass Aug. 17, 2015, 10:15 p.m. UTC | #3
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 mbox

Patch

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;
 }