On Sun, Aug 15, 2021 at 08:13:14PM +0200, Marek Vasut wrote:

> This function is clearly architecture specific code, not board specific
> code. The only difference from the generic arm arch_lmb_reserve() is the
> extra reservation of 16k of memory below the stack bottom, rather than
> the default 4k. Switch this from board_lmb_reserve() to arch_lmb_reserve()
> and use arch_lmb_reserve_generic() with 16k stack reservation parameter
> instead of replicating older version of arch_lmb_reserve() here.
> 
> Signed-off-by: Marek Vasut <marek.vasut+rene...@gmail.com>
> Cc: Alexey Brodkin <alexey.brod...@synopsys.com>
> Cc: Angelo Dureghello <ang...@sysam.it>
> Cc: Daniel Schwierzeck <daniel.schwierz...@gmail.com>
> Cc: Eugeniy Paltsev <eugeniy.palt...@synopsys.com>
> Cc: Hai Pham <hai.pham...@renesas.com>
> Cc: Michal Simek <mon...@monstr.eu>
> Cc: Simon Goldschmidt <simon.k.r.goldschm...@gmail.com>
> Cc: Tom Rini <tr...@konsulko.com>
> Cc: Wolfgang Denk <w...@denx.de>
> Cc: Ye Li <ye...@nxp.com>
> ---
>  arch/arm/mach-imx/misc.c | 21 ++-------------------
>  1 file changed, 2 insertions(+), 19 deletions(-)
> 
> diff --git a/arch/arm/mach-imx/misc.c b/arch/arm/mach-imx/misc.c
> index d82efa7f8f..529601156f 100644
> --- a/arch/arm/mach-imx/misc.c
> +++ b/arch/arm/mach-imx/misc.c
> @@ -86,24 +86,7 @@ static ulong get_sp(void)
>       return ret;
>  }
>  
> -void board_lmb_reserve(struct lmb *lmb)
> +void arch_lmb_reserve(struct lmb *lmb)
>  {
> -     ulong sp, bank_end;
> -     int bank;
> -
> -     sp = get_sp();
> -     debug("## Current stack ends at 0x%08lx ", sp);
> -
> -     /* adjust sp by 16K to be safe */
> -     sp -= 4096 << 2;
> -     for (bank = 0; bank < CONFIG_NR_DRAM_BANKS; bank++) {
> -             if (sp < gd->bd->bi_dram[bank].start)
> -                     continue;
> -             bank_end = gd->bd->bi_dram[bank].start +
> -                     gd->bd->bi_dram[bank].size;
> -             if (sp >= bank_end)
> -                     continue;
> -             lmb_reserve(lmb, sp, bank_end - sp);
> -             break;
> -     }
> +     arch_lmb_reserve_generic(lmb, get_sp(), gd->ram_top, 16384);
>  }

As I previously said, this should be the generic ARM one.  And arguably
all device-tree using architectures should give themselves more headroom
here, based on the additional context we got.  Calling the iMX entry
the arch one is wrong.  If we don't want to address the general problem
more, we should keep this as a board one that reserves an additional
12KiB.

-- 
Tom

Attachment: signature.asc
Description: PGP signature

Reply via email to