Re: [RFC PATCH 0/4] crypto: add CRYPTO_TFM_REQ_DMA flag

From: Ard Biesheuvel
Date: Wed Nov 25 2020 - 16:17:27 EST


On Wed, 25 Nov 2020 at 22:14, Iuliana Prodan (OSS)
<iuliana.prodan@xxxxxxxxxxx> wrote:
>
> From: Iuliana Prodan <iuliana.prodan@xxxxxxx>
>
> Add the option to allocate the crypto request object plus any extra space
> needed by the driver into a DMA-able memory.
>
> Add CRYPTO_TFM_REQ_DMA flag to be used by backend implementations to
> indicate to crypto API the need to allocate GFP_DMA memory
> for private contexts of the crypto requests.
>

These are always directional DMA mappings, right? So why can't we use
bounce buffering here?

> For IPsec use cases, CRYPTO_TFM_REQ_DMA flag is also checked in
> esp_alloc_tmp() function for IPv4 and IPv6.
>
> This series includes an example of how a driver can use
> CRYPTO_TFM_REQ_DMA flag while setting reqsize to a larger value
> to avoid allocating memory at crypto request runtime.
> The extra size needed by the driver is added to the reqsize field
> that indicates how much memory could be needed per request.
>
> Iuliana Prodan (4):
> crypto: add CRYPTO_TFM_REQ_DMA flag
> net: esp: check CRYPTO_TFM_REQ_DMA flag when allocating crypto request
> crypto: caam - avoid allocating memory at crypto request runtime for
> skcipher
> crypto: caam - avoid allocating memory at crypto request runtime for
> aead
>
> drivers/crypto/caam/caamalg.c | 130 +++++++++++++++++++++++++---------
> include/crypto/aead.h | 4 ++
> include/crypto/akcipher.h | 21 ++++++
> include/crypto/hash.h | 4 ++
> include/crypto/skcipher.h | 4 ++
> include/linux/crypto.h | 1 +
> net/ipv4/esp4.c | 7 +-
> net/ipv6/esp6.c | 7 +-
> 8 files changed, 144 insertions(+), 34 deletions(-)
>
> --
> 2.17.1
>