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