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) >