diff mbox series

[U-Boot] apalis_imx6: allocate specific region of memory to OP-TEE

Message ID 20190902212135.8031-1-ricardo@foundries.io
State Changes Requested
Delegated to: Stefano Babic
Headers show
Series [U-Boot] apalis_imx6: allocate specific region of memory to OP-TEE | expand

Commit Message

Ricardo Salveti Sept. 2, 2019, 9:21 p.m. UTC
OP-TEE uses the memory region defined by the maximum DRAM address minus
CONFIG_OPTEE_TZDRAM_SIZE, so subtract CONFIG_OPTEE_TZDRAM_SIZE from the
available DRAM size to avoid conflicts.

Signed-off-by: Ricardo Salveti <ricardo@foundries.io>
---
 board/toradex/apalis_imx6/apalis_imx6.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Peng Fan Sept. 3, 2019, 3:09 a.m. UTC | #1
> Subject: [PATCH] apalis_imx6: allocate specific region of memory to OP-TEE
> 
> OP-TEE uses the memory region defined by the maximum DRAM address
> minus CONFIG_OPTEE_TZDRAM_SIZE, so subtract
> CONFIG_OPTEE_TZDRAM_SIZE from the available DRAM size to avoid
> conflicts.
> 
> Signed-off-by: Ricardo Salveti <ricardo@foundries.io>
> ---
>  board/toradex/apalis_imx6/apalis_imx6.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/board/toradex/apalis_imx6/apalis_imx6.c
> b/board/toradex/apalis_imx6/apalis_imx6.c
> index 6421a22c25..fa7fcc8d46 100644
> --- a/board/toradex/apalis_imx6/apalis_imx6.c
> +++ b/board/toradex/apalis_imx6/apalis_imx6.c
> @@ -75,6 +75,11 @@ int dram_init(void)
>  	gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE,
>  				    (ulong)imx_ddr_size());
> 
> +	/* Subtract the defined OPTEE runtime firmware length */ #ifdef
> +CONFIG_OPTEE_TZDRAM_SIZE
> +	gd->ram_size -= CONFIG_OPTEE_TZDRAM_SIZE; #endif
> +

Has OPTEE been enabled? I not see that in defconfig.

Regards,
Peng.

>  	return 0;
>  }
> 
> --
> 2.23.0
Max Krummenacher Sept. 3, 2019, 12:58 p.m. UTC | #2
On Mon, 2019-09-02 at 18:21 -0300, Ricardo Salveti wrote:
> OP-TEE uses the memory region defined by the maximum DRAM address minus
> CONFIG_OPTEE_TZDRAM_SIZE, so subtract CONFIG_OPTEE_TZDRAM_SIZE from the
> available DRAM size to avoid conflicts.
> 
> Signed-off-by: Ricardo Salveti <ricardo@foundries.io>
> ---
>  board/toradex/apalis_imx6/apalis_imx6.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/board/toradex/apalis_imx6/apalis_imx6.c b/board/toradex/apalis_imx6/apalis_imx6.c
> index 6421a22c25..fa7fcc8d46 100644
> --- a/board/toradex/apalis_imx6/apalis_imx6.c
> +++ b/board/toradex/apalis_imx6/apalis_imx6.c
> @@ -75,6 +75,11 @@ int dram_init(void)
>  	gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE,
>  				    (ulong)imx_ddr_size());
>  
> +	/* Subtract the defined OPTEE runtime firmware length */
> +#ifdef CONFIG_OPTEE_TZDRAM_SIZE
> +	gd->ram_size -= CONFIG_OPTEE_TZDRAM_SIZE;
> +#endif
> +
>  	return 0;
>  }
> 

>  
Acked-by: Max Krummenacher <max.krummenacher@toradex.com>
Ricardo Salveti Sept. 3, 2019, 1:52 p.m. UTC | #3
On Tue, Sep 3, 2019 at 12:09 AM Peng Fan <peng.fan@nxp.com> wrote:
>
> > Subject: [PATCH] apalis_imx6: allocate specific region of memory to OP-TEE
> >
> > OP-TEE uses the memory region defined by the maximum DRAM address
> > minus CONFIG_OPTEE_TZDRAM_SIZE, so subtract
> > CONFIG_OPTEE_TZDRAM_SIZE from the available DRAM size to avoid
> > conflicts.
> >
> > Signed-off-by: Ricardo Salveti <ricardo@foundries.io>
> > ---
> >  board/toradex/apalis_imx6/apalis_imx6.c | 5 +++++
> >  1 file changed, 5 insertions(+)
> >
> > diff --git a/board/toradex/apalis_imx6/apalis_imx6.c
> > b/board/toradex/apalis_imx6/apalis_imx6.c
> > index 6421a22c25..fa7fcc8d46 100644
> > --- a/board/toradex/apalis_imx6/apalis_imx6.c
> > +++ b/board/toradex/apalis_imx6/apalis_imx6.c
> > @@ -75,6 +75,11 @@ int dram_init(void)
> >       gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE,
> >                                   (ulong)imx_ddr_size());
> >
> > +     /* Subtract the defined OPTEE runtime firmware length */ #ifdef
> > +CONFIG_OPTEE_TZDRAM_SIZE
> > +     gd->ram_size -= CONFIG_OPTEE_TZDRAM_SIZE; #endif
> > +
>
> Has OPTEE been enabled? I not see that in defconfig.

Not yet enable by default, this is just to make it compatible with OP-TEE.

Should we have it enabled by default at apalis_imx6_defconfig? I could
also send another patch to add a new config that has secure boot and
OP-TEE enabled by default, as done with a few other imx targets.

Thanks,
Igor Opaniuk Sept. 3, 2019, 2:34 p.m. UTC | #4
Hi Ricardo,

On Tue, Sep 3, 2019 at 4:53 PM Ricardo Salveti <ricardo@foundries.io> wrote:
>
> On Tue, Sep 3, 2019 at 12:09 AM Peng Fan <peng.fan@nxp.com> wrote:
> >
> > > Subject: [PATCH] apalis_imx6: allocate specific region of memory to OP-TEE
> > >
> > > OP-TEE uses the memory region defined by the maximum DRAM address
> > > minus CONFIG_OPTEE_TZDRAM_SIZE, so subtract
> > > CONFIG_OPTEE_TZDRAM_SIZE from the available DRAM size to avoid
> > > conflicts.
> > >
> > > Signed-off-by: Ricardo Salveti <ricardo@foundries.io>
> > > ---
> > >  board/toradex/apalis_imx6/apalis_imx6.c | 5 +++++
> > >  1 file changed, 5 insertions(+)
> > >
> > > diff --git a/board/toradex/apalis_imx6/apalis_imx6.c
> > > b/board/toradex/apalis_imx6/apalis_imx6.c
> > > index 6421a22c25..fa7fcc8d46 100644
> > > --- a/board/toradex/apalis_imx6/apalis_imx6.c
> > > +++ b/board/toradex/apalis_imx6/apalis_imx6.c
> > > @@ -75,6 +75,11 @@ int dram_init(void)
> > >       gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE,
> > >                                   (ulong)imx_ddr_size());
> > >
> > > +     /* Subtract the defined OPTEE runtime firmware length */ #ifdef
> > > +CONFIG_OPTEE_TZDRAM_SIZE
> > > +     gd->ram_size -= CONFIG_OPTEE_TZDRAM_SIZE; #endif
> > > +
> >
> > Has OPTEE been enabled? I not see that in defconfig.
>
> Not yet enable by default, this is just to make it compatible with OP-TEE.
>
> Should we have it enabled by default at apalis_imx6_defconfig? I could
> also send another patch to add a new config that has secure boot and
> OP-TEE enabled by default, as done with a few other imx targets.

IMHO, idea with a new config makes sense, as besides CONFIG_BOOTM_OPTEE=y
we should also add CONFIG_ARMV7_BOOT_SEC_DEFAULT=y  and provide
appropriate CONFIG_BOOTCOMMAND to boot TEE blob (although we're currently
in the middle of transition to distroboot usage by default, where we
can handle all this
in a boot script instead).

>
> Thanks,
> --
> Ricardo Salveti
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> https://lists.denx.de/listinfo/u-boot

Thanks
Ricardo Salveti Sept. 3, 2019, 2:48 p.m. UTC | #5
On Tue, Sep 3, 2019 at 11:34 AM Igor Opaniuk <igor.opaniuk@gmail.com> wrote:
> Hi Ricardo,
>
> On Tue, Sep 3, 2019 at 4:53 PM Ricardo Salveti <ricardo@foundries.io> wrote:
> >
> > On Tue, Sep 3, 2019 at 12:09 AM Peng Fan <peng.fan@nxp.com> wrote:
> > >
> > > > Subject: [PATCH] apalis_imx6: allocate specific region of memory to OP-TEE
> > > >
> > > > OP-TEE uses the memory region defined by the maximum DRAM address
> > > > minus CONFIG_OPTEE_TZDRAM_SIZE, so subtract
> > > > CONFIG_OPTEE_TZDRAM_SIZE from the available DRAM size to avoid
> > > > conflicts.
> > > >
> > > > Signed-off-by: Ricardo Salveti <ricardo@foundries.io>
> > > > ---
> > > >  board/toradex/apalis_imx6/apalis_imx6.c | 5 +++++
> > > >  1 file changed, 5 insertions(+)
> > > >
> > > > diff --git a/board/toradex/apalis_imx6/apalis_imx6.c
> > > > b/board/toradex/apalis_imx6/apalis_imx6.c
> > > > index 6421a22c25..fa7fcc8d46 100644
> > > > --- a/board/toradex/apalis_imx6/apalis_imx6.c
> > > > +++ b/board/toradex/apalis_imx6/apalis_imx6.c
> > > > @@ -75,6 +75,11 @@ int dram_init(void)
> > > >       gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE,
> > > >                                   (ulong)imx_ddr_size());
> > > >
> > > > +     /* Subtract the defined OPTEE runtime firmware length */ #ifdef
> > > > +CONFIG_OPTEE_TZDRAM_SIZE
> > > > +     gd->ram_size -= CONFIG_OPTEE_TZDRAM_SIZE; #endif
> > > > +
> > >
> > > Has OPTEE been enabled? I not see that in defconfig.
> >
> > Not yet enable by default, this is just to make it compatible with OP-TEE.
> >
> > Should we have it enabled by default at apalis_imx6_defconfig? I could
> > also send another patch to add a new config that has secure boot and
> > OP-TEE enabled by default, as done with a few other imx targets.
>
> IMHO, idea with a new config makes sense, as besides CONFIG_BOOTM_OPTEE=y
> we should also add CONFIG_ARMV7_BOOT_SEC_DEFAULT=y  and provide
> appropriate CONFIG_BOOTCOMMAND to boot TEE blob (although we're currently
> in the middle of transition to distroboot usage by default, where we
> can handle all this
> in a boot script instead).

The flow I'm currently using is a bit different, using SPL FIT and
loading OP-TEE from SPL itself (in order to load secure world earlier
in the boot chain), which then loads U-Boot in normal world. That way
we don't actually need to change the default bootcommand logic, as
most of the heavy work is done by SPL instead of u-boot.

Once some of the needed patches land (e.g. supporting larger SPL on
iMX6DQ) I will propose a new config with this setup, so we can all
review it.

Cheers,

--
Ricardo Salveti
diff mbox series

Patch

diff --git a/board/toradex/apalis_imx6/apalis_imx6.c b/board/toradex/apalis_imx6/apalis_imx6.c
index 6421a22c25..fa7fcc8d46 100644
--- a/board/toradex/apalis_imx6/apalis_imx6.c
+++ b/board/toradex/apalis_imx6/apalis_imx6.c
@@ -75,6 +75,11 @@  int dram_init(void)
 	gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE,
 				    (ulong)imx_ddr_size());
 
+	/* Subtract the defined OPTEE runtime firmware length */
+#ifdef CONFIG_OPTEE_TZDRAM_SIZE
+	gd->ram_size -= CONFIG_OPTEE_TZDRAM_SIZE;
+#endif
+
 	return 0;
 }