[U-Boot] [PATCH] env_mmc: avoid stack allocation for env

Tim Harvey tharvey at gateworks.com
Thu May 14 00:40:14 CEST 2015


On Wed, May 13, 2015 at 12:58 PM, Tim Harvey <tharvey at gateworks.com> wrote:
> On Tue, May 12, 2015 at 8:14 AM, Tom Rini <trini at konsulko.com> wrote:
>> On Mon, May 11, 2015 at 12:08:25PM -0700, Tim Harvey wrote:
>>> On Fri, May 8, 2015 at 4:14 PM, Tom Rini <trini at konsulko.com> wrote:
>>> > On Sat, May 09, 2015 at 12:15:37AM +0200, Marek Vasut wrote:
>>> >> On Friday, May 08, 2015 at 11:51:36 PM, Tim Harvey wrote:
>>> >> > Allocating space for temporary env on the stack makes env_relocate_spec()
>>> >> > unsuitable for SPL environments which have very little stack.
>>> >>
>>> >> Well yeah, but what if you don't have malloc area ? I'd expect that
>>> >> the be the case in SPL quite often.
>>> >
>>> > OK, hold up.  We went through this a while back which is why things are
>>> > how they are today.  First, we have things setup today such that you can
>>> > throw stack (at the point we do env in SPL) into DDR.  This means we can
>>> > keep doing things the way they are.  You can take a look at
>>> > include/configs/am335x_evm.h and where CONFIG_EMMC_BOOT is set, that's
>>> > how we do what it looks like you're trying to do on imx6 but on TI
>>> > am335x.
>>>
>>> Yes, I'm doing this on Gateworks Ventana (board/gateworks/gw_ventana)
>>> based on IMX6 which has a limmited stack size during SPL. I don't see
>>> anything magic in include/configs/am335x_evm.h that catches my
>>> attention. Do you know where the code is that lets you point the stack
>>> to DDR? It sounds like that's what I need.
>>
>> Ah oops.  Kconfig, we use Kconfig now :)
>> configs/am335x_evm_defconfig:CONFIG_SPL_STACK_R=y
>> configs/am335x_evm_defconfig:CONFIG_SPL_STACK_R_ADDR=0x82000000
>>
>> That's moving stack to DDR and then grabbing 0x82000000 for stack (base
>> + 0x02000000 which is not too high, not too low, not likely to stomp on
>> the kernel).
>
> thats strange... common/spl/spl.c uses CONFIG_SPL_STACK_R as the
> address not CONFIG_SPL_STACK_R_ADDR - how can that even compile?
>
> http://git.denx.de/?p=u-boot.git;a=blob;f=common/spl/spl.c;#l324

Tom,

I don't really understand the CONFIG_SPL_STACK_R usage at all. The
only thing that uses CONFIG_SPL_STACK_R is spl_relocate_stack_gd which
is called from arch/arm/lib/crt0.S 'after' board_init_f() is called,
which will never return for SPL because we loaded and jumped to
u-boot.img.

How is this working for the am335x stuff?

Tim


More information about the U-Boot mailing list