• Jean-Philippe Brucker's avatar
    KVM: arm64: nvhe: Ignore SVE hint in SMCCC function ID · 373beef0
    Jean-Philippe Brucker authored
    When SVE is enabled, the host may set bit 16 in SMCCC function IDs, a
    hint that indicates an unused SVE state. At the moment NVHE doesn't
    account for this bit when inspecting the function ID, and rejects most
    calls. Clear the hint bit before comparing function IDs.
    
    About version compatibility: the host's PSCI driver initially probes the
    firmware for a SMCCC version number. If the firmware implements a
    protocol recent enough (1.3), subsequent SMCCC calls have the hint bit
    set. Since the hint bit was reserved in earlier versions of the
    protocol, clearing it is fine regardless of the version in use.
    
    When a new hint is added to the protocol in the future, it will be added
    to ARM_SMCCC_CALL_HINTS and NVHE will handle it straight away. This
    patch only clears known hints and leaves reserved bits as is, because
    future SMCCC versions could use reserved bits as modifiers for the
    function ID, rather than hints.
    
    Fixes: cfa7ff95 ("arm64: smccc: Support SMCCC v1.3 SVE register saving hint")
    Reported-by: default avatarBen Horgan <ben.horgan@arm.com>
    Signed-off-by: default avatarJean-Philippe Brucker <jean-philippe@linaro.org>
    Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20230911145254.934414-4-jean-philippe@linaro.org
    373beef0
kvm_hyp.h 5.06 KB