I just moved my boot disk from an old machine to a new machine. The new machine has AES-NI and it failed to boot. The problem appears to be that aesni-intel, when loaded as a module, makes cryptsetup fail on an aes-xts-plain drive. The error looks like: device-mapper: reload ioctl failed: Invalid argument device-mapper: table: 253:0: crypt: Error allocating crypto tfm device-mapper: ioctl: error adding target to table If I blacklist aesni-intel or compile it directly into the kernel, everything works. I have this problem on 2.6.38.5 and 2.6.39-rc6. /proc/crypto with aesni-intel builtin and as a module attached. I don't know enough about how cryptoapi works to really debug it, but my .config for the modular case contains: CONFIG_CRYPTO=y # # Crypto core or helper # CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_ALGAPI2=y CONFIG_CRYPTO_AEAD=m CONFIG_CRYPTO_AEAD2=y CONFIG_CRYPTO_BLKCIPHER=m CONFIG_CRYPTO_BLKCIPHER2=y CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_HASH2=y CONFIG_CRYPTO_RNG=m CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_PCOMP2=y CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER2=y CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y CONFIG_CRYPTO_GF128MUL=m CONFIG_CRYPTO_NULL=m CONFIG_CRYPTO_PCRYPT=m CONFIG_CRYPTO_WORKQUEUE=y CONFIG_CRYPTO_CRYPTD=m CONFIG_CRYPTO_AUTHENC=m CONFIG_CRYPTO_TEST=m # # Authenticated Encryption with Associated Data # CONFIG_CRYPTO_CCM=m CONFIG_CRYPTO_GCM=m CONFIG_CRYPTO_SEQIV=m # # Block modes # CONFIG_CRYPTO_CBC=m CONFIG_CRYPTO_CTR=m CONFIG_CRYPTO_CTS=m CONFIG_CRYPTO_ECB=m CONFIG_CRYPTO_LRW=m CONFIG_CRYPTO_PCBC=m CONFIG_CRYPTO_XTS=m CONFIG_CRYPTO_FPU=m # # Hash modes # CONFIG_CRYPTO_HMAC=y CONFIG_CRYPTO_XCBC=m CONFIG_CRYPTO_VMAC=m # # Digest # CONFIG_CRYPTO_CRC32C=y CONFIG_CRYPTO_CRC32C_INTEL=m CONFIG_CRYPTO_GHASH=m CONFIG_CRYPTO_MD4=m CONFIG_CRYPTO_MD5=y CONFIG_CRYPTO_MICHAEL_MIC=m CONFIG_CRYPTO_RMD128=m CONFIG_CRYPTO_RMD160=m CONFIG_CRYPTO_RMD256=m CONFIG_CRYPTO_RMD320=m CONFIG_CRYPTO_SHA1=y CONFIG_CRYPTO_SHA256=m CONFIG_CRYPTO_SHA512=m CONFIG_CRYPTO_TGR192=m CONFIG_CRYPTO_WP512=m # CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL is not set # # Ciphers # CONFIG_CRYPTO_AES=m CONFIG_CRYPTO_AES_X86_64=m CONFIG_CRYPTO_AES_NI_INTEL=m CONFIG_CRYPTO_ANUBIS=m CONFIG_CRYPTO_ARC4=m CONFIG_CRYPTO_BLOWFISH=m CONFIG_CRYPTO_CAMELLIA=m CONFIG_CRYPTO_CAST5=m CONFIG_CRYPTO_CAST6=m CONFIG_CRYPTO_DES=m CONFIG_CRYPTO_FCRYPT=m CONFIG_CRYPTO_KHAZAD=m # CONFIG_CRYPTO_SALSA20 is not set CONFIG_CRYPTO_SALSA20_X86_64=m CONFIG_CRYPTO_SEED=m CONFIG_CRYPTO_SERPENT=m CONFIG_CRYPTO_TEA=m # CONFIG_CRYPTO_TWOFISH is not set CONFIG_CRYPTO_TWOFISH_COMMON=m CONFIG_CRYPTO_TWOFISH_X86_64=m # # Compression # CONFIG_CRYPTO_DEFLATE=m # CONFIG_CRYPTO_ZLIB is not set CONFIG_CRYPTO_LZO=m # # Random Number Generation # CONFIG_CRYPTO_ANSI_CPRNG=m CONFIG_CRYPTO_USER_API=m CONFIG_CRYPTO_USER_API_HASH=m CONFIG_CRYPTO_USER_API_SKCIPHER=m CONFIG_CRYPTO_HW=y CONFIG_CRYPTO_DEV_PADLOCK=m CONFIG_CRYPTO_DEV_PADLOCK_AES=m CONFIG_CRYPTO_DEV_PADLOCK_SHA=m CONFIG_CRYPTO_DEV_HIFN_795X=m CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y --Andy
name : ecb(arc4) driver : ecb(arc4-generic) module : ecb priority : 0 refcnt : 3 selftest : passed type : blkcipher blocksize : 1 min keysize : 1 max keysize : 256 ivsize : 0 geniv : <default> name : arc4 driver : arc4-generic module : arc4 priority : 0 refcnt : 3 selftest : passed type : cipher blocksize : 1 min keysize : 1 max keysize : 256 name : fpu(xts(__aes-aesni)) driver : cryptd(fpu(xts(__driver-aes-aesni))) module : kernel priority : 50 refcnt : 9 selftest : passed type : ablkcipher async : yes blocksize : 16 min keysize : 32 max keysize : 64 ivsize : 16 geniv : <default> name : fpu(xts(__aes-aesni)) driver : fpu(xts(__driver-aes-aesni)) module : kernel priority : 0 refcnt : 9 selftest : passed type : blkcipher blocksize : 16 min keysize : 32 max keysize : 64 ivsize : 16 geniv : <default> name : xts(__aes-aesni) driver : xts(__driver-aes-aesni) module : kernel priority : 0 refcnt : 9 selftest : passed type : blkcipher blocksize : 16 min keysize : 32 max keysize : 64 ivsize : 16 geniv : <default> name : xts(aes) driver : xts-aes-aesni module : kernel priority : 400 refcnt : 9 selftest : passed type : givcipher async : yes blocksize : 16 min keysize : 32 max keysize : 64 ivsize : 16 geniv : eseqiv name : stdrng driver : krng module : kernel priority : 200 refcnt : 2 selftest : passed type : rng seedsize : 0 name : crc32c driver : crc32c-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : shash blocksize : 1 digestsize : 4 name : aes driver : aes-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : sha1 driver : sha1-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 20 name : md5 driver : md5-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 16 name : xts(aes) driver : xts-aes-aesni module : kernel priority : 400 refcnt : 9 selftest : passed type : ablkcipher async : yes blocksize : 16 min keysize : 32 max keysize : 64 ivsize : 16 geniv : <default> name : pcbc(aes) driver : pcbc-aes-aesni module : kernel priority : 400 refcnt : 1 selftest : passed type : ablkcipher async : yes blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 16 geniv : <default> name : lrw(aes) driver : lrw-aes-aesni module : kernel priority : 400 refcnt : 1 selftest : passed type : ablkcipher async : yes blocksize : 16 min keysize : 32 max keysize : 48 ivsize : 16 geniv : <default> name : rfc3686(ctr(aes)) driver : rfc3686-ctr-aes-aesni module : kernel priority : 400 refcnt : 1 selftest : passed type : ablkcipher async : yes blocksize : 1 min keysize : 20 max keysize : 36 ivsize : 8 geniv : seqiv name : rfc4106(gcm(aes)) driver : rfc4106-gcm-aesni module : kernel priority : 400 refcnt : 1 selftest : passed type : nivaead async : yes blocksize : 1 ivsize : 8 maxauthsize : 16 geniv : seqiv name : __gcm-aes-aesni driver : __driver-gcm-aes-aesni module : kernel priority : 0 refcnt : 1 selftest : passed type : aead async : no blocksize : 1 ivsize : 0 maxauthsize : 0 geniv : <built-in> name : ctr(aes) driver : ctr-aes-aesni module : kernel priority : 400 refcnt : 1 selftest : passed type : ablkcipher async : yes blocksize : 1 min keysize : 16 max keysize : 32 ivsize : 16 geniv : chainiv name : __ctr-aes-aesni driver : __driver-ctr-aes-aesni module : kernel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 1 min keysize : 16 max keysize : 32 ivsize : 16 geniv : <default> name : cbc(aes) driver : cbc-aes-aesni module : kernel priority : 400 refcnt : 1 selftest : passed type : ablkcipher async : yes blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 16 geniv : <default> name : ecb(aes) driver : ecb-aes-aesni module : kernel priority : 400 refcnt : 1 selftest : passed type : ablkcipher async : yes blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 0 geniv : <default> name : __cbc-aes-aesni driver : __driver-cbc-aes-aesni module : kernel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 0 geniv : <default> name : __ecb-aes-aesni driver : __driver-ecb-aes-aesni module : kernel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 0 geniv : <default> name : __aes-aesni driver : __driver-aes-aesni module : kernel priority : 0 refcnt : 17 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : aes driver : aes-aesni module : kernel priority : 300 refcnt : 3 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : aes driver : aes-asm module : kernel priority : 200 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32
name : xts(aes) driver : xts-aes-aesni module : kernel priority : 400 refcnt : 1 selftest : passed type : givcipher async : yes blocksize : 16 min keysize : 32 max keysize : 64 ivsize : 16 geniv : eseqiv name : xts(aes) driver : xts(aes-aesni) module : xts priority : 300 refcnt : 1 selftest : passed type : blkcipher blocksize : 16 min keysize : 32 max keysize : 64 ivsize : 16 geniv : <default> name : xts(aes) driver : xts-aes-aesni module : aesni_intel priority : 400 refcnt : 1 selftest : passed type : ablkcipher async : yes blocksize : 16 min keysize : 32 max keysize : 64 ivsize : 16 geniv : <default> name : pcbc(aes) driver : pcbc-aes-aesni module : aesni_intel priority : 400 refcnt : 1 selftest : passed type : ablkcipher async : yes blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 16 geniv : <default> name : lrw(aes) driver : lrw-aes-aesni module : aesni_intel priority : 400 refcnt : 1 selftest : passed type : ablkcipher async : yes blocksize : 16 min keysize : 32 max keysize : 48 ivsize : 16 geniv : <default> name : rfc3686(ctr(aes)) driver : rfc3686-ctr-aes-aesni module : aesni_intel priority : 400 refcnt : 1 selftest : passed type : ablkcipher async : yes blocksize : 1 min keysize : 20 max keysize : 36 ivsize : 8 geniv : seqiv name : rfc4106(gcm(aes)) driver : rfc4106-gcm-aesni module : aesni_intel priority : 400 refcnt : 1 selftest : passed type : nivaead async : yes blocksize : 1 ivsize : 8 maxauthsize : 16 geniv : seqiv name : __gcm-aes-aesni driver : __driver-gcm-aes-aesni module : aesni_intel priority : 0 refcnt : 1 selftest : passed type : aead async : no blocksize : 1 ivsize : 0 maxauthsize : 0 geniv : <built-in> name : ctr(aes) driver : ctr-aes-aesni module : aesni_intel priority : 400 refcnt : 1 selftest : passed type : ablkcipher async : yes blocksize : 1 min keysize : 16 max keysize : 32 ivsize : 16 geniv : chainiv name : __ctr-aes-aesni driver : __driver-ctr-aes-aesni module : aesni_intel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 1 min keysize : 16 max keysize : 32 ivsize : 16 geniv : <default> name : cbc(aes) driver : cbc-aes-aesni module : aesni_intel priority : 400 refcnt : 1 selftest : passed type : ablkcipher async : yes blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 16 geniv : <default> name : ecb(aes) driver : ecb-aes-aesni module : aesni_intel priority : 400 refcnt : 1 selftest : passed type : ablkcipher async : yes blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 0 geniv : <default> name : __cbc-aes-aesni driver : __driver-cbc-aes-aesni module : aesni_intel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 0 geniv : <default> name : __ecb-aes-aesni driver : __driver-ecb-aes-aesni module : aesni_intel priority : 0 refcnt : 1 selftest : passed type : blkcipher blocksize : 16 min keysize : 16 max keysize : 32 ivsize : 0 geniv : <default> name : __aes-aesni driver : __driver-aes-aesni module : aesni_intel priority : 0 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : aes driver : aes-aesni module : aesni_intel priority : 300 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : aes driver : aes-asm module : aes_x86_64 priority : 200 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : aes driver : aes-generic module : aes_generic priority : 100 refcnt : 1 selftest : passed type : cipher blocksize : 16 min keysize : 16 max keysize : 32 name : stdrng driver : krng module : kernel priority : 200 refcnt : 2 selftest : passed type : rng seedsize : 0 name : crc32c driver : crc32c-generic module : kernel priority : 100 refcnt : 1 selftest : passed type : shash blocksize : 1 digestsize : 4 name : sha1 driver : sha1-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 20 name : md5 driver : md5-generic module : kernel priority : 0 refcnt : 1 selftest : passed type : shash blocksize : 64 digestsize : 16