On 23.08.21 04:43, Ying-Chun Liu wrote:
> From: "Ying-Chun Liu (PaulLiu)" <paul...@debian.org>
> 
> When TEE is loaded, we need to restrict the memory usage based
> on rom_pointer[0]
> 
> Signed-off-by: Ying-Chun Liu (PaulLiu) <paul...@debian.org>
> Cc: Fabio Estevam <feste...@denx.de>
> Cc: Frieder Schrempf <frieder.schre...@kontron.de>
> Cc: uboot-imx <uboot-...@nxp.com>

Reviewed-by: Frieder Schrempf <frieder.schre...@kontron.de>

> ---
>  arch/arm/mach-imx/imx8m/soc.c | 16 +++++++++++++---
>  1 file changed, 13 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c
> index f2ddc834d4..863508776d 100644
> --- a/arch/arm/mach-imx/imx8m/soc.c
> +++ b/arch/arm/mach-imx/imx8m/soc.c
> @@ -298,16 +298,26 @@ phys_size_t get_effective_memsize(void)
>  
>  ulong board_get_usable_ram_top(ulong total_size)
>  {
> +     ulong top_addr = PHYS_SDRAM + gd->ram_size;
> +
>       /*
>        * Some IPs have their accessible address space restricted by
>        * the interconnect. Let's make sure U-Boot only ever uses the
>        * space below the 4G address boundary (which is 3GiB big),
>        * even when the effective available memory is bigger.
>        */
> -     if (PHYS_SDRAM + gd->ram_size > 0x80000000)
> -             return 0x80000000;
> +     if (top_addr > 0x80000000)
> +             top_addr = 0x80000000;
> +
> +     /*
> +      * rom_pointer[0] stores the TEE memory start address.
> +      * rom_pointer[1] stores the size TEE uses.
> +      * We need to reserve the memory region for TEE.
> +      */
> +     if (rom_pointer[0] && rom_pointer[1] && top_addr > rom_pointer[0])
> +             top_addr = rom_pointer[0];
>  
> -     return PHYS_SDRAM + gd->ram_size;
> +     return top_addr;
>  }
>  
>  static u32 get_cpu_variant_type(u32 type)
> 

Reply via email to