crypto: ghash - Add PCLMULQDQ accelerated implementation
authorHuang Ying <ying.huang@intel.com>
Mon, 19 Oct 2009 02:53:06 +0000 (11:53 +0900)
committerHerbert Xu <herbert@gondor.apana.org.au>
Mon, 19 Oct 2009 02:53:06 +0000 (11:53 +0900)
commit0e1227d356e9b2fe0500d6cc7084f752040a1e0e
tree6f059b8e3c31539942ad244e7aadabcb54e8d904
parent4c6ab3ee4cdb86cbd4e9400dd22fad7701cbe795
crypto: ghash - Add PCLMULQDQ accelerated implementation

PCLMULQDQ is used to accelerate the most time-consuming part of GHASH,
carry-less multiplication. More information about PCLMULQDQ can be
found at:

http://software.intel.com/en-us/articles/carry-less-multiplication-and-its-usage-for-computing-the-gcm-mode/

Because PCLMULQDQ changes XMM state, its usage must be enclosed with
kernel_fpu_begin/end, which can be used only in process context, the
acceleration is implemented as crypto_ahash. That is, request in soft
IRQ context will be defered to the cryptd kernel thread.

Signed-off-by: Huang Ying <ying.huang@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/x86/crypto/Makefile
arch/x86/crypto/ghash-clmulni-intel_asm.S [new file with mode: 0644]
arch/x86/crypto/ghash-clmulni-intel_glue.c [new file with mode: 0644]
arch/x86/include/asm/cpufeature.h
crypto/Kconfig
crypto/cryptd.c
include/crypto/cryptd.h