mbox series

[v5,0/9] arm64: Support for 2023 DPISA extensions

Message ID 20240306-arm64-2023-dpisa-v5-0-c568edc8ed7f@kernel.org (mailing list archive)
Headers show
Series arm64: Support for 2023 DPISA extensions | expand

Message

Mark Brown March 6, 2024, 11:14 p.m. UTC
This series enables support for the data processing extensions in the
newly released 2023 architecture, this is mainly support for 8 bit
floating point formats.  Most of the extensions only introduce new
instructions and therefore only require hwcaps but there is a new EL0
visible control register FPMR used to control the 8 bit floating point
formats, we need to manage traps for this and context switch it.

Due to the very recently merged KVM changes for configuring guest
features via ID register writes only being available in -next the
support for guest state has been dropped for this version, the relevant
KVM interfaces should all be there after the merge window so the code
will be refreshed for the new interfaces then.

I've not added test coverage for ptrace, my plan is to add support to
fp-ptrace (which is now merged so I'll update after the merge window).

Signed-off-by: Mark Brown <broonie@kernel.org>
---
Changes in v5:
- Rebase onto v6.8-rc3.
- Use u64 rather than unsigned long for storing FPMR.
- Temporarily drop KVM guest support due to issues with KVM being a
  moving target.
- Link to v4: https://lore.kernel.org/r/20240122-arm64-2023-dpisa-v4-0-776e094861df@kernel.org

Changes in v4:
- Rebase onto v6.8-rc1.
- Move KVM support to the end of the series.
- Link to v3: https://lore.kernel.org/r/20231205-arm64-2023-dpisa-v3-0-dbcbcd867a7f@kernel.org

Changes in v3:
- Rebase onto v6.7-rc3.
- Hook up traps for FPMR in emulate-nested.c.
- Link to v2: https://lore.kernel.org/r/20231114-arm64-2023-dpisa-v2-0-47251894f6a8@kernel.org

Changes in v2:
- Rebase onto v6.7-rc1.
- Link to v1: https://lore.kernel.org/r/20231026-arm64-2023-dpisa-v1-0-8470dd989bb2@kernel.org

---
Mark Brown (9):
      arm64/cpufeature: Hook new identification registers up to cpufeature
      arm64/fpsimd: Enable host kernel access to FPMR
      arm64/fpsimd: Support FEAT_FPMR
      arm64/signal: Add FPMR signal handling
      arm64/ptrace: Expose FPMR via ptrace
      arm64/hwcap: Define hwcaps for 2023 DPISA features
      kselftest/arm64: Handle FPMR context in generic signal frame parser
      kselftest/arm64: Add basic FPMR test
      kselftest/arm64: Add 2023 DPISA hwcap test coverage

 Documentation/arch/arm64/elf_hwcaps.rst            |  49 +++++
 arch/arm64/include/asm/cpu.h                       |   3 +
 arch/arm64/include/asm/cpufeature.h                |   5 +
 arch/arm64/include/asm/fpsimd.h                    |   2 +
 arch/arm64/include/asm/hwcap.h                     |  15 ++
 arch/arm64/include/asm/kvm_arm.h                   |   2 +-
 arch/arm64/include/asm/kvm_host.h                  |   1 +
 arch/arm64/include/asm/processor.h                 |   4 +
 arch/arm64/include/uapi/asm/hwcap.h                |  15 ++
 arch/arm64/include/uapi/asm/sigcontext.h           |   8 +
 arch/arm64/kernel/cpufeature.c                     |  72 +++++++
 arch/arm64/kernel/cpuinfo.c                        |  18 ++
 arch/arm64/kernel/fpsimd.c                         |  13 ++
 arch/arm64/kernel/ptrace.c                         |  42 ++++
 arch/arm64/kernel/signal.c                         |  59 ++++++
 arch/arm64/kvm/fpsimd.c                            |   1 +
 arch/arm64/tools/cpucaps                           |   1 +
 include/uapi/linux/elf.h                           |   1 +
 tools/testing/selftests/arm64/abi/hwcap.c          | 217 +++++++++++++++++++++
 tools/testing/selftests/arm64/signal/.gitignore    |   1 +
 .../arm64/signal/testcases/fpmr_siginfo.c          |  82 ++++++++
 .../selftests/arm64/signal/testcases/testcases.c   |   8 +
 .../selftests/arm64/signal/testcases/testcases.h   |   1 +
 23 files changed, 619 insertions(+), 1 deletion(-)
---
base-commit: 54be6c6c5ae8e0d93a6c4641cb7528eb0b6ba478
change-id: 20231003-arm64-2023-dpisa-2f3d25746474

Best regards,

Comments

Catalin Marinas March 7, 2024, 7:06 p.m. UTC | #1
On Wed, 06 Mar 2024 23:14:45 +0000, Mark Brown wrote:
> This series enables support for the data processing extensions in the
> newly released 2023 architecture, this is mainly support for 8 bit
> floating point formats.  Most of the extensions only introduce new
> instructions and therefore only require hwcaps but there is a new EL0
> visible control register FPMR used to control the 8 bit floating point
> formats, we need to manage traps for this and context switch it.
> 
> [...]

Applied to arm64 (for-next/dpisa), thanks!

[1/9] arm64/cpufeature: Hook new identification registers up to cpufeature
      https://git.kernel.org/arm64/c/cc9f69a3dad3
[2/9] arm64/fpsimd: Enable host kernel access to FPMR
      https://git.kernel.org/arm64/c/b6c0b424cb91
[3/9] arm64/fpsimd: Support FEAT_FPMR
      https://git.kernel.org/arm64/c/203f2b95a882
[4/9] arm64/signal: Add FPMR signal handling
      https://git.kernel.org/arm64/c/8c46def44409
[5/9] arm64/ptrace: Expose FPMR via ptrace
      https://git.kernel.org/arm64/c/4035c22ef7d4
[6/9] arm64/hwcap: Define hwcaps for 2023 DPISA features
      https://git.kernel.org/arm64/c/c1932cac7902
[7/9] kselftest/arm64: Handle FPMR context in generic signal frame parser
      https://git.kernel.org/arm64/c/f4dcccdda586
[8/9] kselftest/arm64: Add basic FPMR test
      https://git.kernel.org/arm64/c/7bcebadda045
[9/9] kselftest/arm64: Add 2023 DPISA hwcap test coverage
      https://git.kernel.org/arm64/c/44d10c27bd75