[PATCH 14/14] lmb: Switch imx board_lmb_reserve() to arch_lmb_reserve()

Tom Rini trini at konsulko.com
Sun Aug 15 21:47:13 CEST 2021


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+renesas at gmail.com>
> Cc: Alexey Brodkin <alexey.brodkin at synopsys.com>
> Cc: Angelo Dureghello <angelo at sysam.it>
> Cc: Daniel Schwierzeck <daniel.schwierzeck at gmail.com>
> Cc: Eugeniy Paltsev <Eugeniy.Paltsev at synopsys.com>
> Cc: Hai Pham <hai.pham.ud at renesas.com>
> Cc: Michal Simek <monstr at monstr.eu>
> Cc: Simon Goldschmidt <simon.k.r.goldschmidt at gmail.com>
> Cc: Tom Rini <trini at konsulko.com>
> Cc: Wolfgang Denk <wd at denx.de>
> Cc: Ye Li <ye.li at 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20210815/4054d0b3/attachment.sig>


More information about the U-Boot mailing list