linux-arch.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH 00/12] Unified cross-architecture kernel-mode FPU API
@ 2023-12-08  5:54 Samuel Holland
  2023-12-08  5:54 ` [RFC PATCH 01/12] arch: Add ARCH_HAS_KERNEL_FPU_SUPPORT Samuel Holland
                   ` (11 more replies)
  0 siblings, 12 replies; 33+ messages in thread
From: Samuel Holland @ 2023-12-08  5:54 UTC (permalink / raw)
  To: linux-arm-kernel, loongarch, linuxppc-dev, x86, linux-riscv,
	Christoph Hellwig
  Cc: linux-kernel, amd-gfx, linux-arch, Samuel Holland

This series supersedes my earier RISC-V specific series[1].

This series unifies the kernel-mode FPU API across several architectures
by wrapping the existing functions (where needed) in consistently-named
functions placed in a consistent header location, with mostly the same
semantics: they can be called from preemptible or non-preemptible task
context, and are not assumed to be reentrant. Architectures are also
expected to provide CFLAGS adjustments for compiling FPU-dependent code.
For the moment, SIMD/vector units are out of scope for this common API.

This allows us to remove the ifdeffery and duplicated Makefile logic at
each FPU user. It then implements the common API on RISC-V, and converts
a couple of users to the new API: the AMDGPU DRM driver, and the FPU
self test.

The underlying goal of this series is to allow using newer AMD GPUs
(e.g. Navi) on RISC-V boards such as SiFive's HiFive Unmatched. Those
GPUs need CONFIG_DRM_AMD_DC_FP to initialize, which requires kernel-mode
FPU support.

[1]: https://lore.kernel.org/linux-riscv/20231122030621.3759313-1-samuel.holland@sifive.com/


Samuel Holland (12):
  arch: Add ARCH_HAS_KERNEL_FPU_SUPPORT
  ARM: Implement ARCH_HAS_KERNEL_FPU_SUPPORT
  ARM: crypto: Use CC_FLAGS_FPU for NEON CFLAGS
  arm64: Implement ARCH_HAS_KERNEL_FPU_SUPPORT
  lib/raid6: Use CC_FLAGS_FPU for NEON CFLAGS
  LoongArch: Implement ARCH_HAS_KERNEL_FPU_SUPPORT
  powerpc: Implement ARCH_HAS_KERNEL_FPU_SUPPORT
  x86: Implement ARCH_HAS_KERNEL_FPU_SUPPORT
  riscv: Add support for kernel-mode FPU
  drm/amd/display: Use ARCH_HAS_KERNEL_FPU_SUPPORT
  selftests/fpu: Move FP code to a separate translation unit
  selftests/fpu: Allow building on other architectures

 Makefile                                      |  4 ++
 arch/Kconfig                                  |  9 +++++
 arch/arm/Kconfig                              |  1 +
 arch/arm/Makefile                             |  7 ++++
 arch/arm/include/asm/fpu.h                    | 17 +++++++++
 arch/arm/lib/Makefile                         |  3 +-
 arch/arm64/Kconfig                            |  1 +
 arch/arm64/Makefile                           |  9 ++++-
 arch/arm64/include/asm/fpu.h                  | 17 +++++++++
 arch/loongarch/Kconfig                        |  1 +
 arch/loongarch/Makefile                       |  5 ++-
 arch/loongarch/include/asm/fpu.h              |  1 +
 arch/powerpc/Kconfig                          |  1 +
 arch/powerpc/Makefile                         |  5 ++-
 arch/powerpc/include/asm/fpu.h                | 28 ++++++++++++++
 arch/riscv/Kconfig                            |  1 +
 arch/riscv/Makefile                           |  3 ++
 arch/riscv/include/asm/fpu.h                  | 26 +++++++++++++
 arch/riscv/kernel/Makefile                    |  1 +
 arch/riscv/kernel/kernel_mode_fpu.c           | 28 ++++++++++++++
 arch/x86/Kconfig                              |  1 +
 arch/x86/Makefile                             | 20 ++++++++++
 arch/x86/include/asm/fpu.h                    | 13 +++++++
 drivers/gpu/drm/amd/display/Kconfig           |  2 +-
 .../gpu/drm/amd/display/amdgpu_dm/dc_fpu.c    | 33 +----------------
 drivers/gpu/drm/amd/display/dc/dml/Makefile   | 36 +-----------------
 drivers/gpu/drm/amd/display/dc/dml2/Makefile  | 36 +-----------------
 lib/Kconfig.debug                             |  2 +-
 lib/Makefile                                  | 26 ++-----------
 lib/raid6/Makefile                            | 31 ++++------------
 lib/{test_fpu.c => test_fpu_glue.c}           | 37 +++----------------
 lib/test_fpu_impl.c                           | 35 ++++++++++++++++++
 32 files changed, 255 insertions(+), 185 deletions(-)
 create mode 100644 arch/arm/include/asm/fpu.h
 create mode 100644 arch/arm64/include/asm/fpu.h
 create mode 100644 arch/powerpc/include/asm/fpu.h
 create mode 100644 arch/riscv/include/asm/fpu.h
 create mode 100644 arch/riscv/kernel/kernel_mode_fpu.c
 create mode 100644 arch/x86/include/asm/fpu.h
 rename lib/{test_fpu.c => test_fpu_glue.c} (71%)
 create mode 100644 lib/test_fpu_impl.c

-- 
2.42.0


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

end of thread, other threads:[~2023-12-14  4:45 UTC | newest]

Thread overview: 33+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-08  5:54 [RFC PATCH 00/12] Unified cross-architecture kernel-mode FPU API Samuel Holland
2023-12-08  5:54 ` [RFC PATCH 01/12] arch: Add ARCH_HAS_KERNEL_FPU_SUPPORT Samuel Holland
2023-12-11 16:02   ` Christoph Hellwig
2023-12-08  5:54 ` [RFC PATCH 02/12] ARM: Implement ARCH_HAS_KERNEL_FPU_SUPPORT Samuel Holland
2023-12-11 16:04   ` Christoph Hellwig
2023-12-08  5:54 ` [RFC PATCH 03/12] ARM: crypto: Use CC_FLAGS_FPU for NEON CFLAGS Samuel Holland
2023-12-11 16:04   ` Christoph Hellwig
2023-12-08  5:54 ` [RFC PATCH 04/12] arm64: Implement ARCH_HAS_KERNEL_FPU_SUPPORT Samuel Holland
2023-12-11 16:05   ` Christoph Hellwig
2023-12-13 16:19   ` Will Deacon
2023-12-08  5:54 ` [RFC PATCH 05/12] lib/raid6: Use CC_FLAGS_FPU for NEON CFLAGS Samuel Holland
2023-12-11 16:07   ` Christoph Hellwig
2023-12-11 16:12     ` Samuel Holland
2023-12-12  7:11       ` Christoph Hellwig
2023-12-08  5:54 ` [RFC PATCH 06/12] LoongArch: Implement ARCH_HAS_KERNEL_FPU_SUPPORT Samuel Holland
2023-12-11 16:07   ` Christoph Hellwig
2023-12-13 16:13   ` WANG Xuerui
2023-12-08  5:54 ` [RFC PATCH 07/12] powerpc: " Samuel Holland
2023-12-11 16:08   ` Christoph Hellwig
2023-12-08  5:54 ` [RFC PATCH 08/12] x86: " Samuel Holland
2023-12-11 16:08   ` Christoph Hellwig
2023-12-08  5:54 ` [RFC PATCH 09/12] riscv: Add support for kernel-mode FPU Samuel Holland
2023-12-11 16:11   ` Christoph Hellwig
2023-12-11 16:16     ` Samuel Holland
2023-12-08  5:54 ` [RFC PATCH 10/12] drm/amd/display: Use ARCH_HAS_KERNEL_FPU_SUPPORT Samuel Holland
2023-12-11 12:23   ` Michael Ellerman
2023-12-14  1:03     ` Samuel Holland
2023-12-14  3:13       ` Timothy Pearson
2023-12-14  4:45       ` Michael Ellerman
2023-12-08  5:54 ` [RFC PATCH 11/12] selftests/fpu: Move FP code to a separate translation unit Samuel Holland
2023-12-11 16:18   ` Christoph Hellwig
2023-12-08  5:54 ` [RFC PATCH 12/12] selftests/fpu: Allow building on other architectures Samuel Holland
2023-12-11 16:19   ` Christoph Hellwig

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).