diff mbox series

[v2,5/5] optee: Support Rockchip OP-TEE binaries

Message ID 20230718145715.1280201-6-knaerzche@gmail.com
State Rejected
Delegated to: Kever Yang
Headers show
Series rockchip: Support OP-TEE binaries in ARM FIT images | expand

Commit Message

Alex Bee July 18, 2023, 2:57 p.m. UTC
Currently the only ARM Rockchip SoC which is supported by upstream
optee-os is RK322x. For all other ARM SoCs a
vendor-provided OP-TEE binary has to be used to have a TEE available.
Those are using a calling convension different from upstream optee-os.

This introduces CONFIG_ROCKCHIP_OPTEE_BINARY which signals that any
of those vendor binaries is used and changes the calling convension
accordingly.

Signed-off-by: Alex Bee <knaerzche@gmail.com>
---
 arch/arm/mach-rockchip/Kconfig | 8 ++++++++
 common/spl/spl_optee.S         | 4 ++++
 2 files changed, 12 insertions(+)

Comments

Kever Yang July 19, 2023, 7:28 a.m. UTC | #1
Hi Alex,


On 2023/7/18 22:57, Alex Bee wrote:
> Currently the only ARM Rockchip SoC which is supported by upstream
> optee-os is RK322x. For all other ARM SoCs a
> vendor-provided OP-TEE binary has to be used to have a TEE available.
> Those are using a calling convension different from upstream optee-os.
>
> This introduces CONFIG_ROCKCHIP_OPTEE_BINARY which signals that any
> of those vendor binaries is used and changes the calling convension
> accordingly.
>
> Signed-off-by: Alex Bee <knaerzche@gmail.com>
> ---
>   arch/arm/mach-rockchip/Kconfig | 8 ++++++++
>   common/spl/spl_optee.S         | 4 ++++
>   2 files changed, 12 insertions(+)
>
> diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
> index 17dd43155d..83d8a2a056 100644
> --- a/arch/arm/mach-rockchip/Kconfig
> +++ b/arch/arm/mach-rockchip/Kconfig
> @@ -449,6 +449,14 @@ config ROCKCHIP_BOOT_MODE_REG
>   	  The Soc will enter to different boot mode(defined in asm/arch-rockchip/boot_mode.h)
>   	  according to the value from this register.
>   
> +config ROCKCHIP_OPTEE_BINARY
> +	bool "Use a OP-TEE binary provided by Rockchip"
> +	depends on SPL_OPTEE_IMAGE
> +	default y if ROCKCHIP_RK3036 || ROCKCHIP_RK3128 || ROCKCHIP_RK3288

     This patch is not need for now.

     the  rk3036 works without OPTEE, and rk3288 is able to use ATF 
instead for OPTEE which upstreamed by Heiko.


Thanks,

- Kever

> +	help
> +	  This option enables the usage of vendor-provided OP-TEE binaries.
> +	  Say Y if you are using OP-TEE binary provided by Rockchip.
> +
>   config ROCKCHIP_RK8XX_DISABLE_BOOT_ON_POWERON
>   	bool "Disable device boot on power plug-in"
>   	depends on PMIC_RK8XX
> diff --git a/common/spl/spl_optee.S b/common/spl/spl_optee.S
> index a269904d38..ea41d8adb6 100644
> --- a/common/spl/spl_optee.S
> +++ b/common/spl/spl_optee.S
> @@ -7,6 +7,10 @@
>   #include <asm/assembler.h>
>   
>   ENTRY(spl_optee_entry)
> +#ifdef CONFIG_ROCKCHIP_OPTEE_BINARY
> +	ldr r1, =CONFIG_TEXT_BASE
> +#else
>   	ldr lr, =CONFIG_TEXT_BASE
> +#endif
>   	mov pc, r3
>   ENDPROC(spl_optee_entry)
Alex Bee July 20, 2023, 7:39 a.m. UTC | #2
Hi Kever,

Am 19.07.23 um 09:28 schrieb Kever Yang:
> Hi Alex,
> 
> 
> On 2023/7/18 22:57, Alex Bee wrote:
>> Currently the only ARM Rockchip SoC which is supported by upstream
>> optee-os is RK322x. For all other ARM SoCs a
>> vendor-provided OP-TEE binary has to be used to have a TEE available.
>> Those are using a calling convension different from upstream optee-os.
>>
>> This introduces CONFIG_ROCKCHIP_OPTEE_BINARY which signals that any
>> of those vendor binaries is used and changes the calling convension
>> accordingly.
>>
>> Signed-off-by: Alex Bee <knaerzche@gmail.com>
>> ---
>>   arch/arm/mach-rockchip/Kconfig | 8 ++++++++
>>   common/spl/spl_optee.S         | 4 ++++
>>   2 files changed, 12 insertions(+)
>>
>> diff --git a/arch/arm/mach-rockchip/Kconfig 
>> b/arch/arm/mach-rockchip/Kconfig
>> index 17dd43155d..83d8a2a056 100644
>> --- a/arch/arm/mach-rockchip/Kconfig
>> +++ b/arch/arm/mach-rockchip/Kconfig
>> @@ -449,6 +449,14 @@ config ROCKCHIP_BOOT_MODE_REG
>>         The Soc will enter to different boot mode(defined in 
>> asm/arch-rockchip/boot_mode.h)
>>         according to the value from this register.
>> +config ROCKCHIP_OPTEE_BINARY
>> +    bool "Use a OP-TEE binary provided by Rockchip"
>> +    depends on SPL_OPTEE_IMAGE
>> +    default y if ROCKCHIP_RK3036 || ROCKCHIP_RK3128 || ROCKCHIP_RK3288
> 
>      This patch is not need for now.
> 
>      the  rk3036 works without OPTEE, and rk3288 is able to use ATF 
> instead for OPTEE which upstreamed by Heiko.
> 
Thanks for your review.

I'm aware of Heiko's ATF BL32 implemenation for RK3288. But what about 
RK3128/RK3036? They might wwork w/o RK OPTEE-binaries in regards of SMP 
bringup, but still you have no TEE.

You're right: It's not strictly required to have support for RK 
OPTEE-binaries, but also it doesn't hurt and it's fully optional to use 
it for those SoCs. Besides RK's TEE-implementations provide some more 
services via SMCC calls (DVFS for DRAM, for instance) which are not 
supported (yet) by upstream variants.
I don't like the requirement of this patch either, but unfortunately the 
TEE binaries RK provides are built with wrong/incompatible flags.

Regards,
Alex
> 
> Thanks,
> 
> - Kever
> 
>> +    help
>> +      This option enables the usage of vendor-provided OP-TEE binaries.
>> +      Say Y if you are using OP-TEE binary provided by Rockchip.
>> +
>>   config ROCKCHIP_RK8XX_DISABLE_BOOT_ON_POWERON
>>       bool "Disable device boot on power plug-in"
>>       depends on PMIC_RK8XX
>> diff --git a/common/spl/spl_optee.S b/common/spl/spl_optee.S
>> index a269904d38..ea41d8adb6 100644
>> --- a/common/spl/spl_optee.S
>> +++ b/common/spl/spl_optee.S
>> @@ -7,6 +7,10 @@
>>   #include <asm/assembler.h>
>>   ENTRY(spl_optee_entry)
>> +#ifdef CONFIG_ROCKCHIP_OPTEE_BINARY
>> +    ldr r1, =CONFIG_TEXT_BASE
>> +#else
>>       ldr lr, =CONFIG_TEXT_BASE
>> +#endif
>>       mov pc, r3
>>   ENDPROC(spl_optee_entry)
Kever Yang July 26, 2023, 8:02 a.m. UTC | #3
On 2023/7/20 15:39, Alex Bee wrote:
> Hi Kever,
>
> Am 19.07.23 um 09:28 schrieb Kever Yang:
>> Hi Alex,
>>
>>
>> On 2023/7/18 22:57, Alex Bee wrote:
>>> Currently the only ARM Rockchip SoC which is supported by upstream
>>> optee-os is RK322x. For all other ARM SoCs a
>>> vendor-provided OP-TEE binary has to be used to have a TEE available.
>>> Those are using a calling convension different from upstream optee-os.
>>>
>>> This introduces CONFIG_ROCKCHIP_OPTEE_BINARY which signals that any
>>> of those vendor binaries is used and changes the calling convension
>>> accordingly.
>>>
>>> Signed-off-by: Alex Bee <knaerzche@gmail.com>
>>> ---
>>>   arch/arm/mach-rockchip/Kconfig | 8 ++++++++
>>>   common/spl/spl_optee.S         | 4 ++++
>>>   2 files changed, 12 insertions(+)
>>>
>>> diff --git a/arch/arm/mach-rockchip/Kconfig 
>>> b/arch/arm/mach-rockchip/Kconfig
>>> index 17dd43155d..83d8a2a056 100644
>>> --- a/arch/arm/mach-rockchip/Kconfig
>>> +++ b/arch/arm/mach-rockchip/Kconfig
>>> @@ -449,6 +449,14 @@ config ROCKCHIP_BOOT_MODE_REG
>>>         The Soc will enter to different boot mode(defined in 
>>> asm/arch-rockchip/boot_mode.h)
>>>         according to the value from this register.
>>> +config ROCKCHIP_OPTEE_BINARY
>>> +    bool "Use a OP-TEE binary provided by Rockchip"
>>> +    depends on SPL_OPTEE_IMAGE
>>> +    default y if ROCKCHIP_RK3036 || ROCKCHIP_RK3128 || ROCKCHIP_RK3288
>>
>>      This patch is not need for now.
>>
>>      the  rk3036 works without OPTEE, and rk3288 is able to use ATF 
>> instead for OPTEE which upstreamed by Heiko.
>>
> Thanks for your review.
>
> I'm aware of Heiko's ATF BL32 implemenation for RK3288. But what about 
> RK3128/RK3036? They might wwork w/o RK OPTEE-binaries in regards of 
> SMP bringup, but still you have no TEE.
>
> You're right: It's not strictly required to have support for RK 
> OPTEE-binaries, but also it doesn't hurt and it's fully optional to 
> use it for those SoCs. Besides RK's TEE-implementations provide some 
> more services via SMCC calls (DVFS for DRAM, for instance) which are 
> not supported (yet) by upstream variants.
The mainline U-Boot is target to work with mainline kernel, so we don't 
need this patch for now.
> I don't like the requirement of this patch either, but unfortunately 
> the TEE binaries RK provides are built with wrong/incompatible flags.

The better way is to push Rockchip TEE to use the same parameter with 
mainline OP-TEE, I will sync with rockchip OPTEE owner, and I would like 
this patch stay out of tree for now.


Thanks,

- Kever

>
> Regards,
> Alex
>>
>> Thanks,
>>
>> - Kever
>>
>>> +    help
>>> +      This option enables the usage of vendor-provided OP-TEE 
>>> binaries.
>>> +      Say Y if you are using OP-TEE binary provided by Rockchip.
>>> +
>>>   config ROCKCHIP_RK8XX_DISABLE_BOOT_ON_POWERON
>>>       bool "Disable device boot on power plug-in"
>>>       depends on PMIC_RK8XX
>>> diff --git a/common/spl/spl_optee.S b/common/spl/spl_optee.S
>>> index a269904d38..ea41d8adb6 100644
>>> --- a/common/spl/spl_optee.S
>>> +++ b/common/spl/spl_optee.S
>>> @@ -7,6 +7,10 @@
>>>   #include <asm/assembler.h>
>>>   ENTRY(spl_optee_entry)
>>> +#ifdef CONFIG_ROCKCHIP_OPTEE_BINARY
>>> +    ldr r1, =CONFIG_TEXT_BASE
>>> +#else
>>>       ldr lr, =CONFIG_TEXT_BASE
>>> +#endif
>>>       mov pc, r3
>>>   ENDPROC(spl_optee_entry)
>
diff mbox series

Patch

diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
index 17dd43155d..83d8a2a056 100644
--- a/arch/arm/mach-rockchip/Kconfig
+++ b/arch/arm/mach-rockchip/Kconfig
@@ -449,6 +449,14 @@  config ROCKCHIP_BOOT_MODE_REG
 	  The Soc will enter to different boot mode(defined in asm/arch-rockchip/boot_mode.h)
 	  according to the value from this register.
 
+config ROCKCHIP_OPTEE_BINARY
+	bool "Use a OP-TEE binary provided by Rockchip"
+	depends on SPL_OPTEE_IMAGE
+	default y if ROCKCHIP_RK3036 || ROCKCHIP_RK3128 || ROCKCHIP_RK3288
+	help
+	  This option enables the usage of vendor-provided OP-TEE binaries.
+	  Say Y if you are using OP-TEE binary provided by Rockchip.
+
 config ROCKCHIP_RK8XX_DISABLE_BOOT_ON_POWERON
 	bool "Disable device boot on power plug-in"
 	depends on PMIC_RK8XX
diff --git a/common/spl/spl_optee.S b/common/spl/spl_optee.S
index a269904d38..ea41d8adb6 100644
--- a/common/spl/spl_optee.S
+++ b/common/spl/spl_optee.S
@@ -7,6 +7,10 @@ 
 #include <asm/assembler.h>
 
 ENTRY(spl_optee_entry)
+#ifdef CONFIG_ROCKCHIP_OPTEE_BINARY
+	ldr r1, =CONFIG_TEXT_BASE
+#else
 	ldr lr, =CONFIG_TEXT_BASE
+#endif
 	mov pc, r3
 ENDPROC(spl_optee_entry)