All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ard Biesheuvel <ardb+git@google.com>
To: linux-arm-kernel@lists.infradead.org
Cc: linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org,
	 herbert@gondor.apana.org.au, linux@armlinux.org.uk,
	 Ard Biesheuvel <ardb@kernel.org>, Marc Zyngier <maz@kernel.org>,
	Will Deacon <will@kernel.org>,
	 Mark Rutland <mark.rutland@arm.com>,
	Kees Cook <keescook@chromium.org>,
	 Catalin Marinas <catalin.marinas@arm.com>,
	Mark Brown <broonie@kernel.org>,
	 Eric Biggers <ebiggers@kernel.org>
Subject: [PATCH v2 00/20] arm64: Move kernel mode FPSIMD buffer to the stack
Date: Wed,  1 Oct 2025 23:02:02 +0200	[thread overview]
Message-ID: <20251001210201.838686-22-ardb+git@google.com> (raw)

From: Ard Biesheuvel <ardb@kernel.org>

Move the buffer for preserving/restoring the kernel mode FPSIMD state on a
context switch out of struct thread_struct, and onto the stack, so that
the memory cost is not imposed needlessly on all tasks in the system.

Changes since v1:
- Add a patch reverting the arm64 support for the generic
  kernel_fpu_begin()/end() API, which is problematic on arm64.

- Introduce a new 'ksimd' scoped guard that encapsulates the calls the
  kernel_neon_begin() and kernel_neon_end() at a higher level of
  abstraction. This makes it straight-forward to plumb in the stack
  buffer without complicating the callers.

- Move all kernel mode NEON users on arm64 (and some on ARM) over to the
  new API.

- Add Mark's ack to patches #6 - #8

Cc: Marc Zyngier <maz@kernel.org>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Mark Brown <broonie@kernel.org>
Cc: Eric Biggers <ebiggers@kernel.org>

Ard Biesheuvel (20):
  arm64: Revert support for generic kernel mode FPU
  arm64/simd: Add scoped guard API for kernel mode SIMD
  ARM/simd: Add scoped guard API for kernel mode SIMD
  crypto: aegis128-neon - Move to more abstract 'ksimd' guard API
  raid6: Move to more abstract 'ksimd' guard API
  crypto/arm64: aes-ce-ccm - Avoid pointless yield of the NEON unit
  crypto/arm64: sm4-ce-ccm - Avoid pointless yield of the NEON unit
  crypto/arm64: sm4-ce-gcm - Avoid pointless yield of the NEON unit
  lib/crc: Switch ARM and arm64 to 'ksimd' scoped guard API
  lib/crypto: Switch ARM and arm64 to 'ksimd' scoped guard API
  crypto/arm64: aes-ccm - Switch to 'ksimd' scoped guard API
  crypto/arm64: aes-blk - Switch to 'ksimd' scoped guard API
  crypto/arm64: aes-gcm - Switch to 'ksimd' scoped guard API
  crypto/arm64: nhpoly1305 - Switch to 'ksimd' scoped guard API
  crypto/arm64: polyval - Switch to 'ksimd' scoped guard API
  crypto/arm64: sha3 - Switch to 'ksimd' scoped guard API
  crypto/arm64: sm3 - Switch to 'ksimd' scoped guard API
  crypto/arm64: sm4 - Switch to 'ksimd' scoped guard API
  arm64/xorblocks:  Switch to 'ksimd' scoped guard API
  arm64/fpsimd: Allocate kernel mode FP/SIMD buffers on the stack

 arch/arm/include/asm/simd.h              |   7 +
 arch/arm64/Kconfig                       |   1 -
 arch/arm64/Makefile                      |   9 +-
 arch/arm64/crypto/aes-ce-ccm-glue.c      | 116 +++++------
 arch/arm64/crypto/aes-ce-glue.c          |  87 ++++----
 arch/arm64/crypto/aes-glue.c             | 139 ++++++-------
 arch/arm64/crypto/aes-neonbs-glue.c      | 150 +++++++-------
 arch/arm64/crypto/ghash-ce-glue.c        |  27 ++-
 arch/arm64/crypto/nhpoly1305-neon-glue.c |   5 +-
 arch/arm64/crypto/polyval-ce-glue.c      |  12 +-
 arch/arm64/crypto/sha3-ce-glue.c         |  10 +-
 arch/arm64/crypto/sm3-ce-glue.c          |  15 +-
 arch/arm64/crypto/sm3-neon-glue.c        |  16 +-
 arch/arm64/crypto/sm4-ce-ccm-glue.c      |  55 +++--
 arch/arm64/crypto/sm4-ce-cipher-glue.c   |  10 +-
 arch/arm64/crypto/sm4-ce-gcm-glue.c      |  65 +++---
 arch/arm64/crypto/sm4-ce-glue.c          | 214 +++++++++-----------
 arch/arm64/crypto/sm4-neon-glue.c        |  25 +--
 arch/arm64/include/asm/fpu.h             |  15 --
 arch/arm64/include/asm/neon.h            |   4 +-
 arch/arm64/include/asm/processor.h       |   2 +-
 arch/arm64/include/asm/simd.h            |  10 +
 arch/arm64/include/asm/xor.h             |  22 +-
 arch/arm64/kernel/fpsimd.c               |  34 +++-
 arch/arm64/lib/Makefile                  |   6 +-
 crypto/aegis128-neon.c                   |  33 ++-
 lib/crc/arm/crc-t10dif.h                 |  16 +-
 lib/crc/arm/crc32.h                      |  11 +-
 lib/crc/arm64/crc-t10dif.h               |  16 +-
 lib/crc/arm64/crc32.h                    |  16 +-
 lib/crypto/arm/chacha-glue.c             |   6 +-
 lib/crypto/arm/poly1305-glue.c           |   6 +-
 lib/crypto/arm/sha1.h                    |  13 +-
 lib/crypto/arm/sha256.h                  |  14 +-
 lib/crypto/arm/sha512.h                  |   6 +-
 lib/crypto/arm64/chacha-neon-glue.c      |  11 +-
 lib/crypto/arm64/poly1305-glue.c         |   6 +-
 lib/crypto/arm64/sha1.h                  |   7 +-
 lib/crypto/arm64/sha256.h                |  15 +-
 lib/crypto/arm64/sha512.h                |   8 +-
 lib/raid6/Makefile                       |  33 ++-
 lib/raid6/neon.c                         |  17 +-
 lib/raid6/recov_neon.c                   |  15 +-
 43 files changed, 597 insertions(+), 708 deletions(-)
 delete mode 100644 arch/arm64/include/asm/fpu.h

-- 
2.51.0.618.g983fd99d29-goog



             reply	other threads:[~2025-10-01 21:04 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-01 21:02 Ard Biesheuvel [this message]
2025-10-01 21:02 ` [PATCH v2 01/20] arm64: Revert support for generic kernel mode FPU Ard Biesheuvel
2025-10-02 16:23   ` Mark Brown
2025-10-08 12:44     ` Ard Biesheuvel
2025-10-01 21:02 ` [PATCH v2 02/20] arm64/simd: Add scoped guard API for kernel mode SIMD Ard Biesheuvel
2025-10-02 16:17   ` Kees Cook
2025-10-14 14:34   ` Mark Brown
2025-10-01 21:02 ` [PATCH v2 03/20] ARM/simd: " Ard Biesheuvel
2025-10-02 16:18   ` Kees Cook
2025-10-01 21:02 ` [PATCH v2 04/20] crypto: aegis128-neon - Move to more abstract 'ksimd' guard API Ard Biesheuvel
2025-10-02 16:20   ` Kees Cook
2025-10-02 16:48     ` Ard Biesheuvel
2025-10-01 21:02 ` [PATCH v2 05/20] raid6: " Ard Biesheuvel
2025-10-01 21:02 ` [PATCH v2 06/20] crypto/arm64: aes-ce-ccm - Avoid pointless yield of the NEON unit Ard Biesheuvel
2025-10-01 21:02 ` [PATCH v2 07/20] crypto/arm64: sm4-ce-ccm " Ard Biesheuvel
2025-10-01 21:02 ` [PATCH v2 08/20] crypto/arm64: sm4-ce-gcm " Ard Biesheuvel
2025-10-01 21:02 ` [PATCH v2 09/20] lib/crc: Switch ARM and arm64 to 'ksimd' scoped guard API Ard Biesheuvel
2025-10-01 21:02 ` [PATCH v2 10/20] lib/crypto: " Ard Biesheuvel
2025-10-01 21:02 ` [PATCH v2 11/20] crypto/arm64: aes-ccm - Switch " Ard Biesheuvel
2025-10-01 21:02 ` [PATCH v2 12/20] crypto/arm64: aes-blk " Ard Biesheuvel
2025-10-01 21:02 ` [PATCH v2 13/20] crypto/arm64: aes-gcm " Ard Biesheuvel
2025-10-01 21:02 ` [PATCH v2 14/20] crypto/arm64: nhpoly1305 " Ard Biesheuvel
2025-10-01 21:02 ` [PATCH v2 15/20] crypto/arm64: polyval " Ard Biesheuvel
2025-10-01 21:02 ` [PATCH v2 16/20] crypto/arm64: sha3 " Ard Biesheuvel
2025-10-01 21:02 ` [PATCH v2 17/20] crypto/arm64: sm3 " Ard Biesheuvel
2025-10-01 21:02 ` [PATCH v2 18/20] crypto/arm64: sm4 " Ard Biesheuvel
2025-10-01 21:02 ` [PATCH v2 19/20] arm64/xorblocks: " Ard Biesheuvel
2025-10-01 21:02 ` [PATCH v2 20/20] arm64/fpsimd: Allocate kernel mode FP/SIMD buffers on the stack Ard Biesheuvel
2025-10-02 16:22   ` Kees Cook
2025-10-02 16:51     ` Ard Biesheuvel
2025-10-03 20:18   ` Eric Biggers
2025-10-05 14:54     ` Ard Biesheuvel
2025-10-03 20:28 ` [PATCH v2 00/20] arm64: Move kernel mode FPSIMD buffer to " Eric Biggers

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251001210201.838686-22-ardb+git@google.com \
    --to=ardb+git@google.com \
    --cc=ardb@kernel.org \
    --cc=broonie@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=ebiggers@kernel.org \
    --cc=herbert@gondor.apana.org.au \
    --cc=keescook@chromium.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=mark.rutland@arm.com \
    --cc=maz@kernel.org \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.