Hi Tom,

[snip]
> >>
> >>> + "fdt_high=0xffffffff\0"                                         \
> >>
> >> Please don't do this, set it to the top of kernel low mem.
> >>
> >
> > The EVM may have up to 8GB of DDR and u-boot can see the first 2GB
> > with physical address range 0x80000000-0xffffffff.
> > If we don't use the "fdt_high" environment variable, u-boot relocates
> > the dtb to the end of that memory, which is outside of the lowmem.
> 
[snip]

> > But K2 lowmem VA starts from 0xc0000000 and has size ~760MB. That
> > corresponds to the physical range 0x80000000-0xaf800000.
> > That is why we have to use the "fdt_high=0xffffffff" environment
> variable.
> >
> > Have I missed something I u-boot memory configuration?
> > Is there a way to tell u-boot to relocate fdt to the end lowmem?
> 
> Yes, set fdt_high to 0xaf800000 instead :)
> 

I think there is a bug in the lmb_alloc_base() and this approach doesn't
work.

else if (lmbbase < max_addr) {
        base = min(lmbbase + lmbsize, max_addr);
        base = lmb_align_down(base - size, align);
} else

For boards that have DDR at the end of 32 bit address space the
(lmbbase + lmbsize) = 0 which is < max_addr.
So, base becomes 0, and moved to the "end of DDR" - size on the next line.

I tried a quick fix in the __lmb_alloc_base() and got the fdt relocated 
correctly.
As I'm not sure that is only one buggy place in the lmb.c I don't want to commit
the quick fix. Let's leave the "fdt_high=0xffffffff" in the Keystone2 for 
awhile      
and change it later when we fix the bug.

Thanks,
Vitaly

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

Reply via email to