Re: IMX8M and Optee support

2024-01-22 Thread Ahmad Fatoum
On 19.10.23 08:25, Hans Christian Lønstad wrote:
> Optee using ATF 2.8 works when a header is stripped of the tee.bin file (use 
> tee-raw.bin)

FTR: With Marco's recent OP-TEE changes that are sitting in next, barebox 
accepts
OP-TEE with a header too and will use it to dynamically determine the OP-TEE 
base
instead of hardcoding it to be at the end of RAM.

> 
> Hans
> 
>> 18. okt. 2023 kl. 16:36 skrev Ahmad Fatoum :
>>
>> Hello Hans,
>>
>> On 18.10.23 16:06, Hans Christian Lønstad wrote:
>>> The ATF for imx8 is quite convoluted requiring fixed memory locations for 
>>> images and device trees. The ATF itself supports transferring parameters
>>> Using 4 unsigned long arguments. These are unfortunately zeroed out by a 
>>> misconfiguration for IMX8:
>>>
>>> RESET_TO_BL31 := 1
>>> and not at the same time setting
>>> RESET_TO_BL31_WITH_PARAMS := 1
>>>
>>> As demoed below this can be made to work.
>>> ———><——
>>>
>>> Uart initialized
>>> Run level 3
>>> Init power
>>> Init DDR
>>> Handover to ATF
>>> imx8mp_load_and_start_image_via_tfa: Expect OPTEE at 0xbe00
>>> CH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
>>> IH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
>>>   CAAM 
>>> early init successful
>>> imx8m_atf_start_bl31: Callout BL31 with 1, 2, 3, 4
>>> NOTICE:  Do not release JR0 to NS as it can be used by HAB
>>> INFO:bl31_early_platform_setup2: args are 0x0001, 0x0002, 
>>> 0x0003, 0x0004
>>> NOTICE:  BL31: v2.8(debug):lf-6.1.36-2.1.0-0-g1a3beeab6-dirty
>>> NOTICE:  BL31: Built : 15:49:38, Oct 18 2023
>>>
>>> ——><——
>>>
>>> The "best" approach is likely to patch ATFs imx8mX_bl31_setup.c replacing 
>>> preprocessor values with values
>>> handed over from Barebox. Adding these parameters will be compatible with 
>>> unpatched ATFs anyway.
>>
>> There's void bl31_entry(uintptr_t bl31_entry, uintptr_t bl32_entry,
>> uintptr_t bl33_entry, uintptr_t fdt_addr)
>>
>> which is used for RK3568/RK3588 platforms. AFAIU, future SoCs will likely
>> use a linked list of hand over blocks to transfer this same information.
>>
>> Any of these two approaches would be better than what we have now on i.MX.
>>
>> I am still not sure how this relates to OP-TEE hanging. Can you configure
>> your OP-TEE to not expect a FDT?
>>
>> Cheers,
>> Ahmad
>>
>>>
>>> Hans
>>>
>>>
 18. okt. 2023 kl. 15:04 skrev Ahmad Fatoum :

 Hello,

 On 18.10.23 14:31, Hans Christian Lønstad wrote:
> I may have gotten this wrong, but should not the device tree be passed 
> over to ATF which again pass it over to Optee?
>
> The bl31() wrapper in imx8m_atf_start_bl31 should do this using register 
> call parameters?

 I am using a quite antiquated imx-atf v2.4 and optee-os-3.2.0.imx in my 
 setup and
 haven't come around to update them. I know that barebox works fine with 
 newer TF-A
 versions (especially after 
 https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/16370),
 but I haven't tested a newer OP-TEE, so if your OP-TEE 
 configuration/version expects
 a device tree, this may indeed be the culprit.

>> 18. okt. 2023 kl. 13:29 skrev Hans Christian Lønstad 
>> :
>>
>> We have a 2GB IMX8MP system using 32MB OPTEEE_SIZE, so expect to find 
>> Optee blob at 0xBE00.
>>
>> ATF compiled with:
>> make PLAT=imx8mp BL32_BASE=0xBE00 IMX_BOOT_UART_BASE=0x3089 
>> SPD=opteed DEBUG=1 -j
>>
>> Optee compiled with:
>>
>> CFG_DDR_SIZE ?= UL(0x8000)
>> CFG_UART_BASE ?= UART2_BASE
>> CFG_TZDRAM_START ?= 0xBE00
>> undefine CFG_NS_ENTRY_ADDR
>>
>> Barebox compiled with:
>> CONFIG_HAVE_OPTEE=y CONFIG_OPTEE_SIZE=0x0200 # CONFIG_BOOTM_OPTEE is 
>> not set CONFIG_PBL_OPTEE=y CONFIG_FIRMWARE_IMX8MP_OPTEE=y

 barebox configuration looks ok assuming board code calls 
 imx8mp_load_and_start_image_via_tfa().

>>
>> This produces the following on boot:
>> —><--
>>
>> Uart initialized
>> Run level 3
>> Init power
>> Init DDR
>> Handover to ATF
>> imx8mp_load_and_start_image_via_tfa: Expect OPTEE at 0xbe00
>> CH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
>> IH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
>> NOTICE:  
>> Do not release JR0 to NS as it can be used by HAB
>> NOTICE:  BL31: v2.8(debug):lf-6.1.36-2.1.0-0-g1a3beeab6-dirty
>> NOTICE:  BL31: Built : 13:14:09, Oct 18 2023
>> INFO:GICv3 with legacy support detected.
>> INFO:ARM GICv3 driver initialized in EL3
>> INFO:Maximum SPI INTID supported: 191
>> INFO:BL31: Initializing runtime services
>> INFO:bl31_plat_get_next_image_ep_info: want 

Re: IMX8M and Optee support

2023-10-19 Thread Hans Christian Lønstad
Optee using ATF 2.8 works when a header is stripped of the tee.bin file (use 
tee-raw.bin)

Hans

> 18. okt. 2023 kl. 16:36 skrev Ahmad Fatoum :
> 
> Hello Hans,
> 
> On 18.10.23 16:06, Hans Christian Lønstad wrote:
>> The ATF for imx8 is quite convoluted requiring fixed memory locations for 
>> images and device trees. The ATF itself supports transferring parameters
>> Using 4 unsigned long arguments. These are unfortunately zeroed out by a 
>> misconfiguration for IMX8:
>> 
>> RESET_TO_BL31 := 1
>> and not at the same time setting
>> RESET_TO_BL31_WITH_PARAMS := 1
>> 
>> As demoed below this can be made to work.
>> ———><——
>> 
>> Uart initialized
>> Run level 3
>> Init power
>> Init DDR
>> Handover to ATF
>> imx8mp_load_and_start_image_via_tfa: Expect OPTEE at 0xbe00
>> CH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
>> IH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
>>   CAAM early 
>> init successful
>> imx8m_atf_start_bl31: Callout BL31 with 1, 2, 3, 4
>> NOTICE:  Do not release JR0 to NS as it can be used by HAB
>> INFO:bl31_early_platform_setup2: args are 0x0001, 0x0002, 
>> 0x0003, 0x0004
>> NOTICE:  BL31: v2.8(debug):lf-6.1.36-2.1.0-0-g1a3beeab6-dirty
>> NOTICE:  BL31: Built : 15:49:38, Oct 18 2023
>> 
>> ——><——
>> 
>> The "best" approach is likely to patch ATFs imx8mX_bl31_setup.c replacing 
>> preprocessor values with values
>> handed over from Barebox. Adding these parameters will be compatible with 
>> unpatched ATFs anyway.
> 
> There's void bl31_entry(uintptr_t bl31_entry, uintptr_t bl32_entry,
> uintptr_t bl33_entry, uintptr_t fdt_addr)
> 
> which is used for RK3568/RK3588 platforms. AFAIU, future SoCs will likely
> use a linked list of hand over blocks to transfer this same information.
> 
> Any of these two approaches would be better than what we have now on i.MX.
> 
> I am still not sure how this relates to OP-TEE hanging. Can you configure
> your OP-TEE to not expect a FDT?
> 
> Cheers,
> Ahmad
> 
>> 
>> Hans
>> 
>> 
>>> 18. okt. 2023 kl. 15:04 skrev Ahmad Fatoum :
>>> 
>>> Hello,
>>> 
>>> On 18.10.23 14:31, Hans Christian Lønstad wrote:
 I may have gotten this wrong, but should not the device tree be passed 
 over to ATF which again pass it over to Optee?
 
 The bl31() wrapper in imx8m_atf_start_bl31 should do this using register 
 call parameters?
>>> 
>>> I am using a quite antiquated imx-atf v2.4 and optee-os-3.2.0.imx in my 
>>> setup and
>>> haven't come around to update them. I know that barebox works fine with 
>>> newer TF-A
>>> versions (especially after 
>>> https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/16370),
>>> but I haven't tested a newer OP-TEE, so if your OP-TEE 
>>> configuration/version expects
>>> a device tree, this may indeed be the culprit.
>>> 
> 18. okt. 2023 kl. 13:29 skrev Hans Christian Lønstad 
> :
> 
> We have a 2GB IMX8MP system using 32MB OPTEEE_SIZE, so expect to find 
> Optee blob at 0xBE00.
> 
> ATF compiled with:
> make PLAT=imx8mp BL32_BASE=0xBE00 IMX_BOOT_UART_BASE=0x3089 
> SPD=opteed DEBUG=1 -j
> 
> Optee compiled with:
> 
> CFG_DDR_SIZE ?= UL(0x8000)
> CFG_UART_BASE ?= UART2_BASE
> CFG_TZDRAM_START ?= 0xBE00
> undefine CFG_NS_ENTRY_ADDR
> 
> Barebox compiled with:
> CONFIG_HAVE_OPTEE=y CONFIG_OPTEE_SIZE=0x0200 # CONFIG_BOOTM_OPTEE is 
> not set CONFIG_PBL_OPTEE=y CONFIG_FIRMWARE_IMX8MP_OPTEE=y
>>> 
>>> barebox configuration looks ok assuming board code calls 
>>> imx8mp_load_and_start_image_via_tfa().
>>> 
> 
> This produces the following on boot:
> —><--
> 
> Uart initialized
> Run level 3
> Init power
> Init DDR
> Handover to ATF
> imx8mp_load_and_start_image_via_tfa: Expect OPTEE at 0xbe00
> CH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
> IH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
> NOTICE:  
> Do not release JR0 to NS as it can be used by HAB
> NOTICE:  BL31: v2.8(debug):lf-6.1.36-2.1.0-0-g1a3beeab6-dirty
> NOTICE:  BL31: Built : 13:14:09, Oct 18 2023
> INFO:GICv3 with legacy support detected.
> INFO:ARM GICv3 driver initialized in EL3
> INFO:Maximum SPI INTID supported: 191
> INFO:BL31: Initializing runtime services
> INFO:bl31_plat_get_next_image_ep_info: want image 0
> INFO:bl31_plat_get_next_image_ep_info: bl32 PC is 0xbe00
> INFO:BL31: cortex_a53: CPU workaround for 855873 was applied
> WARNING: BL31: cortex_a53: CPU workaround for 1530924 was missing!
> INFO:BL31: Initializing BL32
> INFO:bl31_plat_get_next_image_ep_info: want image 0
> INFO:

Re: IMX8M and Optee support

2023-10-19 Thread Hans Christian Lønstad
Note that Optee is not build using position independence, so one will need to 
set CFG_TZDRAM_START to
the Barebox (endmem-OPTEE_SIZE) location.

This inconvenience makes the use of passed parameters less relevant given a 
compile time
resolution is required.

Hans

> 18. okt. 2023 kl. 16:36 skrev Ahmad Fatoum :
> 
> Hello Hans,
> 
> On 18.10.23 16:06, Hans Christian Lønstad wrote:
>> The ATF for imx8 is quite convoluted requiring fixed memory locations for 
>> images and device trees. The ATF itself supports transferring parameters
>> Using 4 unsigned long arguments. These are unfortunately zeroed out by a 
>> misconfiguration for IMX8:
>> 
>> RESET_TO_BL31 := 1
>> and not at the same time setting
>> RESET_TO_BL31_WITH_PARAMS := 1
>> 
>> As demoed below this can be made to work.
>> ———><——
>> 
>> Uart initialized
>> Run level 3
>> Init power
>> Init DDR
>> Handover to ATF
>> imx8mp_load_and_start_image_via_tfa: Expect OPTEE at 0xbe00
>> CH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
>> IH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
>>   CAAM early 
>> init successful
>> imx8m_atf_start_bl31: Callout BL31 with 1, 2, 3, 4
>> NOTICE:  Do not release JR0 to NS as it can be used by HAB
>> INFO:bl31_early_platform_setup2: args are 0x0001, 0x0002, 
>> 0x0003, 0x0004
>> NOTICE:  BL31: v2.8(debug):lf-6.1.36-2.1.0-0-g1a3beeab6-dirty
>> NOTICE:  BL31: Built : 15:49:38, Oct 18 2023
>> 
>> ——><——
>> 
>> The "best" approach is likely to patch ATFs imx8mX_bl31_setup.c replacing 
>> preprocessor values with values
>> handed over from Barebox. Adding these parameters will be compatible with 
>> unpatched ATFs anyway.
> 
> There's void bl31_entry(uintptr_t bl31_entry, uintptr_t bl32_entry,
> uintptr_t bl33_entry, uintptr_t fdt_addr)
> 
> which is used for RK3568/RK3588 platforms. AFAIU, future SoCs will likely
> use a linked list of hand over blocks to transfer this same information.
> 
> Any of these two approaches would be better than what we have now on i.MX.
> 
> I am still not sure how this relates to OP-TEE hanging. Can you configure
> your OP-TEE to not expect a FDT?
> 
> Cheers,
> Ahmad
> 
>> 
>> Hans
>> 
>> 
>>> 18. okt. 2023 kl. 15:04 skrev Ahmad Fatoum :
>>> 
>>> Hello,
>>> 
>>> On 18.10.23 14:31, Hans Christian Lønstad wrote:
 I may have gotten this wrong, but should not the device tree be passed 
 over to ATF which again pass it over to Optee?
 
 The bl31() wrapper in imx8m_atf_start_bl31 should do this using register 
 call parameters?
>>> 
>>> I am using a quite antiquated imx-atf v2.4 and optee-os-3.2.0.imx in my 
>>> setup and
>>> haven't come around to update them. I know that barebox works fine with 
>>> newer TF-A
>>> versions (especially after 
>>> https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/16370),
>>> but I haven't tested a newer OP-TEE, so if your OP-TEE 
>>> configuration/version expects
>>> a device tree, this may indeed be the culprit.
>>> 
> 18. okt. 2023 kl. 13:29 skrev Hans Christian Lønstad 
> :
> 
> We have a 2GB IMX8MP system using 32MB OPTEEE_SIZE, so expect to find 
> Optee blob at 0xBE00.
> 
> ATF compiled with:
> make PLAT=imx8mp BL32_BASE=0xBE00 IMX_BOOT_UART_BASE=0x3089 
> SPD=opteed DEBUG=1 -j
> 
> Optee compiled with:
> 
> CFG_DDR_SIZE ?= UL(0x8000)
> CFG_UART_BASE ?= UART2_BASE
> CFG_TZDRAM_START ?= 0xBE00
> undefine CFG_NS_ENTRY_ADDR
> 
> Barebox compiled with:
> CONFIG_HAVE_OPTEE=y CONFIG_OPTEE_SIZE=0x0200 # CONFIG_BOOTM_OPTEE is 
> not set CONFIG_PBL_OPTEE=y CONFIG_FIRMWARE_IMX8MP_OPTEE=y
>>> 
>>> barebox configuration looks ok assuming board code calls 
>>> imx8mp_load_and_start_image_via_tfa().
>>> 
> 
> This produces the following on boot:
> —><--
> 
> Uart initialized
> Run level 3
> Init power
> Init DDR
> Handover to ATF
> imx8mp_load_and_start_image_via_tfa: Expect OPTEE at 0xbe00
> CH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
> IH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
> NOTICE:  
> Do not release JR0 to NS as it can be used by HAB
> NOTICE:  BL31: v2.8(debug):lf-6.1.36-2.1.0-0-g1a3beeab6-dirty
> NOTICE:  BL31: Built : 13:14:09, Oct 18 2023
> INFO:GICv3 with legacy support detected.
> INFO:ARM GICv3 driver initialized in EL3
> INFO:Maximum SPI INTID supported: 191
> INFO:BL31: Initializing runtime services
> INFO:bl31_plat_get_next_image_ep_info: want image 0
> INFO:bl31_plat_get_next_image_ep_info: bl32 PC is 0xbe00
> INFO:BL31: cortex_a53: CPU workaround for 855873 was applied
> WARNING: BL31: cortex_a53: CPU workaround for 

Re: IMX8M and Optee support

2023-10-18 Thread Ahmad Fatoum
Hello Hans,

On 18.10.23 16:06, Hans Christian Lønstad wrote:
> The ATF for imx8 is quite convoluted requiring fixed memory locations for 
> images and device trees. The ATF itself supports transferring parameters
> Using 4 unsigned long arguments. These are unfortunately zeroed out by a 
> misconfiguration for IMX8:
> 
> RESET_TO_BL31 := 1
> and not at the same time setting
> RESET_TO_BL31_WITH_PARAMS := 1
> 
> As demoed below this can be made to work.
> ———><——
> 
> Uart initialized
> Run level 3
> Init power
> Init DDR
> Handover to ATF
> imx8mp_load_and_start_image_via_tfa: Expect OPTEE at 0xbe00
> CH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
> IH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
>CAAM early 
> init successful
> imx8m_atf_start_bl31: Callout BL31 with 1, 2, 3, 4
> NOTICE:  Do not release JR0 to NS as it can be used by HAB
> INFO:bl31_early_platform_setup2: args are 0x0001, 0x0002, 
> 0x0003, 0x0004
> NOTICE:  BL31: v2.8(debug):lf-6.1.36-2.1.0-0-g1a3beeab6-dirty
> NOTICE:  BL31: Built : 15:49:38, Oct 18 2023
> 
> ——><——
> 
> The "best" approach is likely to patch ATFs imx8mX_bl31_setup.c replacing 
> preprocessor values with values
> handed over from Barebox. Adding these parameters will be compatible with 
> unpatched ATFs anyway.

There's void bl31_entry(uintptr_t bl31_entry, uintptr_t bl32_entry,
uintptr_t bl33_entry, uintptr_t fdt_addr)

which is used for RK3568/RK3588 platforms. AFAIU, future SoCs will likely
use a linked list of hand over blocks to transfer this same information.

Any of these two approaches would be better than what we have now on i.MX.

I am still not sure how this relates to OP-TEE hanging. Can you configure
your OP-TEE to not expect a FDT?

Cheers,
Ahmad

> 
> Hans
> 
> 
>> 18. okt. 2023 kl. 15:04 skrev Ahmad Fatoum :
>>
>> Hello,
>>
>> On 18.10.23 14:31, Hans Christian Lønstad wrote:
>>> I may have gotten this wrong, but should not the device tree be passed over 
>>> to ATF which again pass it over to Optee?
>>>
>>> The bl31() wrapper in imx8m_atf_start_bl31 should do this using register 
>>> call parameters?
>>
>> I am using a quite antiquated imx-atf v2.4 and optee-os-3.2.0.imx in my 
>> setup and
>> haven't come around to update them. I know that barebox works fine with 
>> newer TF-A
>> versions (especially after 
>> https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/16370),
>> but I haven't tested a newer OP-TEE, so if your OP-TEE configuration/version 
>> expects
>> a device tree, this may indeed be the culprit.
>>
 18. okt. 2023 kl. 13:29 skrev Hans Christian Lønstad :

 We have a 2GB IMX8MP system using 32MB OPTEEE_SIZE, so expect to find 
 Optee blob at 0xBE00.

 ATF compiled with:
 make PLAT=imx8mp BL32_BASE=0xBE00 IMX_BOOT_UART_BASE=0x3089 
 SPD=opteed DEBUG=1 -j

 Optee compiled with:

 CFG_DDR_SIZE ?= UL(0x8000)
 CFG_UART_BASE ?= UART2_BASE
 CFG_TZDRAM_START ?= 0xBE00
 undefine CFG_NS_ENTRY_ADDR

 Barebox compiled with:
 CONFIG_HAVE_OPTEE=y CONFIG_OPTEE_SIZE=0x0200 # CONFIG_BOOTM_OPTEE is 
 not set CONFIG_PBL_OPTEE=y CONFIG_FIRMWARE_IMX8MP_OPTEE=y
>>
>> barebox configuration looks ok assuming board code calls 
>> imx8mp_load_and_start_image_via_tfa().
>>

 This produces the following on boot:
 —><--

 Uart initialized
 Run level 3
 Init power
 Init DDR
 Handover to ATF
 imx8mp_load_and_start_image_via_tfa: Expect OPTEE at 0xbe00
 CH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
 IH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
  NOTICE:  
 Do not release JR0 to NS as it can be used by HAB
 NOTICE:  BL31: v2.8(debug):lf-6.1.36-2.1.0-0-g1a3beeab6-dirty
 NOTICE:  BL31: Built : 13:14:09, Oct 18 2023
 INFO:GICv3 with legacy support detected.
 INFO:ARM GICv3 driver initialized in EL3
 INFO:Maximum SPI INTID supported: 191
 INFO:BL31: Initializing runtime services
 INFO:bl31_plat_get_next_image_ep_info: want image 0
 INFO:bl31_plat_get_next_image_ep_info: bl32 PC is 0xbe00
 INFO:BL31: cortex_a53: CPU workaround for 855873 was applied
 WARNING: BL31: cortex_a53: CPU workaround for 1530924 was missing!
 INFO:BL31: Initializing BL32
 INFO:bl31_plat_get_next_image_ep_info: want image 0
 INFO:bl31_plat_get_next_image_ep_info: bl32 PC is 0xbe00
 INFO:opteed_init: 176 - calling 
 INFO:opteed_synchronous_sp_entry: 79 - calling 
>>
>> Try compiling op-tee with CFG_TEE_CORE_LOG_LEVEL=4 and see how far it gets.
>>
 I´m not sure why it asks for the same image twice and if this implies 
 anything 

Re: IMX8M and Optee support

2023-10-18 Thread Hans Christian Lønstad
The ATF for imx8 is quite convoluted requiring fixed memory locations for 
images and device trees. The ATF itself supports transferring parameters
Using 4 unsigned long arguments. These are unfortunately zeroed out by a 
misconfiguration for IMX8:

RESET_TO_BL31 := 1
and not at the same time setting
RESET_TO_BL31_WITH_PARAMS := 1

As demoed below this can be made to work.
———><——

Uart initialized
Run level 3
Init power
Init DDR
Handover to ATF
imx8mp_load_and_start_image_via_tfa: Expect OPTEE at 0xbe00
CH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
IH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
   CAAM early 
init successful
imx8m_atf_start_bl31: Callout BL31 with 1, 2, 3, 4
NOTICE:  Do not release JR0 to NS as it can be used by HAB
INFO:bl31_early_platform_setup2: args are 0x0001, 0x0002, 
0x0003, 0x0004
NOTICE:  BL31: v2.8(debug):lf-6.1.36-2.1.0-0-g1a3beeab6-dirty
NOTICE:  BL31: Built : 15:49:38, Oct 18 2023

——><——

The "best" approach is likely to patch ATFs imx8mX_bl31_setup.c replacing 
preprocessor values with values
handed over from Barebox. Adding these parameters will be compatible with 
unpatched ATFs anyway.

Hans


> 18. okt. 2023 kl. 15:04 skrev Ahmad Fatoum :
> 
> Hello,
> 
> On 18.10.23 14:31, Hans Christian Lønstad wrote:
>> I may have gotten this wrong, but should not the device tree be passed over 
>> to ATF which again pass it over to Optee?
>> 
>> The bl31() wrapper in imx8m_atf_start_bl31 should do this using register 
>> call parameters?
> 
> I am using a quite antiquated imx-atf v2.4 and optee-os-3.2.0.imx in my setup 
> and
> haven't come around to update them. I know that barebox works fine with newer 
> TF-A
> versions (especially after 
> https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/16370),
> but I haven't tested a newer OP-TEE, so if your OP-TEE configuration/version 
> expects
> a device tree, this may indeed be the culprit.
> 
>>> 18. okt. 2023 kl. 13:29 skrev Hans Christian Lønstad :
>>> 
>>> We have a 2GB IMX8MP system using 32MB OPTEEE_SIZE, so expect to find Optee 
>>> blob at 0xBE00.
>>> 
>>> ATF compiled with:
>>> make PLAT=imx8mp BL32_BASE=0xBE00 IMX_BOOT_UART_BASE=0x3089 
>>> SPD=opteed DEBUG=1 -j
>>> 
>>> Optee compiled with:
>>> 
>>> CFG_DDR_SIZE ?= UL(0x8000)
>>> CFG_UART_BASE ?= UART2_BASE
>>> CFG_TZDRAM_START ?= 0xBE00
>>> undefine CFG_NS_ENTRY_ADDR
>>> 
>>> Barebox compiled with:
>>> CONFIG_HAVE_OPTEE=y CONFIG_OPTEE_SIZE=0x0200 # CONFIG_BOOTM_OPTEE is 
>>> not set CONFIG_PBL_OPTEE=y CONFIG_FIRMWARE_IMX8MP_OPTEE=y
> 
> barebox configuration looks ok assuming board code calls 
> imx8mp_load_and_start_image_via_tfa().
> 
>>> 
>>> This produces the following on boot:
>>> —><--
>>> 
>>> Uart initialized
>>> Run level 3
>>> Init power
>>> Init DDR
>>> Handover to ATF
>>> imx8mp_load_and_start_image_via_tfa: Expect OPTEE at 0xbe00
>>> CH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
>>> IH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
>>>  NOTICE:  
>>> Do not release JR0 to NS as it can be used by HAB
>>> NOTICE:  BL31: v2.8(debug):lf-6.1.36-2.1.0-0-g1a3beeab6-dirty
>>> NOTICE:  BL31: Built : 13:14:09, Oct 18 2023
>>> INFO:GICv3 with legacy support detected.
>>> INFO:ARM GICv3 driver initialized in EL3
>>> INFO:Maximum SPI INTID supported: 191
>>> INFO:BL31: Initializing runtime services
>>> INFO:bl31_plat_get_next_image_ep_info: want image 0
>>> INFO:bl31_plat_get_next_image_ep_info: bl32 PC is 0xbe00
>>> INFO:BL31: cortex_a53: CPU workaround for 855873 was applied
>>> WARNING: BL31: cortex_a53: CPU workaround for 1530924 was missing!
>>> INFO:BL31: Initializing BL32
>>> INFO:bl31_plat_get_next_image_ep_info: want image 0
>>> INFO:bl31_plat_get_next_image_ep_info: bl32 PC is 0xbe00
>>> INFO:opteed_init: 176 - calling 
>>> INFO:opteed_synchronous_sp_entry: 79 - calling 
> 
> Try compiling op-tee with CFG_TEE_CORE_LOG_LEVEL=4 and see how far it gets.
> 
>>> I´m not sure why it asks for the same image twice and if this implies 
>>> anything …
> 
> No idea..
> 
> Cheers,
> Ahmad
> 
> -- 
> Pengutronix e.K.   | |
> Steuerwalder Str. 21   | http://www.pengutronix.de/  |
> 31137 Hildesheim, Germany  | Phone: +49-5121-206917-0|
> Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |
> 



Re: IMX8M and Optee support

2023-10-18 Thread Ahmad Fatoum
Hello,

On 18.10.23 14:31, Hans Christian Lønstad wrote:
> I may have gotten this wrong, but should not the device tree be passed over 
> to ATF which again pass it over to Optee?
> 
> The bl31() wrapper in imx8m_atf_start_bl31 should do this using register call 
> parameters?

I am using a quite antiquated imx-atf v2.4 and optee-os-3.2.0.imx in my setup 
and
haven't come around to update them. I know that barebox works fine with newer 
TF-A
versions (especially after 
https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/16370),
but I haven't tested a newer OP-TEE, so if your OP-TEE configuration/version 
expects
a device tree, this may indeed be the culprit.

>> 18. okt. 2023 kl. 13:29 skrev Hans Christian Lønstad :
>>
>> We have a 2GB IMX8MP system using 32MB OPTEEE_SIZE, so expect to find Optee 
>> blob at 0xBE00.
>>
>> ATF compiled with:
>> make PLAT=imx8mp BL32_BASE=0xBE00 IMX_BOOT_UART_BASE=0x3089 
>> SPD=opteed DEBUG=1 -j
>>
>> Optee compiled with:
>>
>> CFG_DDR_SIZE ?= UL(0x8000)
>> CFG_UART_BASE ?= UART2_BASE
>> CFG_TZDRAM_START ?= 0xBE00
>> undefine CFG_NS_ENTRY_ADDR
>>
>> Barebox compiled with:
>> CONFIG_HAVE_OPTEE=y CONFIG_OPTEE_SIZE=0x0200 # CONFIG_BOOTM_OPTEE is not 
>> set CONFIG_PBL_OPTEE=y CONFIG_FIRMWARE_IMX8MP_OPTEE=y 

barebox configuration looks ok assuming board code calls 
imx8mp_load_and_start_image_via_tfa().

>>
>> This produces the following on boot:
>> —><--
>>
>> Uart initialized
>> Run level 3
>> Init power
>> Init DDR
>> Handover to ATF
>> imx8mp_load_and_start_image_via_tfa: Expect OPTEE at 0xbe00
>> CH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
>> IH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
>>   NOTICE:  
>> Do not release JR0 to NS as it can be used by HAB
>> NOTICE:  BL31: v2.8(debug):lf-6.1.36-2.1.0-0-g1a3beeab6-dirty
>> NOTICE:  BL31: Built : 13:14:09, Oct 18 2023
>> INFO:GICv3 with legacy support detected.
>> INFO:ARM GICv3 driver initialized in EL3
>> INFO:Maximum SPI INTID supported: 191
>> INFO:BL31: Initializing runtime services
>> INFO:bl31_plat_get_next_image_ep_info: want image 0
>> INFO:bl31_plat_get_next_image_ep_info: bl32 PC is 0xbe00
>> INFO:BL31: cortex_a53: CPU workaround for 855873 was applied
>> WARNING: BL31: cortex_a53: CPU workaround for 1530924 was missing!
>> INFO:BL31: Initializing BL32
>> INFO:bl31_plat_get_next_image_ep_info: want image 0
>> INFO:bl31_plat_get_next_image_ep_info: bl32 PC is 0xbe00
>> INFO:opteed_init: 176 - calling 
>> INFO:opteed_synchronous_sp_entry: 79 - calling 

Try compiling op-tee with CFG_TEE_CORE_LOG_LEVEL=4 and see how far it gets.

>> I´m not sure why it asks for the same image twice and if this implies 
>> anything …

No idea..

Cheers,
Ahmad

-- 
Pengutronix e.K.   | |
Steuerwalder Str. 21   | http://www.pengutronix.de/  |
31137 Hildesheim, Germany  | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |




Re: IMX8M and Optee support

2023-10-18 Thread Hans Christian Lønstad
I may have gotten this wrong, but should not the device tree be passed over to 
ATF which again pass it over to Optee?

The bl31() wrapper in imx8m_atf_start_bl31 should do this using register call 
parameters?


Hans





> 18. okt. 2023 kl. 13:29 skrev Hans Christian Lønstad :
> 
> We have a 2GB IMX8MP system using 32MB OPTEEE_SIZE, so expect to find Optee 
> blob at 0xBE00.
> 
> ATF compiled with:
> make PLAT=imx8mp BL32_BASE=0xBE00 IMX_BOOT_UART_BASE=0x3089 
> SPD=opteed DEBUG=1 -j
> 
> Optee compiled with:
> 
> CFG_DDR_SIZE ?= UL(0x8000)
> CFG_UART_BASE ?= UART2_BASE
> CFG_TZDRAM_START ?= 0xBE00
> undefine CFG_NS_ENTRY_ADDR
> 
> Barebox compiled with:
> CONFIG_HAVE_OPTEE=y CONFIG_OPTEE_SIZE=0x0200 # CONFIG_BOOTM_OPTEE is not 
> set CONFIG_PBL_OPTEE=y CONFIG_FIRMWARE_IMX8MP_OPTEE=y 
> 
> This produces the following on boot:
> —><--
> 
> Uart initialized
> Run level 3
> Init power
> Init DDR
> Handover to ATF
> imx8mp_load_and_start_image_via_tfa: Expect OPTEE at 0xbe00
> CH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
> IH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
>   NOTICE:  Do 
> not release JR0 to NS as it can be used by HAB
> NOTICE:  BL31: v2.8(debug):lf-6.1.36-2.1.0-0-g1a3beeab6-dirty
> NOTICE:  BL31: Built : 13:14:09, Oct 18 2023
> INFO:GICv3 with legacy support detected.
> INFO:ARM GICv3 driver initialized in EL3
> INFO:Maximum SPI INTID supported: 191
> INFO:BL31: Initializing runtime services
> INFO:bl31_plat_get_next_image_ep_info: want image 0
> INFO:bl31_plat_get_next_image_ep_info: bl32 PC is 0xbe00
> INFO:BL31: cortex_a53: CPU workaround for 855873 was applied
> WARNING: BL31: cortex_a53: CPU workaround for 1530924 was missing!
> INFO:BL31: Initializing BL32
> INFO:bl31_plat_get_next_image_ep_info: want image 0
> INFO:bl31_plat_get_next_image_ep_info: bl32 PC is 0xbe00
> INFO:opteed_init: 176 - calling 
> INFO:opteed_synchronous_sp_entry: 79 - calling 
> 
> ><
> 
> I´m not sure why it asks for the same image twice and if this implies 
> anything …
> 
> Hans
> 
>> 18. okt. 2023 kl. 11:06 skrev Ahmad Fatoum :
>> 
>> Hello Hans,
>> 
>> On 18.10.23 10:11, Hans Christian Lønstad wrote:
>>> Just reaching out to ask whether anyone has successfully integrated Optee 
>>> on the IMX8M(P) platform.
>>> Our trials results in a crash when the ATF (NXP 2.8) does the handover to 
>>> Optee (exit EL3).
>>> 
>>> In ATF it appears that BL32 is expected to load at 0x5600 on IMX8MP 
>>> while Barebox actually loads
>>> The Optee bin blob just below top of memory.
>>> (Patching Barebox to the expected ATF BL32_BASE does not resolve the issue)
>>> 
>>> Any help would be appreciated
>> 
>> I am using OP-TEE in an i.MX8MN project successfully. The hardcoding of 
>> addresses
>> is indeed unfortunate and it needs manual adjustment depending on the size
>> of available RAM.
>> 
>> The common configuration is to reserve secure memory at the end of DRAM as 
>> not
>> to split the RAM in half. You should thus change the BL32 address used in 
>> TF-A
>> in alignment with barebox CONFIG_OPTEE_SIZE, which is always relative to the 
>> end
>> of RAM.
>> 
>> Let me know how it goes.
>> 
>> Cheers,
>> Ahmad
>> 
>>> 
>>> Hans Christian Lønstad
>>> 
>>> 
>> 
>> -- 
>> Pengutronix e.K.   | |
>> Steuerwalder Str. 21   | http://www.pengutronix.de/  |
>> 31137 Hildesheim, Germany  | Phone: +49-5121-206917-0|
>> Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |
>> 
> 



Re: IMX8M and Optee support

2023-10-18 Thread Hans Christian Lønstad
We have a 2GB IMX8MP system using 32MB OPTEEE_SIZE, so expect to find Optee 
blob at 0xBE00.

ATF compiled with:
make PLAT=imx8mp BL32_BASE=0xBE00 IMX_BOOT_UART_BASE=0x3089 SPD=opteed 
DEBUG=1 -j

Optee compiled with:

CFG_DDR_SIZE ?= UL(0x8000)
CFG_UART_BASE ?= UART2_BASE
CFG_TZDRAM_START ?= 0xBE00
undefine CFG_NS_ENTRY_ADDR

Barebox compiled with:
CONFIG_HAVE_OPTEE=y CONFIG_OPTEE_SIZE=0x0200 # CONFIG_BOOTM_OPTEE is not 
set CONFIG_PBL_OPTEE=y CONFIG_FIRMWARE_IMX8MP_OPTEE=y 

This produces the following on boot:
—><--

Uart initialized
Run level 3
Init power
Init DDR
Handover to ATF
imx8mp_load_and_start_image_via_tfa: Expect OPTEE at 0xbe00
CH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
IH e2a7175151fe3e842116990e62c864334e1bb030ca146b749d8e6b0c02481357
   NOTICE:  Do 
not release JR0 to NS as it can be used by HAB
NOTICE:  BL31: v2.8(debug):lf-6.1.36-2.1.0-0-g1a3beeab6-dirty
NOTICE:  BL31: Built : 13:14:09, Oct 18 2023
INFO:GICv3 with legacy support detected.
INFO:ARM GICv3 driver initialized in EL3
INFO:Maximum SPI INTID supported: 191
INFO:BL31: Initializing runtime services
INFO:bl31_plat_get_next_image_ep_info: want image 0
INFO:bl31_plat_get_next_image_ep_info: bl32 PC is 0xbe00
INFO:BL31: cortex_a53: CPU workaround for 855873 was applied
WARNING: BL31: cortex_a53: CPU workaround for 1530924 was missing!
INFO:BL31: Initializing BL32
INFO:bl31_plat_get_next_image_ep_info: want image 0
INFO:bl31_plat_get_next_image_ep_info: bl32 PC is 0xbe00
INFO:opteed_init: 176 - calling 
INFO:opteed_synchronous_sp_entry: 79 - calling 

><

I´m not sure why it asks for the same image twice and if this implies anything …

Hans

> 18. okt. 2023 kl. 11:06 skrev Ahmad Fatoum :
> 
> Hello Hans,
> 
> On 18.10.23 10:11, Hans Christian Lønstad wrote:
>> Just reaching out to ask whether anyone has successfully integrated Optee on 
>> the IMX8M(P) platform.
>> Our trials results in a crash when the ATF (NXP 2.8) does the handover to 
>> Optee (exit EL3).
>> 
>> In ATF it appears that BL32 is expected to load at 0x5600 on IMX8MP 
>> while Barebox actually loads
>> The Optee bin blob just below top of memory.
>> (Patching Barebox to the expected ATF BL32_BASE does not resolve the issue)
>> 
>> Any help would be appreciated
> 
> I am using OP-TEE in an i.MX8MN project successfully. The hardcoding of 
> addresses
> is indeed unfortunate and it needs manual adjustment depending on the size
> of available RAM.
> 
> The common configuration is to reserve secure memory at the end of DRAM as not
> to split the RAM in half. You should thus change the BL32 address used in TF-A
> in alignment with barebox CONFIG_OPTEE_SIZE, which is always relative to the 
> end
> of RAM.
> 
> Let me know how it goes.
> 
> Cheers,
> Ahmad
> 
>> 
>> Hans Christian Lønstad
>> 
>> 
> 
> -- 
> Pengutronix e.K.   | |
> Steuerwalder Str. 21   | http://www.pengutronix.de/  |
> 31137 Hildesheim, Germany  | Phone: +49-5121-206917-0|
> Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |
> 



Re: IMX8M and Optee support

2023-10-18 Thread Ahmad Fatoum
Hello Hans,

On 18.10.23 10:11, Hans Christian Lønstad wrote:
> Just reaching out to ask whether anyone has successfully integrated Optee on 
> the IMX8M(P) platform.
> Our trials results in a crash when the ATF (NXP 2.8) does the handover to 
> Optee (exit EL3).
> 
> In ATF it appears that BL32 is expected to load at 0x5600 on IMX8MP while 
> Barebox actually loads
> The Optee bin blob just below top of memory.
> (Patching Barebox to the expected ATF BL32_BASE does not resolve the issue)
> 
> Any help would be appreciated

I am using OP-TEE in an i.MX8MN project successfully. The hardcoding of 
addresses
is indeed unfortunate and it needs manual adjustment depending on the size
of available RAM.

The common configuration is to reserve secure memory at the end of DRAM as not
to split the RAM in half. You should thus change the BL32 address used in TF-A
in alignment with barebox CONFIG_OPTEE_SIZE, which is always relative to the end
of RAM.

Let me know how it goes.

Cheers,
Ahmad

> 
> Hans Christian Lønstad
> 
> 

-- 
Pengutronix e.K.   | |
Steuerwalder Str. 21   | http://www.pengutronix.de/  |
31137 Hildesheim, Germany  | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |