[U-Boot] [PATCH v3] armv8: fsl-layerscale: Rewrite reserving memory for MC and debug server

Simon Glass sjg at chromium.org
Mon Dec 7 18:54:59 CET 2015


Hi York,

On 7 December 2015 at 10:43, York Sun <yorksun at freescale.com> wrote:
>
>
>
> On 11/22/2015 09:53 AM, York Sun wrote:
> >
> >
> > On 11/22/2015 08:11 AM, Simon Glass wrote:
> >> Hi York,
> >>
>
> <snip>
>
> >>> diff --git a/common/board_f.c b/common/board_f.c
> >>> index 8061105..2fd1c21 100644
> >>> --- a/common/board_f.c
> >>> +++ b/common/board_f.c
> >>> @@ -316,6 +316,15 @@ __weak ulong board_get_usable_ram_top(ulong total_size)
> >>>         return gd->ram_top;
> >>>  }
> >>>
> >>> +__weak phys_size_t board_reserve_ram_top(phys_size_t ram_size)
> >>> +{
> >>> +#ifdef CONFIG_SYS_MEM_TOP_HIDE
> >>> +       return ram_size - CONFIG_SYS_MEM_TOP_HIDE;
> >>> +#else
> >>> +       return ram_size;
> >>> +#endif
> >>> +}
> >>> +
> >>>  static int setup_dest_addr(void)
> >>>  {
> >>>         debug("Monitor len: %08lX\n", gd->mon_len);
> >>> @@ -332,19 +341,17 @@ static int setup_dest_addr(void)
> >>>          */
> >>>         gd->secure_ram = gd->ram_size;
> >>>  #endif
> >>> -#if defined(CONFIG_SYS_MEM_TOP_HIDE)
> >>>         /*
> >>>          * Subtract specified amount of memory to hide so that it won't
> >>>          * get "touched" at all by U-Boot. By fixing up gd->ram_size
> >>>          * the Linux kernel should now get passed the now "corrected"
> >>> -        * memory size and won't touch it either. This should work
> >>> -        * for arch/ppc and arch/powerpc. Only Linux board ports in
> >>> -        * arch/powerpc with bootwrapper support, that recalculate the
> >>> -        * memory size from the SDRAM controller setup will have to
> >>> -        * get fixed.
> >>> +        * memory size and won't touch it either. This has been used
> >>> +        * by arch/powerpc exclusively. Now ARMv8 takes advantage of
> >>> +        * thie mechanism. If memory is split into banks, addresses
> >>> +        * need to be calculated.
> >>>          */
> >>> -       gd->ram_size -= CONFIG_SYS_MEM_TOP_HIDE;
> >>> -#endif
> >>> +       gd->ram_size = board_reserve_ram_top(gd->ram_size);
> >>> +
> >>>  #ifdef CONFIG_SYS_SDRAM_BASE
> >>>         gd->ram_top = CONFIG_SYS_SDRAM_BASE;
> >>>  #endif
> >>
> >> Sorry I didn't notice this patch before...
> >>
> >> Can you use the existing board_get_usable_ram_top() for this?
> >>
> >
> > Simon,
> >
> > No. The "top" is not necessarily the end of memory. It is the top of
> > CONFIG_SYS_SDRAM_BASE + get_effective_memsize(). I am trying to avoid reserving
> > memory in the middle.
> >
> > I am using the same way as CONFIG_SYS_MEM_TOP_HIDE, but rewriting it with a weak
> > function.
> >
>
> Simon,
>
> If you are satisfied with my explanation, I am considering to merge this patch.

I think this function is getting pretty complicated. Probably we need
to create a struct with the various parameters in it, and have a
single board function that is called to possibly make adjustments. At
present it is really hard to figure out what is going on and this
patch makes things worse.

I'm fine with that happening later if you want to merge this patch
now. But I think it needs a look.

Regards,
Simon


More information about the U-Boot mailing list