linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 00/21] arm64: Support for 2023 DPISA extensions
@ 2023-12-05 16:47 Mark Brown
  2023-12-05 16:47 ` [PATCH v3 01/21] arm64/sysreg: Add definition for ID_AA64PFR2_EL1 Mark Brown
                   ` (20 more replies)
  0 siblings, 21 replies; 26+ messages in thread
From: Mark Brown @ 2023-12-05 16:47 UTC (permalink / raw)
  To: Catalin Marinas, Will Deacon, Marc Zyngier, Oliver Upton,
	James Morse, Suzuki K Poulose, Jonathan Corbet, Shuah Khan
  Cc: linux-arm-kernel, linux-kernel, kvmarm, linux-doc,
	linux-kselftest, Mark Brown

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.

The sharing of floating point save code between the host and guest
kernels slightly complicates the introduction of KVM support, we first
introduce host support with some placeholders for KVM then replace those
with the actual KVM support.

I've not added test coverage for ptrace, I've got a not quite finished
test program which exercises all the FP ptrace interfaces and their
interactions together, my plan is to cover it there rather than add
another tiny test program that duplicates the boilerplace for tracing a
target and doesn't actually run the traced program.

Signed-off-by: Mark Brown <broonie@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 (21):
      arm64/sysreg: Add definition for ID_AA64PFR2_EL1
      arm64/sysreg: Update ID_AA64ISAR2_EL1 defintion for DDI0601 2023-09
      arm64/sysreg: Add definition for ID_AA64ISAR3_EL1
      arm64/sysreg: Add definition for ID_AA64FPFR0_EL1
      arm64/sysreg: Update ID_AA64SMFR0_EL1 definition for DDI0601 2023-09
      arm64/sysreg: Update SCTLR_EL1 for DDI0601 2023-09
      arm64/sysreg: Update HCRX_EL2 definition for DDI0601 2023-09
      arm64/sysreg: Add definition for FPMR
      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
      KVM: arm64: Add newly allocated ID registers to register descriptions
      KVM: arm64: Support FEAT_FPMR for guests
      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
      KVM: arm64: selftests: Document feature registers added in 2023 extensions
      KVM: arm64: selftests: Teach get-reg-list about FPMR

 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                   |   4 +-
 arch/arm64/include/asm/kvm_host.h                  |   3 +
 arch/arm64/include/asm/processor.h                 |   2 +
 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/emulate-nested.c                    |   9 +
 arch/arm64/kvm/fpsimd.c                            |  19 +-
 arch/arm64/kvm/hyp/include/hyp/switch.h            |   7 +-
 arch/arm64/kvm/sys_regs.c                          |  17 +-
 arch/arm64/tools/cpucaps                           |   1 +
 arch/arm64/tools/sysreg                            | 153 ++++++++++++++-
 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 +
 tools/testing/selftests/kvm/aarch64/get-reg-list.c |  11 +-
 28 files changed, 819 insertions(+), 18 deletions(-)
---
base-commit: 2cc14f52aeb78ce3f29677c2de1f06c0e91471ab
change-id: 20231003-arm64-2023-dpisa-2f3d25746474

Best regards,
-- 
Mark Brown <broonie@kernel.org>


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

end of thread, other threads:[~2023-12-07 15:48 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-05 16:47 [PATCH v3 00/21] arm64: Support for 2023 DPISA extensions Mark Brown
2023-12-05 16:47 ` [PATCH v3 01/21] arm64/sysreg: Add definition for ID_AA64PFR2_EL1 Mark Brown
2023-12-05 16:48 ` [PATCH v3 02/21] arm64/sysreg: Update ID_AA64ISAR2_EL1 defintion for DDI0601 2023-09 Mark Brown
2023-12-05 16:48 ` [PATCH v3 03/21] arm64/sysreg: Add definition for ID_AA64ISAR3_EL1 Mark Brown
2023-12-05 16:48 ` [PATCH v3 04/21] arm64/sysreg: Add definition for ID_AA64FPFR0_EL1 Mark Brown
2023-12-05 16:48 ` [PATCH v3 05/21] arm64/sysreg: Update ID_AA64SMFR0_EL1 definition for DDI0601 2023-09 Mark Brown
2023-12-05 16:48 ` [PATCH v3 06/21] arm64/sysreg: Update SCTLR_EL1 " Mark Brown
2023-12-05 16:48 ` [PATCH v3 07/21] arm64/sysreg: Update HCRX_EL2 definition " Mark Brown
2023-12-05 16:48 ` [PATCH v3 08/21] arm64/sysreg: Add definition for FPMR Mark Brown
2023-12-05 16:48 ` [PATCH v3 09/21] arm64/cpufeature: Hook new identification registers up to cpufeature Mark Brown
2023-12-05 16:48 ` [PATCH v3 10/21] arm64/fpsimd: Enable host kernel access to FPMR Mark Brown
2023-12-05 16:48 ` [PATCH v3 11/21] arm64/fpsimd: Support FEAT_FPMR Mark Brown
2023-12-05 16:48 ` [PATCH v3 12/21] arm64/signal: Add FPMR signal handling Mark Brown
2023-12-05 16:48 ` [PATCH v3 13/21] arm64/ptrace: Expose FPMR via ptrace Mark Brown
2023-12-05 16:48 ` [PATCH v3 14/21] KVM: arm64: Add newly allocated ID registers to register descriptions Mark Brown
2023-12-05 16:48 ` [PATCH v3 15/21] KVM: arm64: Support FEAT_FPMR for guests Mark Brown
2023-12-07  8:39   ` Marc Zyngier
2023-12-07 12:30     ` Mark Brown
2023-12-07 14:06       ` Marc Zyngier
2023-12-07 15:47         ` Mark Brown
2023-12-05 16:48 ` [PATCH v3 16/21] arm64/hwcap: Define hwcaps for 2023 DPISA features Mark Brown
2023-12-05 16:48 ` [PATCH v3 17/21] kselftest/arm64: Handle FPMR context in generic signal frame parser Mark Brown
2023-12-05 16:48 ` [PATCH v3 18/21] kselftest/arm64: Add basic FPMR test Mark Brown
2023-12-05 16:48 ` [PATCH v3 19/21] kselftest/arm64: Add 2023 DPISA hwcap test coverage Mark Brown
2023-12-05 16:48 ` [PATCH v3 20/21] KVM: arm64: selftests: Document feature registers added in 2023 extensions Mark Brown
2023-12-05 16:48 ` [PATCH v3 21/21] KVM: arm64: selftests: Teach get-reg-list about FPMR Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).