From: Eric Biggers <ebiggers@kernel.org>
To: linux-crypto@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org
Subject: [PATCH v3 00/19] crypto: scatterlist handling improvements
Date: Wed, 19 Feb 2025 10:23:22 -0800 [thread overview]
Message-ID: <20250219182341.43961-1-ebiggers@kernel.org> (raw)
This series can also be retrieved from:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux.git crypto-scatterlist-v3
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.
The unnecessary use of scatterlists still remains a huge pain point of
many of the crypto APIs, with the exception of lib/crypto/, shash, and
scomp which do it properly. But this series at least reduces (but not
eliminates) the impact on performance that the scatterlists have.
An an example, this patchset improves IPsec throughput by about 5%, as
measured using iperf3 bidirectional TCP between two c3d-standard-4 (AMD
Genoa) instances in Google Compute Engine using transport mode IPsec
with AES-256-GCM.
This series is organized as follows:
- Patch 1-5 improve scatter_walk, introducing easier-to-use functions
and optimizing performance in some cases.
- Patch 6-17 convert users to use the new functions.
- Patch 18 removes functions that are no longer needed.
- Patch 19 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.
Changed in v3:
- Dropped patches that were upstreamed.
- Added a Reviewed-by and Tested-by.
Changed in v2:
- Added comment to scatterwalk_done_dst().
- Added scatterwalk_get_sglist() and use it in net/tls/.
- Dropped the keywrap patch, as keywrap is being removed by
https://lore.kernel.org/r/20241227220802.92550-1-ebiggers@kernel.org
Eric Biggers (19):
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: scatterwalk - add scatterwalk_get_sglist()
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: 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/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/scatterwalk.c | 91 +++++++-----
crypto/skcipher.c | 65 +++------
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/s5p-sss.c | 38 ++---
drivers/crypto/stm32/stm32-cryp.c | 34 ++---
include/crypto/scatterwalk.h | 203 +++++++++++++++++++++-----
net/tls/tls_device_fallback.c | 31 +---
19 files changed, 363 insertions(+), 353 deletions(-)
base-commit: c346fef6fef53fa57ff323b701e7bad82290d0e7
--
2.48.1
next reply other threads:[~2025-02-19 18:24 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-19 18:23 Eric Biggers [this message]
2025-02-19 18:23 ` [PATCH v3 01/19] crypto: scatterwalk - move to next sg entry just in time Eric Biggers
2025-02-19 18:23 ` [PATCH v3 02/19] crypto: scatterwalk - add new functions for skipping data Eric Biggers
2025-02-19 18:23 ` [PATCH v3 03/19] crypto: scatterwalk - add new functions for iterating through data Eric Biggers
2025-03-02 6:28 ` Herbert Xu
2025-03-02 20:21 ` Eric Biggers
2025-03-03 2:35 ` Herbert Xu
2025-02-19 18:23 ` [PATCH v3 04/19] crypto: scatterwalk - add new functions for copying data Eric Biggers
2025-03-02 6:40 ` Herbert Xu
2025-03-02 21:37 ` Eric Biggers
2025-03-03 2:39 ` Herbert Xu
2025-02-19 18:23 ` [PATCH v3 05/19] crypto: scatterwalk - add scatterwalk_get_sglist() Eric Biggers
2025-02-19 18:23 ` [PATCH v3 06/19] crypto: skcipher - use scatterwalk_start_at_pos() Eric Biggers
2025-02-19 18:23 ` [PATCH v3 07/19] crypto: aegis - use the new scatterwalk functions Eric Biggers
2025-02-19 18:23 ` [PATCH v3 08/19] crypto: arm/ghash " Eric Biggers
2025-02-19 18:23 ` [PATCH v3 09/19] crypto: arm64 " Eric Biggers
2025-02-19 18:23 ` [PATCH v3 10/19] crypto: nx " Eric Biggers
2025-02-19 18:23 ` [PATCH v3 11/19] crypto: s390/aes-gcm " Eric Biggers
2025-02-19 18:23 ` [PATCH v3 12/19] crypto: s5p-sss " Eric Biggers
2025-02-19 18:23 ` [PATCH v3 13/19] crypto: stm32 " Eric Biggers
2025-02-19 18:23 ` [PATCH v3 14/19] crypto: x86/aes-gcm " Eric Biggers
2025-02-19 18:23 ` [PATCH v3 15/19] crypto: x86/aegis " Eric Biggers
2025-02-19 18:23 ` [PATCH v3 16/19] net/tls: " Eric Biggers
2025-02-19 18:23 ` [PATCH v3 17/19] crypto: skcipher - " Eric Biggers
2025-02-19 18:23 ` [PATCH v3 18/19] crypto: scatterwalk - remove obsolete functions Eric Biggers
2025-02-19 18:23 ` [PATCH v3 19/19] crypto: scatterwalk - don't split at page boundaries when !HIGHMEM Eric Biggers
2025-03-02 8:11 ` [PATCH v3 00/19] crypto: scatterlist handling improvements Herbert Xu
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=20250219182341.43961-1-ebiggers@kernel.org \
--to=ebiggers@kernel.org \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@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;
as well as URLs for NNTP newsgroup(s).