[PATCH v1 2/2] arm64: smccc: Support SMCCC v1.3 SVE register saving hint

Sudeep Holla sudeep.holla at arm.com
Tue May 18 09:43:02 PDT 2021


Hi Mark,

On Tue, May 18, 2021 at 11:09:19AM +0100, Mark Brown wrote:
> SMCCC v1.2 requires that all SVE state be preserved over SMC calls which
> introduces substantial overhead in the common case where there is no SVE
> state in the registers. To avoid this SMCCC v1.3 introduces a flag which
> allows the caller to say that there is no state that needs to be preserved
> in the registers. Make use of this flag, setting it if the SMCCC version
> indicates support for it and the TIF_ flags indicate that there is no live
> SVE state in the registers, this avoids placing any constraints on when
> SMCCC calls can be done or triggering extra saving and reloading of SVE
> register state in the kernel.
> 
> This would be straightforward enough except for the rather entertaining
> inline assembly we use to do SMCCC v1.1 calls to allow us to take advantage
> of the limited number of registers it clobbers. Deal with this by having a
> slightly non-standard function which we call immediately before issuing the
> SMCCC call to make our checks. This causes an extra function call on any
> system built with SVE support, and extra checks when SVE is detected at
> runtime, but these costs are expected to be reasonable in the context of
> doing a SMCCC call in the first place.
> 

I am adding another interface that extends the input/output register set
for v1.2 and above. I assume we may need these changes there too. I have
cc-ed you in the updated version I just posted. The lore link is not yet
available, so sharing the one for earlier version[1]

-- 
Regards,
Sudeep

[1] https://lore.kernel.org/r/20210505093843.3308691-2-sudeep.holla@arm.com/



More information about the linux-arm-kernel mailing list