linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [GIT PULL] libcrypto/arm64: Move kernel mode FP/SIMD buffer to the stack
@ 2025-11-12  9:32 Ard Biesheuvel
  2025-11-12 20:53 ` Eric Biggers
  0 siblings, 1 reply; 2+ messages in thread
From: Ard Biesheuvel @ 2025-11-12  9:32 UTC (permalink / raw)
  To: linux-arm-kernel; +Cc: catalin.marinas, ebiggers, Ard Biesheuvel

From: Ard Biesheuvel <ardb@kernel.org>

Hi Eric,

(cc Catalin)

I have prepared a branch for libcrypto-next containing all the arm64 FP/SIMD
changes that are needed to move the kernel mode FP/SIMD buffers to the stack.

I have created two stable tags [a] and [b] in my tree at [0], containing the
changes as sent to and reviewed on the list, reordered to accommodate the task
of merging this into libcrypto-next in a bisectable manner.

  [a] scoped-ksimd-for-arm-arm64
  [b] arm64-fpsimd-on-stack-for-v6.19
  
On top of [a], two additional lib/crypto patches have been applied to update
code that has already been queued up in libcrypto-next, moving it to the new
scoped ksimd API as well. This is better than hiding the changes in a merge
commit. The merge still resulted in a conflict on the old versions of the files
that were moved, but this is resolved by simply deleting them.

Please pull. Or alternatively, if you prefer, recreate the following sequence
directly on top of libcrypto-next (and resolve the conflict)

      Merge tag 'ardb/scoped-ksimd-for-arm-arm64'
      lib/crypto: arm/blake2b: Move to scoped ksimd API
      lib/crypto: arm64: Move remaining algorithms to scoped ksimd API
      Merge tag 'arm64-fpsimd-on-stack-for-v6.19' into arm64-fpsimd-on-stack-for-libcrypto

The following changes since commit f101371e1972df3d897bf2326eda3c28aca2e58c:

  Merge remote-tracking branch 'ebiggers/libcrypto-aes-gcm' into libcrypto-next (2025-11-11 11:08:57 -0800)

are available in the Git repository at:

  [0] git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git arm64-fpsimd-on-stack-for-libcrypto

for you to fetch changes up to 82ef0a6ac77cc0eaca1b5c2fc3436b18cda6ef83:

  Merge tag 'arm64-fpsimd-on-stack-for-v6.19' into arm64-fpsimd-on-stack-for-libcrypto (2025-11-12 10:08:20 +0100)

----------------------------------------------------------------
Ard Biesheuvel (25):
      arm64/simd: Add scoped guard API for kernel mode SIMD
      ARM/simd: Add scoped guard API for kernel mode SIMD
[a]   lib/crypto: Switch ARM and arm64 to 'ksimd' scoped guard API
      lib/crc: Switch ARM and arm64 to 'ksimd' scoped 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
      crypto: aegis128-neon - Move to more abstract 'ksimd' guard API
      raid6: Move to more abstract 'ksimd' 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
      net/mlx5: Switch to more abstract scoped ksimd guard API on arm64
      arm64/fpu: Enforce task-context only for generic kernel mode FPU
[b]   arm64/fpsimd: Allocate kernel mode FP/SIMD buffers on the stack
      Merge tag 'ardb/scoped-ksimd-for-arm-arm64'
      lib/crypto: arm/blake2b: Move to scoped ksimd API
      lib/crypto: arm64: Move remaining algorithms to scoped ksimd API
      Merge tag 'arm64-fpsimd-on-stack-for-v6.19' into arm64-fpsimd-on-stack-for-libcrypto

 arch/arm/include/asm/simd.h                  |   7 +
 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/sm3-ce-glue.c              |  15 +-
 arch/arm64/crypto/sm3-neon-glue.c            |  16 +-
 arch/arm64/crypto/sm4-ce-ccm-glue.c          |  49 ++----
 arch/arm64/crypto/sm4-ce-cipher-glue.c       |  10 +-
 arch/arm64/crypto/sm4-ce-gcm-glue.c          |  62 +++-----
 arch/arm64/crypto/sm4-ce-glue.c              | 214 ++++++++++++---------------
 arch/arm64/crypto/sm4-neon-glue.c            |  25 +---
 arch/arm64/include/asm/fpu.h                 |  16 +-
 arch/arm64/include/asm/neon.h                |   4 +-
 arch/arm64/include/asm/processor.h           |   7 +-
 arch/arm64/include/asm/simd.h                |  10 ++
 arch/arm64/include/asm/xor.h                 |  22 ++-
 arch/arm64/kernel/fpsimd.c                   |  54 +++++--
 crypto/aegis128-neon.c                       |  33 ++---
 drivers/net/ethernet/mellanox/mlx5/core/wc.c |  19 +--
 lib/crc/arm/crc-t10dif.h                     |  19 +--
 lib/crc/arm/crc32.h                          |  11 +-
 lib/crc/arm64/crc-t10dif.h                   |  19 +--
 lib/crc/arm64/crc32.h                        |  16 +-
 lib/crypto/arm/blake2b.h                     |   5 +-
 lib/crypto/arm/chacha.h                      |  11 +-
 lib/crypto/arm/curve25519.h                  |   5 +-
 lib/crypto/arm/poly1305.h                    |   6 +-
 lib/crypto/arm/sha1.h                        |  13 +-
 lib/crypto/arm/sha256.h                      |  12 +-
 lib/crypto/arm/sha512.h                      |   5 +-
 lib/crypto/arm64/chacha.h                    |  11 +-
 lib/crypto/arm64/poly1305.h                  |   6 +-
 lib/crypto/arm64/polyval.h                   |  23 ++-
 lib/crypto/arm64/sha1.h                      |   7 +-
 lib/crypto/arm64/sha256.h                    |  19 +--
 lib/crypto/arm64/sha3.h                      |  13 +-
 lib/crypto/arm64/sha512.h                    |   8 +-
 lib/raid6/neon.c                             |  17 +--
 lib/raid6/recov_neon.c                       |  15 +-
 42 files changed, 616 insertions(+), 712 deletions(-)


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

* Re: [GIT PULL] libcrypto/arm64: Move kernel mode FP/SIMD buffer to the stack
  2025-11-12  9:32 [GIT PULL] libcrypto/arm64: Move kernel mode FP/SIMD buffer to the stack Ard Biesheuvel
@ 2025-11-12 20:53 ` Eric Biggers
  0 siblings, 0 replies; 2+ messages in thread
From: Eric Biggers @ 2025-11-12 20:53 UTC (permalink / raw)
  To: Ard Biesheuvel; +Cc: linux-arm-kernel, catalin.marinas, Ard Biesheuvel

On Wed, Nov 12, 2025 at 10:32:13AM +0100, Ard Biesheuvel wrote:
> From: Ard Biesheuvel <ardb@kernel.org>
> 
> Hi Eric,
> 
> (cc Catalin)
> 
> I have prepared a branch for libcrypto-next containing all the arm64 FP/SIMD
> changes that are needed to move the kernel mode FP/SIMD buffers to the stack.
> 
> I have created two stable tags [a] and [b] in my tree at [0], containing the
> changes as sent to and reviewed on the list, reordered to accommodate the task
> of merging this into libcrypto-next in a bisectable manner.
> 
>   [a] scoped-ksimd-for-arm-arm64
>   [b] arm64-fpsimd-on-stack-for-v6.19
>   
> On top of [a], two additional lib/crypto patches have been applied to update
> code that has already been queued up in libcrypto-next, moving it to the new
> scoped ksimd API as well. This is better than hiding the changes in a merge
> commit. The merge still resulted in a conflict on the old versions of the files
> that were moved, but this is resolved by simply deleting them.
> 
> Please pull. Or alternatively, if you prefer, recreate the following sequence
> directly on top of libcrypto-next (and resolve the conflict)
> 
>       Merge tag 'ardb/scoped-ksimd-for-arm-arm64'
>       lib/crypto: arm/blake2b: Move to scoped ksimd API
>       lib/crypto: arm64: Move remaining algorithms to scoped ksimd API
>       Merge tag 'arm64-fpsimd-on-stack-for-v6.19' into arm64-fpsimd-on-stack-for-libcrypto
> 
> The following changes since commit f101371e1972df3d897bf2326eda3c28aca2e58c:
> 
>   Merge remote-tracking branch 'ebiggers/libcrypto-aes-gcm' into libcrypto-next (2025-11-11 11:08:57 -0800)
> 
> are available in the Git repository at:
> 
>   [0] git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git arm64-fpsimd-on-stack-for-libcrypto
> 
> for you to fetch changes up to 82ef0a6ac77cc0eaca1b5c2fc3436b18cda6ef83:
> 
>   Merge tag 'arm64-fpsimd-on-stack-for-v6.19' into arm64-fpsimd-on-stack-for-libcrypto (2025-11-12 10:08:20 +0100)

I pulled these into a libcrypto-fpsimd-on-stack branch based on
2dbb6f4a25d38fcf (which is currently the last commit that I'm planning
for the "main" libcrypto pull request).

Then I updated the head of libcrypto-next to be the merge of
libcrypto-tests, libcrypto-aes-gcm, and libcrypto-fpsimd-on-stack.  I'll
send these as separate pull requests after the main libcrypto one.

In theory this should all work out.

Note: I changed "lib/crypto: arm64: Move remaining algorithms to scoped
ksimd API" to remove <asm/neon.h> from lib/crypto/arm64/polyval.h for
consistency with the other files, and to add braces around the for loop.

Thanks!

- Eric


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

end of thread, other threads:[~2025-11-12 20:54 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-12  9:32 [GIT PULL] libcrypto/arm64: Move kernel mode FP/SIMD buffer to the stack Ard Biesheuvel
2025-11-12 20:53 ` Eric Biggers

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