Hi, On 1 October 2015 at 12:51, Sjoerd Simons <sjoerd.sim...@collabora.co.uk> wrote: > When malloc_base initially gets setup in the SPL it is based on the > current (early) stack pointer, which for rockchip is pointing into SRAM. > This means simple memory allocations happen in SRAM space, which is > somewhat unfortunate. Specifically a bounce buffer for the mmc allocated > in SRAM space seems to cause the mmc engine to stall/fail causing > timeouts and a failure to load the main u-boot image. > > To resolve this, reconfigure the malloc_base to start at the relocated > stack pointer after DRAM has been setup. > > For reference, things did work fine on rockchip before 596380db was > merged to fix memalign_simple due to a combination of rockchip SDRAM > starting at address 0 and the dw_mmc driver not checking errors from > bounce_buffer_start. As a result, when a bounce buffer needed to be > allocated mem_align simple would fail and return NULL. The mmc driver > ignored the error and happily continued with the bounce buffer address > being set to 0, which just happened to work fine.. > > Signed-off-by: Sjoerd Simons <sjoerd.sim...@collabora.co.uk> > > --- > A potentially better fix for this issue would be to reconfigure the > malloc_base in spl_relocate_stack_gd following the same steps as is done > for the initial setup. However at this point in the release cycle i > preferred to do a minimal rockchip only fix (so those boards become > bootable again) for this issue to minimize the potential impact on other > boards. > > Changes in v2: > - Also gd->malloc_ptr to 0 to not waste any potential space > > arch/arm/mach-rockchip/board-spl.c | 5 +++++ > 1 file changed, 5 insertions(+)
Acked-by: Simon Glass <s...@chromium.org> > > diff --git a/arch/arm/mach-rockchip/board-spl.c > b/arch/arm/mach-rockchip/board-spl.c > index a241d96..982a1d9 100644 > --- a/arch/arm/mach-rockchip/board-spl.c > +++ b/arch/arm/mach-rockchip/board-spl.c > @@ -217,6 +217,11 @@ void board_init_f(ulong dummy) > debug("DRAM init failed: %d\n", ret); > return; > } > + > + /* Now that DRAM is initialized setup base pointer for simple malloc > + * into RAM */ Little nit - can you fix the comment style? Or I can do that when applying if you prefer. > + gd->malloc_base = CONFIG_SPL_STACK_R_ADDR; > + gd->malloc_ptr = 0; > } > > static int setup_led(void) > -- > 2.5.3 > Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot