This adds ARM and arm64 implementations of ChaCha20, scalar AES and SIMD AES (using bit slicing). The SIMD algorithms in this series take advantage of the new skcipher walksize attribute to iterate over the input in the most efficient manner possible.
Patch #1 adds a NEON implementation of ChaCha20 for ARM. Patch #2 adds a NEON implementation of ChaCha20 for arm64. Patch #3 modifies the existing NEON and ARMv8 Crypto Extensions implementations of AES-CTR to be available as a synchronous skcipher as well. This is intended for the mac80211 code, which uses synchronous encapsulations of ctr(aes) [ccm, gcm] in softirq context, during which arm64 supports use of SIMD code. Patch #4 adds a scalar implementation of AES for arm64, using the key schedule generation routines and lookup tables of the generic code in crypto/aes_generic. Patch #5 does the same for ARM, replacing existing scalar code that originated in the OpenSSL project, and contains redundant key schedule generation routines and lookup tables (and is slightly slower on modern cores) Patch #6 replaces the ARM bit sliced NEON code with a new implementation that has a number of advantages over the original code (which also originated in the OpenSSL project.) The performance should be identical. Patch #7 adds a port of the ARM bit-sliced AES code to arm64, in ECB, CBC, CTR and XTS modes. Due to the size of patch #7, it may be difficult to apply these patches from patchwork, so I pushed them here as well: git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git crypto-arm-v4.11 https://git.kernel.org/cgit/linux/kernel/git/ardb/linux.git/log/?h=crypto-arm-v4.11 Ard Biesheuvel (7): crypto: arm64/chacha20 - implement NEON version based on SSE3 code crypto: arm/chacha20 - implement NEON version based on SSE3 code crypto: arm64/aes-blk - expose AES-CTR as synchronous cipher as well crypto: arm64/aes - add scalar implementation crypto: arm/aes - replace scalar AES cipher crypto: arm/aes - replace bit-sliced OpenSSL NEON code crypto: arm64/aes - reimplement bit-sliced ARM/NEON implementation for arm64 arch/arm/crypto/Kconfig | 27 +- arch/arm/crypto/Makefile | 11 +- arch/arm/crypto/aes-armv4.S | 1089 --------- arch/arm/crypto/aes-cipher-core.S | 179 ++ arch/arm/crypto/aes-cipher-glue.c | 74 + arch/arm/crypto/aes-neonbs-core.S | 1021 ++++++++ arch/arm/crypto/aes-neonbs-glue.c | 405 ++++ arch/arm/crypto/aes_glue.c | 98 - arch/arm/crypto/aes_glue.h | 19 - arch/arm/crypto/aesbs-core.S_shipped | 2548 -------------------- arch/arm/crypto/aesbs-glue.c | 367 --- arch/arm/crypto/bsaes-armv7.pl | 2471 ------------------- arch/arm/crypto/chacha20-neon-core.S | 524 ++++ arch/arm/crypto/chacha20-neon-glue.c | 128 + arch/arm64/crypto/Kconfig | 17 + arch/arm64/crypto/Makefile | 9 + arch/arm64/crypto/aes-cipher-core.S | 127 + arch/arm64/crypto/aes-cipher-glue.c | 69 + arch/arm64/crypto/aes-glue.c | 25 +- arch/arm64/crypto/aes-neonbs-core.S | 963 ++++++++ arch/arm64/crypto/aes-neonbs-glue.c | 420 ++++ arch/arm64/crypto/chacha20-neon-core.S | 450 ++++ arch/arm64/crypto/chacha20-neon-glue.c | 127 + 23 files changed, 4549 insertions(+), 6619 deletions(-) delete mode 100644 arch/arm/crypto/aes-armv4.S create mode 100644 arch/arm/crypto/aes-cipher-core.S create mode 100644 arch/arm/crypto/aes-cipher-glue.c create mode 100644 arch/arm/crypto/aes-neonbs-core.S create mode 100644 arch/arm/crypto/aes-neonbs-glue.c delete mode 100644 arch/arm/crypto/aes_glue.c delete mode 100644 arch/arm/crypto/aes_glue.h delete mode 100644 arch/arm/crypto/aesbs-core.S_shipped delete mode 100644 arch/arm/crypto/aesbs-glue.c delete mode 100644 arch/arm/crypto/bsaes-armv7.pl create mode 100644 arch/arm/crypto/chacha20-neon-core.S create mode 100644 arch/arm/crypto/chacha20-neon-glue.c create mode 100644 arch/arm64/crypto/aes-cipher-core.S create mode 100644 arch/arm64/crypto/aes-cipher-glue.c create mode 100644 arch/arm64/crypto/aes-neonbs-core.S create mode 100644 arch/arm64/crypto/aes-neonbs-glue.c create mode 100644 arch/arm64/crypto/chacha20-neon-core.S create mode 100644 arch/arm64/crypto/chacha20-neon-glue.c -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html