v2 rebases on top of cryptodev. Most hash algorithms are block-based and data is held back until a whole block can be fed into the algorithm. Currently, this retention is entirely handled in the low-level algorithm code, with the API and the user oblivious to it. As a comparison, the block ciphers defer this retention entirely to the user and the API, who is expected to provide input with no partial data until the very end. The result of this is that every shash algorithm has to implement partial block handling, and it gets many times worse when you look at ahash drivers. This patch series adds optional handling of partial blocks to the shash API and converts some of the shash algorithms to it. In particular, all the algorithms used by ahash drivers have been converted. This ensures that when the ahash drivers themselves are converted the export format will be consistent. As this touches so many shash algorithms, two extra changes have been made at the same time: removal of SIMD fallback paths on arm/arm64/x86 and exporting in the same format as that of the generic algorithm. Herbert Xu (67): crypto: shash - Handle partial blocks in API crypto: blake2b-generic - Use API partial block handling crypto: arm/blake2b - Use API partial block handling crypto: ghash-generic - Use API partial block handling crypto: powerpc/ghash - Use API partial block handling crypto: arm/ghash - Use API partial block handling crypto: arm64/ghash - Use API partial block handling crypto: riscv/ghash - Use API partial block handling crypto: s390/ghash - Use API partial block handling crypto: x86/ghash - Use API partial block handling crypto: md5-generic - Use API partial block handling crypto: mips/octeon-md5 - Use API partial block handling crypto: powerpc/md5 - Use API partial block handling crypto: sparc/md5 - Use API partial block handling crypto: x86/sha1 - Use API partial block handling crypto: arm64/sha1 - Use API partial block handling crypto: mips/octeon-sha1 - Use API partial block handling crypto: sha1-generic - Use API partial block handling crypto: arm/sha1-ce - Use API partial block handling crypto: arm/sha1-neon - Use API partial block handling crypto: arm/sha1-asm - Use API partial block handling crypto: powerpc/sha1 - Use API partial block handling crypto: powerpc/sha1-spe - Use API partial block handling crypto: s390/sha1 - Use API partial block handling crypto: sparc/sha1 - Use API partial block handling crypto: sha1_base - Remove partial block helpers crypto: x86/sha256 - Use API partial block handling crypto: mips/octeon-sha256 - Use API partial block handling crypto: riscv/sha256 - Use API partial block handling crypto: sha256-generic - Use API partial block handling crypto: arm/sha256-ce - Use API partial block handling crypto: arm/sha256-neon - Use API partial block handling crypto: arm/sha256-asm - Use API partial block handling crypto: arm64/sha256-ce - Use API partial block handling crypto: arm64/sha256 - Use API partial block handling crypto: powerpc/sha256-spe - Use API partial block handling crypto: s390/sha256 - Use API partial block handling crypto: sparc/sha256 - Use API partial block handling crypto: sha256_base - Remove partial block helpers crypto: arm64/sha3-ce - Use API partial block handling crypto: s390/sha3 - Use API partial block handling crypto: sha3-generic - Use API partial block handling crypto: zynqmp-sha - Use API partial block handling crypto: x86/sha512 - Use API partial block handling crypto: mips/octeon-sha512 - Use API partial block handling crypto: riscv/sha512 - Use API partial block handling crypto: sha512-generic - Use API partial block handling crypto: arm/sha512-neon - Use API partial block handling crypto: arm/sha512-asm - Use API partial block handling crypto: arm64/sha512-ce - Use API partial block handling crypto: arm/sha512 - Use API partial block handling crypto: s390/sha512 - Use API partial block handling crypto: sparc/sha512 - Use API partial block handling crypto: sha512_base - Remove partial block helpers crypto: sm3-generic - Use API partial block handling crypto: arm64/sm3-ce - Use API partial block handling crypto: arm64/sm3-neon - Use API partial block handling crypto: riscv/sm3 - Use API partial block handling crypto: x86/sm3 - Use API partial block handling crypto: lib/sm3 - Remove partial block helpers crypto: cbcmac - Use API partial block handling crypto: cmac - Use API partial block handling crypto: xcbc - Use API partial block handling crypto: arm64/aes - Use API partial block handling crypto: arm64/sm4 - Use API partial block handling crypto: nx - Use API partial block handling crypto: padlock-sha - Use API partial block handling arch/arm/crypto/blake2b-neon-glue.c | 20 +- arch/arm/crypto/ghash-ce-glue.c | 110 ++--- arch/arm/crypto/sha1-ce-glue.c | 36 +- arch/arm/crypto/sha1.h | 14 - arch/arm/crypto/sha1_glue.c | 33 +- arch/arm/crypto/sha1_neon_glue.c | 39 +- arch/arm/crypto/sha2-ce-glue.c | 52 +- arch/arm/crypto/sha256_glue.c | 46 +- arch/arm/crypto/sha256_glue.h | 8 +- arch/arm/crypto/sha256_neon_glue.c | 49 +- arch/arm/crypto/sha512-glue.c | 36 +- arch/arm/crypto/sha512-neon-glue.c | 43 +- arch/arm/crypto/sha512.h | 6 - arch/arm64/crypto/aes-glue.c | 122 ++--- arch/arm64/crypto/ghash-ce-glue.c | 151 +++--- arch/arm64/crypto/sha1-ce-glue.c | 66 +-- arch/arm64/crypto/sha2-ce-glue.c | 90 +--- arch/arm64/crypto/sha256-glue.c | 97 ++-- arch/arm64/crypto/sha3-ce-glue.c | 107 ++-- arch/arm64/crypto/sha512-ce-glue.c | 49 +- arch/arm64/crypto/sha512-glue.c | 28 +- arch/arm64/crypto/sm3-ce-glue.c | 48 +- arch/arm64/crypto/sm3-neon-glue.c | 48 +- arch/arm64/crypto/sm4-ce-glue.c | 98 ++-- arch/mips/cavium-octeon/crypto/octeon-md5.c | 119 ++--- arch/mips/cavium-octeon/crypto/octeon-sha1.c | 136 ++--- .../mips/cavium-octeon/crypto/octeon-sha256.c | 161 ++---- .../mips/cavium-octeon/crypto/octeon-sha512.c | 155 ++---- arch/powerpc/crypto/ghash.c | 81 ++- arch/powerpc/crypto/md5-glue.c | 99 +--- arch/powerpc/crypto/sha1-spe-glue.c | 132 +---- arch/powerpc/crypto/sha1.c | 101 +--- arch/powerpc/crypto/sha256-spe-glue.c | 167 ++----- arch/riscv/crypto/ghash-riscv64-glue.c | 58 +-- arch/riscv/crypto/sha256-riscv64-glue.c | 68 ++- arch/riscv/crypto/sha512-riscv64-glue.c | 47 +- arch/riscv/crypto/sm3-riscv64-glue.c | 49 +- arch/s390/crypto/ghash_s390.c | 110 ++--- arch/s390/crypto/sha.h | 22 +- arch/s390/crypto/sha1_s390.c | 22 +- arch/s390/crypto/sha256_s390.c | 35 +- arch/s390/crypto/sha3_256_s390.c | 60 +-- arch/s390/crypto/sha3_512_s390.c | 67 +-- arch/s390/crypto/sha512_s390.c | 45 +- arch/s390/crypto/sha_common.c | 84 ++-- arch/sparc/crypto/md5_glue.c | 141 +++--- arch/sparc/crypto/sha1_glue.c | 109 +--- arch/sparc/crypto/sha256_glue.c | 121 +---- arch/sparc/crypto/sha512_glue.c | 102 +--- arch/x86/crypto/ghash-clmulni-intel_asm.S | 5 +- arch/x86/crypto/ghash-clmulni-intel_glue.c | 301 ++---------- arch/x86/crypto/sha1_ssse3_glue.c | 81 +-- arch/x86/crypto/sha256_ssse3_glue.c | 104 ++-- arch/x86/crypto/sha512_ssse3_glue.c | 79 +-- arch/x86/crypto/sm3_avx_glue.c | 54 +- crypto/blake2b_generic.c | 31 +- crypto/ccm.c | 59 +-- crypto/cmac.c | 92 +--- crypto/ghash-generic.c | 56 +-- crypto/md5.c | 102 ++-- crypto/sha1_generic.c | 33 +- crypto/sha256_generic.c | 50 +- crypto/sha3_generic.c | 101 ++-- crypto/sha512_generic.c | 56 +-- crypto/shash.c | 229 +++++++-- crypto/sm3_generic.c | 31 +- crypto/xcbc.c | 92 +--- drivers/crypto/nx/nx-aes-xcbc.c | 128 ++--- drivers/crypto/nx/nx-sha256.c | 130 ++--- drivers/crypto/nx/nx-sha512.c | 143 +++--- drivers/crypto/nx/nx.c | 15 +- drivers/crypto/nx/nx.h | 6 +- drivers/crypto/padlock-sha.c | 464 ++++++------------ drivers/crypto/xilinx/zynqmp-sha.c | 71 +-- include/crypto/blake2b.h | 31 +- include/crypto/ghash.h | 4 +- include/crypto/hash.h | 104 ++-- include/crypto/internal/blake2b.h | 94 ++-- include/crypto/internal/hash.h | 15 + include/crypto/md5.h | 3 +- include/crypto/sha1.h | 9 +- include/crypto/sha1_base.h | 79 +-- include/crypto/sha2.h | 20 +- include/crypto/sha256_base.h | 111 +++-- include/crypto/sha3.h | 16 +- include/crypto/sha512_base.h | 88 ++-- include/crypto/sm3.h | 3 +- include/crypto/sm3_base.h | 79 ++- include/linux/crypto.h | 2 + lib/crypto/sha256.c | 7 +- lib/crypto/sm3.c | 68 +-- 91 files changed, 2372 insertions(+), 4561 deletions(-) delete mode 100644 arch/arm/crypto/sha1.h base-commit: da4cb617bc7d827946cbb368034940b379a1de90 -- 2.39.5