All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 00/21] arm64/sme: Support SME 2 and SME 2.1
@ 2022-11-11 21:50 ` Mark Brown
  0 siblings, 0 replies; 56+ messages in thread
From: Mark Brown @ 2022-11-11 21:50 UTC (permalink / raw)
  To: Catalin Marinas, Will Deacon, Shuah Khan, Shuah Khan
  Cc: Alan Hayward, Luis Machado, Szabolcs Nagy, linux-arm-kernel,
	linux-kselftest, Mark Brown

Arm have recently released versions 2 and 2.1 of the SME extension.
Among the features introduced by SME 2 is some new architectural state,
the ZT0 register. This series adds support for this and all the other
features of the new SME versions.

Since the architecture has been designed with the possibility of adding
further ZTn registers in mind the interfaces added for ZT0 are done with
this possibility in mind. As ZT0 is a simple fixed size register these
interfaces are all fairly simple, the main complication is that ZT0 is
only accessible when PSTATE.ZA is enabled. The memory allocation that we
already do for PSTATE.ZA is extended to include space for ZT0.

Due to textual collisions especially around the addition of hwcaps this
is based on the recently merged series "arm64: Support for 2022 data
processing instructions" but there is no meaningful interaction.

v3:
 - Rebase onto merged series for the 2022 architectur extensions.
 - Clarifications and typo fixes in the ABI documentation.
v2:
 - Add missing initialisation of user->zt in signal context parsing.
 - Change the magic for ZT signal frames to 0x5a544e01 (ZTN0).

Mark Brown (21):
  arm64/sme: Rename za_state to sme_state
  arm64: Document boot requirements for SME 2
  arm64/sysreg: Update system registers for SME 2 and 2.1
  arm64/sme: Document SME 2 and SME 2.1 ABI
  arm64/esr: Document ISS for ZT0 being disabled
  arm64/sme: Manually encode ZT0 load and store instructions
  arm64/sme: Enable host kernel to access ZT0
  arm64/sme: Add basic enumeration for SME2
  arm64/sme: Provide storage for ZT0
  arm64/sme: Implement context switching for ZT0
  arm64/sme: Implement signal handling for ZT
  arm64/sme: Implement ZT0 ptrace support
  arm64/sme: Add hwcaps for SME 2 and 2.1 features
  kselftest/arm64: Add a stress test program for ZT0
  kselftest/arm64: Cover ZT in the FP stress test
  kselftest/arm64: Enumerate SME2 in the signal test utility code
  kselftest/arm64: Teach the generic signal context validation about ZT
  kselftest/arm64: Add test coverage for ZT register signal frames
  kselftest/arm64: Add SME2 coverage to syscall-abi
  kselftest/arm64: Add coverage of the ZT ptrace regset
  kselftest/arm64: Add coverage of SME 2 and 2.1 hwcaps

 Documentation/arm64/booting.rst               |  10 +
 Documentation/arm64/elf_hwcaps.rst            |  18 +
 Documentation/arm64/sme.rst                   |  52 ++-
 arch/arm64/include/asm/cpufeature.h           |   6 +
 arch/arm64/include/asm/esr.h                  |   1 +
 arch/arm64/include/asm/fpsimd.h               |  28 +-
 arch/arm64/include/asm/fpsimdmacros.h         |  22 ++
 arch/arm64/include/asm/hwcap.h                |   6 +
 arch/arm64/include/asm/processor.h            |   2 +-
 arch/arm64/include/uapi/asm/hwcap.h           |   6 +
 arch/arm64/include/uapi/asm/sigcontext.h      |  19 +
 arch/arm64/kernel/cpufeature.c                |  27 ++
 arch/arm64/kernel/cpuinfo.c                   |   6 +
 arch/arm64/kernel/entry-fpsimd.S              |  30 +-
 arch/arm64/kernel/fpsimd.c                    |  53 ++-
 arch/arm64/kernel/hyp-stub.S                  |   6 +
 arch/arm64/kernel/idreg-override.c            |   1 +
 arch/arm64/kernel/process.c                   |  21 +-
 arch/arm64/kernel/ptrace.c                    |  60 ++-
 arch/arm64/kernel/signal.c                    | 113 +++++-
 arch/arm64/tools/cpucaps                      |   1 +
 arch/arm64/tools/sysreg                       |  26 +-
 include/uapi/linux/elf.h                      |   1 +
 tools/testing/selftests/arm64/abi/hwcap.c     | 115 ++++++
 .../selftests/arm64/abi/syscall-abi-asm.S     |  43 ++-
 .../testing/selftests/arm64/abi/syscall-abi.c |  40 +-
 tools/testing/selftests/arm64/fp/.gitignore   |   2 +
 tools/testing/selftests/arm64/fp/Makefile     |   5 +
 tools/testing/selftests/arm64/fp/fp-stress.c  |  29 +-
 tools/testing/selftests/arm64/fp/sme-inst.h   |  20 +
 tools/testing/selftests/arm64/fp/zt-ptrace.c  | 365 ++++++++++++++++++
 tools/testing/selftests/arm64/fp/zt-test.S    | 324 ++++++++++++++++
 .../testing/selftests/arm64/signal/.gitignore |   1 +
 .../selftests/arm64/signal/test_signals.h     |   2 +
 .../arm64/signal/test_signals_utils.c         |   3 +
 .../arm64/signal/testcases/testcases.c        |  36 ++
 .../arm64/signal/testcases/testcases.h        |   1 +
 .../arm64/signal/testcases/zt_no_regs.c       |  51 +++
 .../arm64/signal/testcases/zt_regs.c          |  85 ++++
 39 files changed, 1564 insertions(+), 73 deletions(-)
 create mode 100644 tools/testing/selftests/arm64/fp/zt-ptrace.c
 create mode 100644 tools/testing/selftests/arm64/fp/zt-test.S
 create mode 100644 tools/testing/selftests/arm64/signal/testcases/zt_no_regs.c
 create mode 100644 tools/testing/selftests/arm64/signal/testcases/zt_regs.c


base-commit: c5195b027d29bbaae0c9668704ab996773788d23
-- 
2.30.2


^ permalink raw reply	[flat|nested] 56+ messages in thread

end of thread, other threads:[~2022-12-19 16:38 UTC | newest]

Thread overview: 56+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-11 21:50 [PATCH v3 00/21] arm64/sme: Support SME 2 and SME 2.1 Mark Brown
2022-11-11 21:50 ` Mark Brown
2022-11-11 21:50 ` [PATCH v3 01/21] arm64/sme: Rename za_state to sme_state Mark Brown
2022-11-11 21:50   ` Mark Brown
2022-11-11 21:50 ` [PATCH v3 02/21] arm64: Document boot requirements for SME 2 Mark Brown
2022-11-11 21:50   ` Mark Brown
2022-11-11 21:50 ` [PATCH v3 03/21] arm64/sysreg: Update system registers for SME 2 and 2.1 Mark Brown
2022-11-11 21:50   ` Mark Brown
2022-11-11 21:50 ` [PATCH v3 04/21] arm64/sme: Document SME 2 and SME 2.1 ABI Mark Brown
2022-11-11 21:50   ` Mark Brown
2022-11-11 21:50 ` [PATCH v3 05/21] arm64/esr: Document ISS for ZT0 being disabled Mark Brown
2022-11-11 21:50   ` Mark Brown
2022-11-11 21:50 ` [PATCH v3 06/21] arm64/sme: Manually encode ZT0 load and store instructions Mark Brown
2022-11-11 21:50   ` Mark Brown
2022-12-17  9:40   ` Zenghui Yu
2022-12-17  9:40     ` Zenghui Yu
2022-12-19 15:04     ` Mark Brown
2022-12-19 15:04       ` Mark Brown
2022-11-11 21:50 ` [PATCH v3 07/21] arm64/sme: Enable host kernel to access ZT0 Mark Brown
2022-11-11 21:50   ` Mark Brown
2022-11-11 21:50 ` [PATCH v3 08/21] arm64/sme: Add basic enumeration for SME2 Mark Brown
2022-11-11 21:50   ` Mark Brown
2022-11-11 21:50 ` [PATCH v3 09/21] arm64/sme: Provide storage for ZT0 Mark Brown
2022-11-11 21:50   ` Mark Brown
2022-12-17  9:28   ` Zenghui Yu
2022-12-17  9:28     ` Zenghui Yu
2022-11-11 21:50 ` [PATCH v3 10/21] arm64/sme: Implement context switching " Mark Brown
2022-11-11 21:50   ` Mark Brown
2022-11-11 21:50 ` [PATCH v3 11/21] arm64/sme: Implement signal handling for ZT Mark Brown
2022-11-11 21:50   ` Mark Brown
2022-11-11 21:50 ` [PATCH v3 12/21] arm64/sme: Implement ZT0 ptrace support Mark Brown
2022-11-11 21:50   ` Mark Brown
2022-12-17  9:23   ` Zenghui Yu
2022-12-17  9:23     ` Zenghui Yu
2022-11-11 21:50 ` [PATCH v3 13/21] arm64/sme: Add hwcaps for SME 2 and 2.1 features Mark Brown
2022-11-11 21:50   ` Mark Brown
2022-12-19  8:22   ` Zenghui Yu
2022-12-19  8:22     ` Zenghui Yu
2022-11-11 21:50 ` [PATCH v3 14/21] kselftest/arm64: Add a stress test program for ZT0 Mark Brown
2022-11-11 21:50   ` Mark Brown
2022-12-17  9:15   ` Zenghui Yu
2022-12-17  9:15     ` Zenghui Yu
2022-11-11 21:50 ` [PATCH v3 15/21] kselftest/arm64: Cover ZT in the FP stress test Mark Brown
2022-11-11 21:50   ` Mark Brown
2022-11-11 21:50 ` [PATCH v3 16/21] kselftest/arm64: Enumerate SME2 in the signal test utility code Mark Brown
2022-11-11 21:50   ` Mark Brown
2022-11-11 21:50 ` [PATCH v3 17/21] kselftest/arm64: Teach the generic signal context validation about ZT Mark Brown
2022-11-11 21:50   ` Mark Brown
2022-11-11 21:50 ` [PATCH v3 18/21] kselftest/arm64: Add test coverage for ZT register signal frames Mark Brown
2022-11-11 21:50   ` Mark Brown
2022-11-11 21:50 ` [PATCH v3 19/21] kselftest/arm64: Add SME2 coverage to syscall-abi Mark Brown
2022-11-11 21:50   ` Mark Brown
2022-11-11 21:50 ` [PATCH v3 20/21] kselftest/arm64: Add coverage of the ZT ptrace regset Mark Brown
2022-11-11 21:50   ` Mark Brown
2022-11-11 21:50 ` [PATCH v3 21/21] kselftest/arm64: Add coverage of SME 2 and 2.1 hwcaps Mark Brown
2022-11-11 21:50   ` Mark Brown

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.