The drivers for crypto accelerators in drivers/crypto all implement skciphers of an asynchronous nature, given that they are backed by hardware DMA that completes asynchronously wrt the execution flow. However, in many cases, any fallbacks they allocate are limited to the synchronous variety, which rules out the use of SIMD implementations of AES in ECB, CBC and XTS modes, given that they are usually built on top of the asynchronous SIMD helper, which queues requests for asynchronous completion if they are issued from a context that does not permit the use of the SIMD register file. This may result in sub-optimal AES implementations to be selected as fallbacks, or even less secure ones if the only synchronous alternative is table based, and therefore not time invariant. So switch all these cases over to the asynchronous API, by moving the subrequest into the skcipher request context, and permitting it to complete asynchronously via the caller provided completion function. Patch #1 is not related, but touches the same driver as #2 so it is included anyway. Patch #13 removes another sync skcipher allocation by switching to the AES library interface. Only OMAP was tested on actual hardware - the others are build tested only. v2: - address issue found by build robot in patch #7 - add patch #13 - rebase onto cryptodev/master Cc: Corentin Labbe <clabbe.montjoie@xxxxxxxxx> Cc: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Cc: "David S. Miller" <davem@xxxxxxxxxxxxx> Cc: Maxime Ripard <mripard@xxxxxxxxxx> Cc: Chen-Yu Tsai <wens@xxxxxxxx> Cc: Tom Lendacky <thomas.lendacky@xxxxxxx> Cc: Ayush Sawal <ayush.sawal@xxxxxxxxxxx> Cc: Vinay Kumar Yadav <vinay.yadav@xxxxxxxxxxx> Cc: Rohit Maheshwari <rohitm@xxxxxxxxxxx> Cc: Shawn Guo <shawnguo@xxxxxxxxxx> Cc: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> Cc: Pengutronix Kernel Team <kernel@xxxxxxxxxxxxxx> Cc: Fabio Estevam <festevam@xxxxxxxxx> Cc: NXP Linux Team <linux-imx@xxxxxxx> Cc: Jamie Iles <jamie@xxxxxxxxxxxxx> Cc: Eric Biggers <ebiggers@xxxxxxxxxx> Cc: Tero Kristo <t-kristo@xxxxxx> Cc: Matthias Brugger <matthias.bgg@xxxxxxxxx> Ard Biesheuvel (13): crypto: amlogic-gxl - default to build as module crypto: amlogic-gxl - permit async skcipher as fallback crypto: omap-aes - permit asynchronous skcipher as fallback crypto: sun4i - permit asynchronous skcipher as fallback crypto: sun8i-ce - permit asynchronous skcipher as fallback crypto: sun8i-ss - permit asynchronous skcipher as fallback crypto: ccp - permit asynchronous skcipher as fallback crypto: chelsio - permit asynchronous skcipher as fallback crypto: mxs-dcp - permit asynchronous skcipher as fallback crypto: picoxcell - permit asynchronous skcipher as fallback crypto: qce - permit asynchronous skcipher as fallback crypto: sahara - permit asynchronous skcipher as fallback crypto: mediatek - use AES library for GCM key derivation drivers/crypto/Kconfig | 3 +- drivers/crypto/allwinner/sun4i-ss/sun4i-ss-cipher.c | 46 +++++----- drivers/crypto/allwinner/sun4i-ss/sun4i-ss.h | 3 +- drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c | 41 ++++----- drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h | 3 +- drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c | 39 ++++---- drivers/crypto/allwinner/sun8i-ss/sun8i-ss.h | 3 +- drivers/crypto/amlogic/Kconfig | 2 +- drivers/crypto/amlogic/amlogic-gxl-cipher.c | 27 +++--- drivers/crypto/amlogic/amlogic-gxl.h | 3 +- drivers/crypto/ccp/ccp-crypto-aes-xts.c | 33 ++++--- drivers/crypto/ccp/ccp-crypto.h | 4 +- drivers/crypto/chelsio/chcr_algo.c | 57 +++++------- drivers/crypto/chelsio/chcr_crypto.h | 3 +- drivers/crypto/mediatek/mtk-aes.c | 63 ++----------- drivers/crypto/mxs-dcp.c | 33 +++---- drivers/crypto/omap-aes.c | 35 ++++--- drivers/crypto/omap-aes.h | 3 +- drivers/crypto/picoxcell_crypto.c | 34 ++++--- drivers/crypto/qce/cipher.h | 3 +- drivers/crypto/qce/skcipher.c | 27 +++--- drivers/crypto/sahara.c | 96 +++++++++----------- 22 files changed, 254 insertions(+), 307 deletions(-) -- 2.27.0