• Huang Ying's avatar
    crypto: aes-ni - Add support for more modes · 2cf4ac8b
    Huang Ying authored
    Because kernel_fpu_begin() and kernel_fpu_end() operations are too
    slow, the performance gain of general mode implementation + aes-aesni
    is almost all compensated.
    
    The AES-NI support for more modes are implemented as follow:
    
    - Add a new AES algorithm implementation named __aes-aesni without
      kernel_fpu_begin/end()
    
    - Use fpu(<mode>(AES)) to provide kenrel_fpu_begin/end() invoking
    
    - Add <mode>(AES) ablkcipher, which uses cryptd(fpu(<mode>(AES))) to
      defer cryption to cryptd context in soft_irq context.
    
    Now the ctr, lrw, pcbc and xts support are added.
    
    Performance testing based on dm-crypt shows that cryption time can be
    reduced to 50% of general mode implementation + aes-aesni implementation.
    Signed-off-by: default avatarHuang Ying <ying.huang@intel.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    2cf4ac8b
aesni-intel_glue.c 18.9 KB