public inbox for linux-crypto@vger.kernel.org
 help / color / mirror / Atom feed
From: Eric Biggers <ebiggers@kernel.org>
To: linux-crypto@vger.kernel.org
Subject: [PATCH 00/29] crypto: scatterlist handling improvements
Date: Sat, 21 Dec 2024 01:10:27 -0800	[thread overview]
Message-ID: <20241221091056.282098-1-ebiggers@kernel.org> (raw)

This series cleans up and optimizes the code that translates between
scatterlists (the input to the API) and virtual addresses (what software
implementations operate on) for skcipher and aead algorithms.

This takes the form of cleanups and optimizations to the skcipher_walk
functions and a rework of the underlying scatter_walk functions.

This series is organized as follows:

- Patch 1-8 are cleanups and optimizations for skcipher_walk.
- Patch 9-10 are cleanups for drivers that were unnecessarily using
  scatter_walk when simpler approaches existed.
- Patch 11-14 improve scatter_walk, introducing easier-to-use functions
  and optimizing performance in some cases.
- Patch 15-27 convert users to use the new functions.
- Patch 28 removes functions that are no longer needed.
- Patch 29 optimizes the walker on !HIGHMEM platforms to start returning
  data segments that can cross a page boundary.  This can significantly
  improve performance in cases where messages can cross pages, such as
  IPsec.  Previously there was a large overhead caused by packets being
  unnecessarily divided into multiple parts by the walker, including
  hitting skcipher_next_slow() which uses a single-block bounce buffer.

Eric Biggers (29):
  crypto: skcipher - document skcipher_walk_done() and rename some vars
  crypto: skcipher - remove unnecessary page alignment of bounce buffer
  crypto: skcipher - remove redundant clamping to page size
  crypto: skcipher - remove redundant check for SKCIPHER_WALK_SLOW
  crypto: skcipher - fold skcipher_walk_skcipher() into
    skcipher_walk_virt()
  crypto: skcipher - clean up initialization of skcipher_walk::flags
  crypto: skcipher - optimize initializing skcipher_walk fields
  crypto: skcipher - call cond_resched() directly
  crypto: omap - switch from scatter_walk to plain offset
  crypto: powerpc/p10-aes-gcm - simplify handling of linear associated
    data
  crypto: scatterwalk - move to next sg entry just in time
  crypto: scatterwalk - add new functions for skipping data
  crypto: scatterwalk - add new functions for iterating through data
  crypto: scatterwalk - add new functions for copying data
  crypto: skcipher - use scatterwalk_start_at_pos()
  crypto: aegis - use the new scatterwalk functions
  crypto: arm/ghash - use the new scatterwalk functions
  crypto: arm64 - use the new scatterwalk functions
  crypto: keywrap - use the new scatterwalk functions
  crypto: nx - use the new scatterwalk functions
  crypto: s390/aes-gcm - use the new scatterwalk functions
  crypto: s5p-sss - use the new scatterwalk functions
  crypto: stm32 - use the new scatterwalk functions
  crypto: x86/aes-gcm - use the new scatterwalk functions
  crypto: x86/aegis - use the new scatterwalk functions
  net/tls: use the new scatterwalk functions
  crypto: skcipher - use the new scatterwalk functions
  crypto: scatterwalk - remove obsolete functions
  crypto: scatterwalk - don't split at page boundaries when !HIGHMEM

 arch/arm/crypto/ghash-ce-glue.c        |  15 +-
 arch/arm64/crypto/aes-ce-ccm-glue.c    |  17 +-
 arch/arm64/crypto/ghash-ce-glue.c      |  16 +-
 arch/arm64/crypto/sm4-ce-ccm-glue.c    |  27 ++-
 arch/arm64/crypto/sm4-ce-gcm-glue.c    |  31 ++-
 arch/powerpc/crypto/aes-gcm-p10-glue.c |   8 +-
 arch/s390/crypto/aes_s390.c            |  33 ++--
 arch/x86/crypto/aegis128-aesni-glue.c  |  10 +-
 arch/x86/crypto/aesni-intel_glue.c     |  28 +--
 crypto/aegis128-core.c                 |  10 +-
 crypto/keywrap.c                       |  48 +----
 crypto/scatterwalk.c                   |  91 +++++----
 crypto/skcipher.c                      | 253 ++++++++++---------------
 drivers/crypto/nx/nx-aes-ccm.c         |  16 +-
 drivers/crypto/nx/nx-aes-gcm.c         |  17 +-
 drivers/crypto/nx/nx.c                 |  31 +--
 drivers/crypto/nx/nx.h                 |   3 -
 drivers/crypto/omap-aes.c              |  34 ++--
 drivers/crypto/omap-aes.h              |   6 +-
 drivers/crypto/omap-des.c              |  40 ++--
 drivers/crypto/s5p-sss.c               |  38 ++--
 drivers/crypto/stm32/stm32-cryp.c      |  34 ++--
 include/crypto/internal/skcipher.h     |   2 +-
 include/crypto/scatterwalk.h           | 181 ++++++++++++++----
 net/tls/tls_device_fallback.c          |  16 +-
 25 files changed, 454 insertions(+), 551 deletions(-)


base-commit: f916e44487f56df4827069ff3a2070c0746dc511
-- 
2.47.1


             reply	other threads:[~2024-12-21  9:11 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-21  9:10 Eric Biggers [this message]
2024-12-21  9:10 ` [PATCH 01/29] crypto: skcipher - document skcipher_walk_done() and rename some vars Eric Biggers
2024-12-21  9:10 ` [PATCH 02/29] crypto: skcipher - remove unnecessary page alignment of bounce buffer Eric Biggers
2024-12-21  9:10 ` [PATCH 03/29] crypto: skcipher - remove redundant clamping to page size Eric Biggers
2024-12-21  9:10 ` [PATCH 04/29] crypto: skcipher - remove redundant check for SKCIPHER_WALK_SLOW Eric Biggers
2024-12-21  9:10 ` [PATCH 05/29] crypto: skcipher - fold skcipher_walk_skcipher() into skcipher_walk_virt() Eric Biggers
2024-12-21  9:10 ` [PATCH 06/29] crypto: skcipher - clean up initialization of skcipher_walk::flags Eric Biggers
2024-12-21  9:10 ` [PATCH 07/29] crypto: skcipher - optimize initializing skcipher_walk fields Eric Biggers
2024-12-21 11:16   ` Herbert Xu
2024-12-29 22:10     ` Eric Biggers
2025-01-02  1:03       ` Herbert Xu
2024-12-21  9:10 ` [PATCH 08/29] crypto: skcipher - call cond_resched() directly Eric Biggers
2024-12-21  9:10 ` [PATCH 09/29] crypto: omap - switch from scatter_walk to plain offset Eric Biggers
2024-12-21  9:10 ` [PATCH 10/29] crypto: powerpc/p10-aes-gcm - simplify handling of linear associated data Eric Biggers
2024-12-21  9:10 ` [PATCH 11/29] crypto: scatterwalk - move to next sg entry just in time Eric Biggers
2024-12-21  9:10 ` [PATCH 12/29] crypto: scatterwalk - add new functions for skipping data Eric Biggers
2024-12-21  9:10 ` [PATCH 13/29] crypto: scatterwalk - add new functions for iterating through data Eric Biggers
2024-12-21 11:27   ` Herbert Xu
2024-12-23 19:53     ` Eric Biggers
2024-12-21  9:10 ` [PATCH 14/29] crypto: scatterwalk - add new functions for copying data Eric Biggers
2024-12-21  9:10 ` [PATCH 15/29] crypto: skcipher - use scatterwalk_start_at_pos() Eric Biggers
2024-12-21  9:10 ` [PATCH 16/29] crypto: aegis - use the new scatterwalk functions Eric Biggers
2024-12-21  9:10 ` [PATCH 17/29] crypto: arm/ghash " Eric Biggers
2024-12-21  9:10 ` [PATCH 18/29] crypto: arm64 " Eric Biggers
2024-12-21  9:10 ` [PATCH 19/29] crypto: keywrap " Eric Biggers
2024-12-21  9:10 ` [PATCH 20/29] crypto: nx " Eric Biggers
2024-12-21  9:10 ` [PATCH 21/29] crypto: s390/aes-gcm " Eric Biggers
2024-12-21  9:10 ` [PATCH 22/29] crypto: s5p-sss " Eric Biggers
2024-12-21  9:10 ` [PATCH 23/29] crypto: stm32 " Eric Biggers
2024-12-21  9:10 ` [PATCH 24/29] crypto: x86/aes-gcm " Eric Biggers
2024-12-21  9:10 ` [PATCH 25/29] crypto: x86/aegis " Eric Biggers
2024-12-21  9:10 ` [PATCH 26/29] net/tls: " Eric Biggers
2024-12-23 15:48   ` Jakub Kicinski
2024-12-23 19:42     ` Eric Biggers
2024-12-23 20:44       ` Jakub Kicinski
2024-12-29 23:58         ` Eric Biggers
2024-12-21  9:10 ` [PATCH 27/29] crypto: skcipher - " Eric Biggers
2024-12-21  9:10 ` [PATCH 28/29] crypto: scatterwalk - remove obsolete functions Eric Biggers
2024-12-21  9:10 ` [PATCH 29/29] crypto: scatterwalk - don't split at page boundaries when !HIGHMEM 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=20241221091056.282098-1-ebiggers@kernel.org \
    --to=ebiggers@kernel.org \
    --cc=linux-crypto@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox