mbox series

[v1,0/3] arm64/sve: Document our actual SVE syscall ABI

Message ID 20220720205013.890942-1-broonie@kernel.org (mailing list archive)
Headers show
Series arm64/sve: Document our actual SVE syscall ABI | expand

Message

Mark Brown July 20, 2022, 8:50 p.m. UTC
Currently our SVE syscall ABI documentation does not reflect the actual
implemented ABI, it says that register state not shared with FPSIMD
becomes undefined on syscall when in reality we always clear it. Since
changing this would cause a change in the observed kernel behaviour
there is a substantial desire to avoid taking advantage of the
documented ABI so instead let's document what we actually do so it's
clear that it is in reality an ABI.

There has been some pushback on tightening the documentation in the past
but it is hard to see who that helps, it makes the implementation
decisions less clear and makes it harder for people to discover and make
use of the actual ABI. The main practical concern is that qemu's user
mode does not currently flush the registers.

Mark Brown (3):
  kselftest/arm64: Correct buffer allocation for SVE Z registers
  arm64/sve: Document our actual ABI for clearing registers on syscall
  kselftest/arm64: Enforce actual ABI for SVE syscalls

 Documentation/arm64/sve.rst                   |  2 +-
 .../testing/selftests/arm64/abi/syscall-abi.c | 61 ++++++++++++-------
 2 files changed, 41 insertions(+), 22 deletions(-)


base-commit: a111daf0c53ae91e71fd2bfe7497862d14132e3e

Comments

Catalin Marinas July 21, 2022, 3:25 p.m. UTC | #1
On Wed, Jul 20, 2022 at 09:50:10PM +0100, Mark Brown wrote:
> Currently our SVE syscall ABI documentation does not reflect the actual
> implemented ABI, it says that register state not shared with FPSIMD
> becomes undefined on syscall when in reality we always clear it. Since
> changing this would cause a change in the observed kernel behaviour
> there is a substantial desire to avoid taking advantage of the
> documented ABI so instead let's document what we actually do so it's
> clear that it is in reality an ABI.
> 
> There has been some pushback on tightening the documentation in the past
> but it is hard to see who that helps, it makes the implementation
> decisions less clear and makes it harder for people to discover and make
> use of the actual ABI. The main practical concern is that qemu's user
> mode does not currently flush the registers.
> 
> Mark Brown (3):
>   kselftest/arm64: Correct buffer allocation for SVE Z registers
>   arm64/sve: Document our actual ABI for clearing registers on syscall
>   kselftest/arm64: Enforce actual ABI for SVE syscalls

For the series:

Acked-by: Catalin Marinas <catalin.marinas@arm.com>