On 11/19/19 1:32 PM, Tony Lindgren wrote: > * Andrew F. Davis <afd@xxxxxx> [191119 18:21]: >> On 11/19/19 1:05 PM, Tony Lindgren wrote: >>> * Tony Lindgren <tony@xxxxxxxxxxx> [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 >