1. 16 Mar, 2018 2 commits
    • Eric Biggers's avatar
      crypto: arm64/speck - add NEON-accelerated implementation of Speck-XTS · 91a2abb7
      Eric Biggers authored
      Add a NEON-accelerated implementation of Speck128-XTS and Speck64-XTS
      for ARM64.  This is ported from the 32-bit version.  It may be useful on
      devices with 64-bit ARM CPUs that don't have the Cryptography
      Extensions, so cannot do AES efficiently -- e.g. the Cortex-A53
      processor on the Raspberry Pi 3.
      
      It generally works the same way as the 32-bit version, but there are
      some slight differences due to the different instructions, registers,
      and syntax available in ARM64 vs. in ARM32.  For example, in the 64-bit
      version there are enough registers to hold the XTS tweaks for each
      128-byte chunk, so they don't need to be saved on the stack.
      
      Benchmarks on a Raspberry Pi 3 running a 64-bit kernel:
      
         Algorithm                              Encryption     Decryption
         ---------                              ----------     ----------
         Speck64/128-XTS (NEON)                 92.2 MB/s      92.2 MB/s
         Speck128/256-XTS (NEON)                75.0 MB/s      75.0 MB/s
         Speck128/256-XTS (generic)             47.4 MB/s      35.6 MB/s
         AES-128-XTS (NEON bit-sliced)          33.4 MB/s      29.6 MB/s
         AES-256-XTS (NEON bit-sliced)          24.6 MB/s      21.7 MB/s
      
      The code performs well on higher-end ARM64 processors as well, though
      such processors tend to have the Crypto Extensions which make AES
      preferred.  For example, here are the same benchmarks run on a HiKey960
      (with CPU affinity set for the A73 cores), with the Crypto Extensions
      implementation of AES-256-XTS added:
      
         Algorithm                              Encryption     Decryption
         ---------                              -----------    -----------
         AES-256-XTS (Crypto Extensions)        1273.3 MB/s    1274.7 MB/s
         Speck64/128-XTS (NEON)                  359.8 MB/s     348.0 MB/s
         Speck128/256-XTS (NEON)                 292.5 MB/s     286.1 MB/s
         Speck128/256-XTS (generic)              186.3 MB/s     181.8 MB/s
         AES-128-XTS (NEON bit-sliced)           142.0 MB/s     124.3 MB/s
         AES-256-XTS (NEON bit-sliced)           104.7 MB/s      91.1 MB/s
      Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      91a2abb7
    • Markus Elfring's avatar
      crypto: ccp - Use memdup_user() rather than duplicating its implementation · 6c51dddd
      Markus Elfring authored
      Reuse existing functionality from memdup_user() instead of keeping
      duplicate source code.
      
      This issue was detected by using the Coccinelle software.
      Signed-off-by: default avatarMarkus Elfring <elfring@users.sourceforge.net>
      Reviewed-by: default avatarBrijesh Singh <brijesh.singh@amd.com>
      Acked-by: default avatarGary R Hook <gary.hook@amd.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      6c51dddd
  2. 09 Mar, 2018 23 commits
  3. 02 Mar, 2018 15 commits