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

From: Andrew F. Davis
Date: Tue Dec 17 2019 - 08:14:20 EST


On 12/16/19 5:41 PM, Tony Lindgren wrote:
> * Andrew F. Davis <afd@xxxxxx> [191216 22:34]:
>> On 12/16/19 4:04 PM, Tony Lindgren wrote:
>>> * Andrew F. Davis <afd@xxxxxx> [191216 20:57]:
>>>> Looks like the TI quirk idea is not moving forward, even the QCOM quirk
>>>> looks like it may get kicked out. arm_smccc_smc() will remain only for
>>>> SMCCC compliant calls, but it looks like a generic arm_smc() wouldn't be
>>>> too opposed upstream.
>>>
>>> Yes so it seems.
>>>
>>>> Either way this patch would still be valid as when OP-TEE is present
>>>> then arm_smccc_smc() will be the right call to make, how we handle the
>>>> legacy calls can be sorted out later if a generic SMC call is implemented.
>>>
>>> Please see my comment regarding this patch earlier in this thread
>>> pasted below for convenience:
>>>
>>> * Tony Lindgren <tony@xxxxxxxxxxx> [191119 16:22]:
>>>> In any case, you should do the necessary checks for HAVE_ARM_SMCCC
>>>> only once during init. I'm not sure how much checking for
>>>> "/firmware/optee" helps here, sounds like we have a broken system
>>>> if the firmware is not there while the arm_smccc_smc() should
>>>> still work just fine :)
>>>
>>> So only check once during init. And during init, you should probably
>>> also check that arm_smccc_smc() actually infd optee if
>>> "/firmware/optee" is set, and only then set set the right function
>>> pointer or some flag.
>>>
>>
>> Okay, I'll check only once and make sure the node is "okay".
>
> Yes we don't want to parse the dts over and over.
>
>> I'll do the check during the first call to an SMC caller, I wouldn't
>> want to pollute the OMAP generic init code for something that is only
>> called on HS platforms, plus these SMC calls are rare (only 3 calls
>> during boot of AM57x for instance) so performance is not critical, so I
>> don't want to do anything fancy like code patching :), I'll just use a flag.
>
> Please just add omap_early_initcall() to omap-secure.c while at it
> to deal with this.
>


omap_early_initcall()s are not called until after all the SMC calls have
already happened.

Andrew


> Regards,
>
> Tony
>