[U-Boot] Fix wrong >4G filtering

Submitted by Vladimir 'φ-coder/phcoder' Serbinenko on April 7, 2013, 3:33 p.m.

Details

Message ID 516191E2.8040403@gmail.com
State Changes Requested
Delegated to: Simon Glass
Headers show

Commit Message

Vladimir 'φ-coder/phcoder' Serbinenko April 7, 2013, 3:33 p.m.
Filtering of >4G chunks is wrong and one of such chunks can be improperly declared
as usable ram top after being cut down to 4G, so uboot tries to relocate to ROM.

Comments

Simon Glass April 15, 2013, 11:51 p.m.
On Sun, Apr 7, 2013 at 8:33 AM, Vladimir 'φ-coder/phcoder' Serbinenko
<phcoder@gmail.com> wrote:
> Filtering of >4G chunks is wrong and one of such chunks can be improperly declared
> as usable ram top after being cut down to 4G, so uboot tries to relocate to ROM.
>

With commit message re-formatted to 80cols, applied to x86/master, thank you.
Simon Glass April 16, 2013, 8:03 p.m.
+Tom

Hi Vladimir,

On Mon, Apr 15, 2013 at 4:51 PM, Simon Glass <sjg@chromium.org> wrote:
> On Sun, Apr 7, 2013 at 8:33 AM, Vladimir 'φ-coder/phcoder' Serbinenko
> <phcoder@gmail.com> wrote:
>> Filtering of >4G chunks is wrong and one of such chunks can be improperly declared
>> as usable ram top after being cut down to 4G, so uboot tries to relocate to ROM.
>>
>
> With commit message re-formatted to 80cols, applied to x86/master, thank you.

My mistake - this is missing a signoff, and also should not have a
Nickname in your email.

Can you please resend this patch with these problems fixed?

Regards,
Simon

Patch hide | download patch | download mbox

diff --git a/arch/x86/cpu/coreboot/sdram.c b/arch/x86/cpu/coreboot/sdram.c
index 786009c..3b8dd5e 100644
--- a/arch/x86/cpu/coreboot/sdram.c
+++ b/arch/x86/cpu/coreboot/sdram.c
@@ -77,8 +77,11 @@  ulong board_get_usable_ram_top(ulong total_size)
 			continue;
 
 		/* Filter memory over 4GB. */
+		if (start > 0xffffffffULL)
+			continue;
 		if (end > 0xffffffffULL)
-			end = 0x100000000ULL;
+			end = 0xffffffffULL;
+
 		/* Skip this region if it's too small. */
 		if (end - start < total_size)
 			continue;