]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
KVM: arm64: Use SMCCC 1.2 for FF-A initialization and in host handler
authorPer Larsen <perlarsen@google.com>
Wed, 20 Aug 2025 01:10:06 +0000 (01:10 +0000)
committerMarc Zyngier <maz@kernel.org>
Mon, 8 Sep 2025 18:30:59 +0000 (19:30 +0100)
commit6f4c348b1d5c08f1105e645700962cc4353a8ac9
tree9a3078da22972927756220375c4af3c21cd59169
parentf414269392443f666bd8bef0cb3f0b53d5147be3
KVM: arm64: Use SMCCC 1.2 for FF-A initialization and in host handler

SMCCC 1.1 and prior allows four registers to be sent back as a result
of an FF-A interface. SMCCC 1.2 increases the number of results that can
be sent back to 8 and 16 for 32-bit and 64-bit SMC/HVCs respectively.

FF-A 1.0 references SMCCC 1.2 (reference [4] on page xi) and FF-A 1.2
explicitly requires SMCCC 1.2 so it should be safe to use this version
unconditionally. Moreover, it is simpler to implement FF-A features
without having to worry about compatibility with SMCCC 1.1 and older.

SMCCC 1.2 requires that SMC32/HVC32 from aarch64 mode preserves x8-x30
but given that there is no reliable way to distinguish 32-bit/64-bit
calls, we assume SMC64 unconditionally. This has the benefit of being
consistent with the handling of calls that are passed through, i.e., not
proxied. (A cleaner solution will become available in FF-A 1.3.)

Update the FF-A initialization and host handler code to use SMCCC 1.2.

Signed-off-by: Per Larsen <perlarsen@google.com>
Acked-by: Will Deacon <will@kernel.org>
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/hyp/nvhe/Makefile
arch/arm64/kvm/hyp/nvhe/ffa.c