Messages in this thread | | | Subject | Re: [RFC PATCH 0/4] crypto: add CRYPTO_TFM_REQ_DMA flag | From | Iuliana Prodan <> | Date | Wed, 25 Nov 2020 23:39:22 +0200 |
| |
On 11/25/2020 11:16 PM, Ard Biesheuvel wrote: > On Wed, 25 Nov 2020 at 22:14, Iuliana Prodan (OSS) > <iuliana.prodan@oss.nxp.com> wrote: >> >> From: Iuliana Prodan <iuliana.prodan@nxp.com> >> >> 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? > The idea was to avoid allocating any memory in crypto drivers. We want to be able to use dm-crypt with CAAM, which needs DMA-able memory and increasing reqsize is not enough. It started from here https://lore.kernel.org/linux-crypto/71b6f739-d4a8-8b26-bf78-ce9acf9a0f99@nxp.com/T/#m39684173a2f0f4b83d8bcbec223e98169273d1e4
>> 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 >>
| |