[PATCH v6] arm64: smccc: Support SMCCC v1.3 SVE register saving hint
Will Deacon
will at kernel.org
Tue Jun 8 05:15:33 PDT 2021
On Thu, Jun 03, 2021 at 07:41:18PM +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
> function which we call immediately before issuing the SMCCC call to make
> our checks and set the flag. Using alternatives the overhead if SVE is
> supported but not detected at runtime can be reduced to a single NOP.
>
> Signed-off-by: Mark Brown <broonie at kernel.org>
> Reviewed-by: Ard Biesheuvel <ardb at kernel.org>
> Reviewed-by: Marc Zyngier <maz at kernel.org>
> ---
>
> v6:
> - Prototype __arm_smccc_sve_check add add the _arm to the name to fix
> issues with symbol versioning.
Can you elaborate on what was going wrong with symbol versioning, please?
Are we papering over another genksyms bug here?
Will
More information about the linux-arm-kernel
mailing list