Patch "crypto: vmx - Adding enable_kernel_vsx() to access VSX instructions" has been added to the 4.2-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
crypto: vmx - Adding enable_kernel_vsx() to access VSX instructions
to the 4.2-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
crypto-vmx-adding-enable_kernel_vsx-to-access-vsx-instructions.patch
and it can be found in the queue-4.2 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
2d6f0600b2cd755959527230ef5a6fba97bb762aMon Sep 17 00:00:00 2001
From: Leonidas Da Silva Barbosa <[email protected]>
Date: Mon, 13 Jul 2015 13:51:39 -0300
Subject: crypto: vmx - Adding enable_kernel_vsx() to access VSX instructions
From: Leonidas Da Silva Barbosa <[email protected]>
commit 2d6f0600b2cd755959527230ef5a6fba97bb762a upstream.
vmx-crypto driver make use of some VSX instructions which are only available if VSX is enabled. Running in cases where VSX are not enabled vmx-crypto fails in a VSX exception.
In order to fix this enable_kernel_vsx() was added to turn on VSX instructions for vmx-crypto.
--- drivers/crypto/vmx/aes.c | 3 +++ drivers/crypto/vmx/aes_cbc.c | 3 +++ drivers/crypto/vmx/aes_ctr.c | 3 +++ drivers/crypto/vmx/ghash.c | 4 ++++ 4 files changed, 13 insertions(+)
drivers/crypto/vmx/aes.c +3 -0
@@ -84,6 +84,7 @@ static int p8_aes_setkey(struct crypto_tpreempt_disable ();pagefault_disable ();enable_kernel_altivec (); +enable_kernel_vsx (); ret =aes_p8_set_encrypt_key (key, keylen *8 , &ctx->enc_key); ret +=aes_p8_set_decrypt_key (key, keylen *8 , &ctx->dec_key);pagefault_enable ();
@@ -103,6 +104,7 @@ static void p8_aes_encrypt(struct cryptopreempt_disable ();pagefault_disable ();enable_kernel_altivec (); +enable_kernel_vsx ();aes_p8_encrypt (src, dst, &ctx->enc_key);pagefault_enable ();preempt_enable ();
@@ -119,6 +121,7 @@ static void p8_aes_decrypt(struct cryptopreempt_disable ();pagefault_disable ();enable_kernel_altivec (); +enable_kernel_vsx ();aes_p8_decrypt (src, dst, &ctx->dec_key);pagefault_enable ();preempt_enable ();
drivers/crypto/vmx/aes_cbc.c +3 -0
@@ -85,6 +85,7 @@ static int p8_aes_cbc_setkey(struct cryppreempt_disable ();pagefault_disable ();enable_kernel_altivec (); +enable_kernel_vsx (); ret =aes_p8_set_encrypt_key (key, keylen *8 , &ctx->enc_key); ret +=aes_p8_set_decrypt_key (key, keylen *8 , &ctx->dec_key);pagefault_enable ();
@@ -115,6 +116,7 @@ static int p8_aes_cbc_encrypt(struct blkpreempt_disable ();pagefault_disable ();enable_kernel_altivec (); +enable_kernel_vsx ();blkcipher_walk_init (&walk, dst, src, nbytes); ret =blkcipher_walk_virt (desc, &walk);
@@ -155,6 +157,7 @@ static int p8_aes_cbc_decrypt(struct blkpreempt_disable ();pagefault_disable ();enable_kernel_altivec (); +enable_kernel_vsx ();blkcipher_walk_init (&walk, dst, src, nbytes); ret =blkcipher_walk_virt (desc, &walk);
drivers/crypto/vmx/aes_ctr.c +3 -0
@@ -82,6 +82,7 @@ static int p8_aes_ctr_setkey(struct cryppagefault_disable ();enable_kernel_altivec (); +enable_kernel_vsx (); ret =aes_p8_set_encrypt_key (key, keylen *8 , &ctx->enc_key);pagefault_enable ();
@@ -100,6 +101,7 @@ static void p8_aes_ctr_final(struct p8_apagefault_disable ();enable_kernel_altivec (); +enable_kernel_vsx ();aes_p8_encrypt (ctrblk, keystream, &ctx->enc_key);pagefault_enable ();
@@ -132,6 +134,7 @@ static int p8_aes_ctr_crypt(struct blkciwhile ((nbytes = walk.nbytes) >=AES_BLOCK_SIZE ) {pagefault_disable ();enable_kernel_altivec (); +enable_kernel_vsx (); aes_p8_ctr32_encrypt_blocks(walk.src.virt.addr, walk.dst.virt.addr, (nbytes &
drivers/crypto/vmx/ghash.c +4 -0
@@ -119,6 +119,7 @@ static int p8_ghash_setkey(struct cryptopreempt_disable ();pagefault_disable ();enable_kernel_altivec (); +enable_kernel_vsx ();enable_kernel_fp ();gcm_init_p8 (ctx->htable, (const u64 *) key);pagefault_enable ();
@@ -149,6 +150,7 @@ static int p8_ghash_update(struct shash_preempt_disable ();pagefault_disable ();enable_kernel_altivec (); +enable_kernel_vsx ();enable_kernel_fp ();gcm_ghash_p8 (dctx->shash, ctx->htable, dctx->buffer,GHASH_DIGEST_SIZE );
@@ -163,6 +165,7 @@ static int p8_ghash_update(struct shash_preempt_disable ();pagefault_disable ();enable_kernel_altivec (); +enable_kernel_vsx ();enable_kernel_fp ();gcm_ghash_p8 (dctx->shash, ctx->htable, src, len);pagefault_enable ();
@@ -193,6 +196,7 @@ static int p8_ghash_final(struct shash_dpreempt_disable ();pagefault_disable ();enable_kernel_altivec (); +enable_kernel_vsx ();enable_kernel_fp ();gcm_ghash_p8 (dctx->shash, ctx->htable, dctx->buffer,GHASH_DIGEST_SIZE );
Patches currently in stable-queue which might be from [email protected] are
queue-4.2/powerpc-uncomment-and-make-enable_kernel_vsx-routine-available.patch queue-4.2/crypto-vmx-adding-enable_kernel_vsx-to-access-vsx-instructions.patch