diff mbox series

[1/1] imx8m: Restrict usable memory based on rom_pointer[0]

Message ID 20210823024306.2046708-2-grandpaul@gmail.com
State New
Headers show
Series imx8m: Restrict usable memory based on rom_pointer[0] | expand

Commit Message

Ying-Chun Liu Aug. 23, 2021, 2:43 a.m. UTC
From: "Ying-Chun Liu (PaulLiu)" <paulliu@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) <paulliu@debian.org>

Cc: Fabio Estevam <festevam@denx.de>
Cc: Frieder Schrempf <frieder.schrempf@kontron.de>
Cc: uboot-imx <uboot-imx@nxp.com>
---
 arch/arm/mach-imx/imx8m/soc.c | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

-- 
2.32.0

Comments

Frieder Schrempf Aug. 24, 2021, 6:30 a.m. UTC | #1
On 23.08.21 04:43, Ying-Chun Liu wrote:
> From: "Ying-Chun Liu (PaulLiu)" <paulliu@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) <paulliu@debian.org>

> Cc: Fabio Estevam <festevam@denx.de>

> Cc: Frieder Schrempf <frieder.schrempf@kontron.de>

> Cc: uboot-imx <uboot-imx@nxp.com>


Reviewed-by: Frieder Schrempf <frieder.schrempf@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)

>
diff mbox series

Patch

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)