android_kernel_motorola_sm6375/drivers/crypto
Repository files (latest commit first)
Filename Latest commit message Latest commit date
LEROY Christophe 37b5e8897e crypto: talitos - chain in buffered data for ahash on SEC1
SEC1 doesn't support S/G in descriptors so for hash operations,
the CPU has to build a buffer containing the buffered block and
the incoming data. This generates a lot of memory copies which
represents more than 50% of CPU time of a md5sum operation as
shown below with a 'perf record'.

|--86.24%-- kcapi_md_digest
|          |
|          |--86.18%-- _kcapi_common_vmsplice_chunk_fd
|          |          |
|          |          |--83.68%-- splice
|          |          |          |
|          |          |          |--83.59%-- ret_from_syscall
|          |          |          |          |
|          |          |          |          |--83.52%-- sys_splice
|          |          |          |          |          |
|          |          |          |          |          |--83.49%-- splice_from_pipe
|          |          |          |          |          |          |
|          |          |          |          |          |          |--83.04%-- __splice_from_pipe
|          |          |          |          |          |          |          |
|          |          |          |          |          |          |          |--80.67%-- pipe_to_sendpage
|          |          |          |          |          |          |          |          |
|          |          |          |          |          |          |          |          |--78.25%-- hash_sendpage
|          |          |          |          |          |          |          |          |          |
|          |          |          |          |          |          |          |          |          |--60.08%-- ahash_process_req
|          |          |          |          |          |          |          |          |          |          |
|          |          |          |          |          |          |          |          |          |          |--56.36%-- sg_copy_buffer
|          |          |          |          |          |          |          |          |          |          |          |
|          |          |          |          |          |          |          |          |          |          |          |--55.29%-- memcpy
|          |          |          |          |          |          |          |          |          |          |          |

However, unlike SEC2+, SEC1 offers the possibility to chain
descriptors. It is therefore possible to build a first descriptor
pointing to the buffered data and a second descriptor pointing to
the incoming data, hence avoiding the memory copy to a single
buffer.

With this patch, the time necessary for a md5sum on a 90Mbytes file
is approximately 3 seconds. Without the patch it takes 6 seconds.

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2017-10-12 22:55:38 +08:00
..
amcc crypto: crypto4xx - add aes-gcm support 2017-10-12 22:55:22 +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
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
stm32 crypto: stm32 - use of_device_get_match_data 2017-10-07 12:10:34 +08:00
sunxi-ss
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
atmel-aes-regs.h
atmel-aes.c crypto: atmel - Use GCM IV size constant 2017-09-22 17:43:12 +08:00
atmel-authenc.h
atmel-ecc.c
atmel-ecc.h
atmel-sha-regs.h
atmel-sha.c
atmel-tdes-regs.h
atmel-tdes.c
bfin_crc.c
bfin_crc.h
exynos-rng.c
geode-aes.c
geode-aes.h
hifn_795x.c
img-hash.c
ixp4xx_crypto.c crypto: drop unnecessary return statements 2017-09-22 17:43:28 +08:00
Kconfig crypto: crypto4xx - prepare for AEAD support 2017-10-12 22:55:19 +08:00
Makefile
mv_cesa.c crypto: Use PTR_ERR_ZERO 2017-09-22 17:43:27 +08:00
mv_cesa.h
mxc-scc.c
mxs-dcp.c
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
omap-crypto.c
omap-crypto.h
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
picoxcell_crypto_regs.h
s5p-sss.c
sahara.c
talitos.c crypto: talitos - chain in buffered data for ahash on SEC1 2017-10-12 22:55:38 +08:00
talitos.h crypto: talitos - chain in buffered data for ahash on SEC1 2017-10-12 22:55:38 +08:00