Re: [PATCH] ARM: OMAP: Use ARM SMC Calling Convention when OP-TEE is available

Andrew F. Davis
2019-11-19T18:50:42Z

On 11/19/19 1:32 PM, Tony Lindgren wrote:
> * Andrew F. Davis <afd@ti.com> [191119 18:21]:
>> On 11/19/19 1:05 PM, Tony Lindgren wrote:
>>> * Tony Lindgren <tony@atomide.com> [191119 16:43]:
>>>> What I'd like to have though is to make arm_smccc_smc()
>>>> work for optee and non-optee case for mach-omap2 as it
>>>> already has the features necessary to do the runtime
>>>> patching of the code for the quirks.
>>>
>>> In any case sounds like we only need the r12 quirk when
>>> optee is _not_ enabled.
>>>
>>> So a modified version of your earlier smccc-call.S patch
>>> modified to only enable the r12 quirk when no optee is
>>> loaded just might be all we need :)
>>
>> Doesn't change the reason the earlier patch was NAKd, we would still be
>> modifying the core SMCCC call to be non-compliant.
>
> Well let's see what Mark says about r12 quirk version
> that is only needed when optee is not active.
>
>> And doing it only when OP-TEE is not installed doesn't gain us anything,
>> we already have our own SMC calls for when OP-TEE is not available, this
>> patch is specifically so the OMAP2+ boot still works even when OP-TEE is
>> installed.
>
> It would allow us to completely change over to using
> arm_smccc_smc() and forget the custom calls.
>

We would need more than just the r12 quirk to replace all our custom SMC
handlers, we would need quirks for omap_smc2 which puts process ID in r1
and puts #0xff in r6, and omap_smc3 that uses smc #1. All of our legacy
SMC calls also trash r4-r11, that is very non SMCCC complaint as only
r4-r7 need be caller saved. I don't see arm_smccc_smc() working with
legacy ROM no matter how much we hack at it :(

>> If you can get Mark to take my old patch then we can think about moving
>> more legacy SMC callers to the SMCCC, otherwise this patch is what we
>> need to get OP-TEE enabled OMAP2+ platforms to boot and we will just
>> stick to the custom SMC functions we already have for everything else.
>
> To me it sounds like your old patch won't work as is though,
> we just want the code modified dynamically if optee is not
> present to enable the r12 quirk.
>

I can make OP-TEE also compatible with the r12 quirk, which is what I
used to do. That way we didn't need to do any detection. The issue was
that non-standard SMC calls should not go through the common SMCCC
handler (unless you are QCOM for some reason..).

Andrew

> Of course if both the optee version without the r12 quirk,
> and a non-optee version with the r12 of the arm_smccc_smc()
> are needed the same time on a booted system, then they should
> be kept separate.
>
> Regards,
>
> Tony
>