linux_old1/drivers/crypto
Christian Lamparter 8ef8d19543 crypto: crypto4xx - add backlog queue support
Previously, If the crypto4xx driver used all available
security contexts, it would simply refuse new requests
with -EAGAIN. CRYPTO_TFM_REQ_MAY_BACKLOG was ignored.

in case of dm-crypt.c's crypt_convert() function this was
causing the following errors to manifest, if the system was
pushed hard enough:

| EXT4-fs warning (dm-1): ext4_end_bio:314: I/O error -5 writing to ino ..
| EXT4-fs warning (dm-1): ext4_end_bio:314: I/O error -5 writing to ino ..
| EXT4-fs warning (dm-1): ext4_end_bio:314: I/O error -5 writing to ino ..
| JBD2: Detected IO errors while flushing file data on dm-1-8
| Aborting journal on device dm-1-8.
| EXT4-fs error : ext4_journal_check_start:56: Detected aborted journal
| EXT4-fs (dm-1): Remounting filesystem read-only
| EXT4-fs : ext4_writepages: jbd2_start: 2048 pages, inode 498...; err -30

(This did cause corruptions due to failed writes)

To fix this mess, the crypto4xx driver needs to notifiy the
user to slow down. This can be achieved by returning -EBUSY
on requests, once the crypto hardware was falling behind.

Note: -EBUSY has two different meanings. Setting the flag
CRYPTO_TFM_REQ_MAY_BACKLOG implies that the request was
successfully queued, by the crypto driver. To achieve this
requirement, the implementation introduces a threshold check and
adds logic to the completion routines in much the same way as
AMD's Cryptographic Coprocessor (CCP) driver do.

Note2: Tests showed that dm-crypt starved ipsec traffic.
Under load, ipsec links dropped to 0 Kbits/s. This is because
dm-crypt's callback would instantly queue the next request.
In order to not starve ipsec, the driver reserves a small
portion of the available crypto contexts for this purpose.

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2017-10-12 22:55:12 +08:00
..
amcc crypto: crypto4xx - add backlog queue support 2017-10-12 22:55:12 +08:00
axis crypto: axis - hide an unused variable 2017-09-22 17:38:19 +08:00
bcm crypto: bcm - pr_err() strings should end with newlines 2017-10-12 22:54:57 +08:00
caam crypto: caam - Use GCM IV size constant 2017-09-22 17:43:09 +08:00
cavium crypto: cavium/nitrox - Fix an error handling path in 'nitrox_probe()' 2017-08-22 14:54:55 +08:00
ccp crypto:ccp - invoke the DMA callback in a standard way 2017-10-07 12:10:30 +08:00
chelsio crypto: chelsio - pr_err() strings should end with newlines 2017-10-12 22:54:55 +08:00
inside-secure crypto: inside-secure - remove null check before kfree 2017-09-22 17:43:25 +08:00
marvell crypto: drop unnecessary return statements 2017-09-22 17:43:28 +08:00
mediatek crypto: mediatek - Use GCM IV size constant 2017-09-22 17:43:12 +08:00
nx crypto: nx - Use GCM IV size constant 2017-09-22 17:43:10 +08:00
qat crypto: qat - pr_err() strings should end with newlines 2017-10-12 22:54:56 +08:00
qce crypto: Use PTR_ERR_ZERO 2017-09-22 17:43:27 +08:00
rockchip crypto: rockchip - Don't dequeue the request when device is busy 2017-08-22 14:54:54 +08:00
stm32 crypto: stm32 - use of_device_get_match_data 2017-10-07 12:10:34 +08:00
sunxi-ss crypto: sun4i-ss - support the Security System PRNG 2017-07-18 17:50:55 +08:00
ux500 crypto: drop unnecessary return statements 2017-09-22 17:43:28 +08:00
virtio crypto: virtio - pr_err() strings should end with newlines 2017-10-12 22:54:52 +08:00
vmx crypto: algapi - make crypto_xor() take separate dst and src arguments 2017-08-04 09:27:15 +08:00
Kconfig crypto: axis - add ARTPEC-6/7 crypto accelerator driver 2017-08-22 14:54:52 +08:00
Makefile crypto: axis - add ARTPEC-6/7 crypto accelerator driver 2017-08-22 14:54:52 +08:00
atmel-aes-regs.h crypto: atmel-authenc - add support to authenc(hmac(shaX), Y(aes)) modes 2017-02-03 18:16:14 +08:00
atmel-aes.c crypto: atmel - Use GCM IV size constant 2017-09-22 17:43:12 +08:00
atmel-authenc.h crypto: atmel-authenc - add support to authenc(hmac(shaX), Y(aes)) modes 2017-02-03 18:16:14 +08:00
atmel-ecc.c crypto: atmel-ecc - fix signed integer to u8 assignment 2017-08-03 13:47:23 +08:00
atmel-ecc.h crypto: atmel-ecc - introduce Microchip / Atmel ECC driver 2017-07-18 17:50:58 +08:00
atmel-sha-regs.h crypto: atmel-authenc - add support to authenc(hmac(shaX), Y(aes)) modes 2017-02-03 18:16:14 +08:00
atmel-sha.c crypto: atmel-sha - remove unnecessary static in atmel_sha_remove() 2017-08-03 13:47:16 +08:00
atmel-tdes-regs.h crypto: atmel-tdes - add support for latest release of the IP (0x700) 2013-03-10 16:46:42 +08:00
atmel-tdes.c crypto: atmel-tdes - remove unnecessary static in atmel_tdes_remove() 2017-08-03 13:47:18 +08:00
bfin_crc.c crypto: bfin_crc - Fix format printing warning 2016-12-27 17:50:51 +08:00
bfin_crc.h crypto: bfin_crc - Remove unneeded linux/miscdevice.h include 2016-12-27 17:50:51 +08:00
exynos-rng.c crypto: exynos - Add new Exynos RNG driver 2017-04-21 20:30:46 +08:00
geode-aes.c crypto: geode-aes - fixed coding style warnings and error 2017-07-18 18:15:57 +08:00
geode-aes.h crypto: geode - Consistently use AES_KEYSIZE_128 2014-05-22 21:03:12 +08:00
hifn_795x.c crypto: squash lines for simple wrapper functions 2016-09-13 20:27:26 +08:00
img-hash.c crypto: img-hash - remove unnecessary static in img_hash_remove() 2017-08-03 13:47:18 +08:00
ixp4xx_crypto.c crypto: drop unnecessary return statements 2017-09-22 17:43:28 +08:00
mv_cesa.c crypto: Use PTR_ERR_ZERO 2017-09-22 17:43:27 +08:00
mv_cesa.h crypto: mv_cesa - Add missing #define 2014-08-29 21:46:36 +08:00
mxc-scc.c crypto: mxc-scc - fix error code in mxc_scc_probe() 2017-07-18 17:50:54 +08:00
mxs-dcp.c crypto: mxs-dcp - print error message on platform_get_irq failure 2017-07-18 17:50:54 +08:00
n2_asm.S
n2_core.c crypto: n2 - remove null check before kfree 2017-09-22 17:43:25 +08:00
n2_core.h
omap-aes-gcm.c crypto: omap-aes - pr_err() strings should end with newlines 2017-10-12 22:54:51 +08:00
omap-aes.c crypto: omap - use of_device_get_match_data 2017-10-07 12:10:35 +08:00
omap-aes.h crypto: omap-aes - Add support for GCM mode 2017-06-10 12:04:19 +08:00
omap-crypto.c crypto: omap - add base support library for common routines 2017-06-10 12:04:15 +08:00
omap-crypto.h crypto: omap - add base support library for common routines 2017-06-10 12:04:15 +08:00
omap-des.c crypto: omap - use of_device_get_match_data 2017-10-07 12:10:35 +08:00
omap-sham.c crypto: omap - use of_device_get_match_data 2017-10-07 12:10:35 +08:00
padlock-aes.c crypto: padlock-aes - constify x86_cpu_id 2017-09-22 17:43:20 +08:00
padlock-sha.c crypto: padlock-sha - constify x86_cpu_id 2017-09-22 17:43:20 +08:00
picoxcell_crypto.c crypto: picoxcell - Remove spacc_is_compatible() wrapper function 2017-01-13 00:24:41 +08:00
picoxcell_crypto_regs.h
s5p-sss.c crypto: s5p-sss - Document the struct s5p_aes_dev 2017-03-24 22:03:00 +08:00
sahara.c crypto: sahara - constify platform_device_id 2017-08-22 14:54:53 +08:00
talitos.c crypto: talitos - Don't provide setkey for non hmac hashing algs. 2017-09-20 17:42:40 +08:00
talitos.h crypto: talitos - add new crypto modes 2015-12-04 22:29:56 +08:00