Commit 10803624 authored by David S. Miller's avatar David S. Miller

sparc64: Adjust crypto priorities.

Make the crypto opcode implementations have a higher priority than
those provides by the ring buffer based Niagara crypto device.

Also, several crypto opcode hashes were not setting the priority value
at all.
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c69ad0a3
...@@ -26,6 +26,8 @@ ...@@ -26,6 +26,8 @@
#include <asm/pstate.h> #include <asm/pstate.h>
#include <asm/elf.h> #include <asm/elf.h>
#include "opcodes.h"
struct aes_ops { struct aes_ops {
void (*encrypt)(const u64 *key, const u32 *input, u32 *output); void (*encrypt)(const u64 *key, const u32 *input, u32 *output);
void (*decrypt)(const u64 *key, const u32 *input, u32 *output); void (*decrypt)(const u64 *key, const u32 *input, u32 *output);
...@@ -356,7 +358,7 @@ static int ctr_crypt(struct blkcipher_desc *desc, ...@@ -356,7 +358,7 @@ static int ctr_crypt(struct blkcipher_desc *desc,
static struct crypto_alg algs[] = { { static struct crypto_alg algs[] = { {
.cra_name = "aes", .cra_name = "aes",
.cra_driver_name = "aes-sparc64", .cra_driver_name = "aes-sparc64",
.cra_priority = 150, .cra_priority = SPARC_CR_OPCODE_PRIORITY,
.cra_flags = CRYPTO_ALG_TYPE_CIPHER, .cra_flags = CRYPTO_ALG_TYPE_CIPHER,
.cra_blocksize = AES_BLOCK_SIZE, .cra_blocksize = AES_BLOCK_SIZE,
.cra_ctxsize = sizeof(struct crypto_sparc64_aes_ctx), .cra_ctxsize = sizeof(struct crypto_sparc64_aes_ctx),
...@@ -374,7 +376,7 @@ static struct crypto_alg algs[] = { { ...@@ -374,7 +376,7 @@ static struct crypto_alg algs[] = { {
}, { }, {
.cra_name = "ecb(aes)", .cra_name = "ecb(aes)",
.cra_driver_name = "ecb-aes-sparc64", .cra_driver_name = "ecb-aes-sparc64",
.cra_priority = 150, .cra_priority = SPARC_CR_OPCODE_PRIORITY,
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER, .cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER,
.cra_blocksize = AES_BLOCK_SIZE, .cra_blocksize = AES_BLOCK_SIZE,
.cra_ctxsize = sizeof(struct crypto_sparc64_aes_ctx), .cra_ctxsize = sizeof(struct crypto_sparc64_aes_ctx),
...@@ -393,7 +395,7 @@ static struct crypto_alg algs[] = { { ...@@ -393,7 +395,7 @@ static struct crypto_alg algs[] = { {
}, { }, {
.cra_name = "cbc(aes)", .cra_name = "cbc(aes)",
.cra_driver_name = "cbc-aes-sparc64", .cra_driver_name = "cbc-aes-sparc64",
.cra_priority = 150, .cra_priority = SPARC_CR_OPCODE_PRIORITY,
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER, .cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER,
.cra_blocksize = AES_BLOCK_SIZE, .cra_blocksize = AES_BLOCK_SIZE,
.cra_ctxsize = sizeof(struct crypto_sparc64_aes_ctx), .cra_ctxsize = sizeof(struct crypto_sparc64_aes_ctx),
...@@ -412,7 +414,7 @@ static struct crypto_alg algs[] = { { ...@@ -412,7 +414,7 @@ static struct crypto_alg algs[] = { {
}, { }, {
.cra_name = "ctr(aes)", .cra_name = "ctr(aes)",
.cra_driver_name = "ctr-aes-sparc64", .cra_driver_name = "ctr-aes-sparc64",
.cra_priority = 150, .cra_priority = SPARC_CR_OPCODE_PRIORITY,
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER, .cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER,
.cra_blocksize = AES_BLOCK_SIZE, .cra_blocksize = AES_BLOCK_SIZE,
.cra_ctxsize = sizeof(struct crypto_sparc64_aes_ctx), .cra_ctxsize = sizeof(struct crypto_sparc64_aes_ctx),
......
...@@ -14,6 +14,8 @@ ...@@ -14,6 +14,8 @@
#include <asm/pstate.h> #include <asm/pstate.h>
#include <asm/elf.h> #include <asm/elf.h>
#include "opcodes.h"
#define CAMELLIA_MIN_KEY_SIZE 16 #define CAMELLIA_MIN_KEY_SIZE 16
#define CAMELLIA_MAX_KEY_SIZE 32 #define CAMELLIA_MAX_KEY_SIZE 32
#define CAMELLIA_BLOCK_SIZE 16 #define CAMELLIA_BLOCK_SIZE 16
...@@ -219,7 +221,7 @@ static int cbc_decrypt(struct blkcipher_desc *desc, ...@@ -219,7 +221,7 @@ static int cbc_decrypt(struct blkcipher_desc *desc,
static struct crypto_alg algs[] = { { static struct crypto_alg algs[] = { {
.cra_name = "camellia", .cra_name = "camellia",
.cra_driver_name = "camellia-sparc64", .cra_driver_name = "camellia-sparc64",
.cra_priority = 150, .cra_priority = SPARC_CR_OPCODE_PRIORITY,
.cra_flags = CRYPTO_ALG_TYPE_CIPHER, .cra_flags = CRYPTO_ALG_TYPE_CIPHER,
.cra_blocksize = CAMELLIA_BLOCK_SIZE, .cra_blocksize = CAMELLIA_BLOCK_SIZE,
.cra_ctxsize = sizeof(struct camellia_sparc64_ctx), .cra_ctxsize = sizeof(struct camellia_sparc64_ctx),
...@@ -237,7 +239,7 @@ static struct crypto_alg algs[] = { { ...@@ -237,7 +239,7 @@ static struct crypto_alg algs[] = { {
}, { }, {
.cra_name = "ecb(camellia)", .cra_name = "ecb(camellia)",
.cra_driver_name = "ecb-camellia-sparc64", .cra_driver_name = "ecb-camellia-sparc64",
.cra_priority = 150, .cra_priority = SPARC_CR_OPCODE_PRIORITY,
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER, .cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER,
.cra_blocksize = CAMELLIA_BLOCK_SIZE, .cra_blocksize = CAMELLIA_BLOCK_SIZE,
.cra_ctxsize = sizeof(struct camellia_sparc64_ctx), .cra_ctxsize = sizeof(struct camellia_sparc64_ctx),
...@@ -256,7 +258,7 @@ static struct crypto_alg algs[] = { { ...@@ -256,7 +258,7 @@ static struct crypto_alg algs[] = { {
}, { }, {
.cra_name = "cbc(camellia)", .cra_name = "cbc(camellia)",
.cra_driver_name = "cbc-camellia-sparc64", .cra_driver_name = "cbc-camellia-sparc64",
.cra_priority = 150, .cra_priority = SPARC_CR_OPCODE_PRIORITY,
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER, .cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER,
.cra_blocksize = CAMELLIA_BLOCK_SIZE, .cra_blocksize = CAMELLIA_BLOCK_SIZE,
.cra_ctxsize = sizeof(struct camellia_sparc64_ctx), .cra_ctxsize = sizeof(struct camellia_sparc64_ctx),
......
...@@ -20,6 +20,8 @@ ...@@ -20,6 +20,8 @@
#include <asm/pstate.h> #include <asm/pstate.h>
#include <asm/elf.h> #include <asm/elf.h>
#include "opcodes.h"
/* /*
* Setting the seed allows arbitrary accumulators and flexible XOR policy * Setting the seed allows arbitrary accumulators and flexible XOR policy
* If your algorithm starts with ~0, then XOR with ~0 before you set * If your algorithm starts with ~0, then XOR with ~0 before you set
...@@ -130,7 +132,7 @@ static struct shash_alg alg = { ...@@ -130,7 +132,7 @@ static struct shash_alg alg = {
.base = { .base = {
.cra_name = "crc32c", .cra_name = "crc32c",
.cra_driver_name = "crc32c-sparc64", .cra_driver_name = "crc32c-sparc64",
.cra_priority = 150, .cra_priority = SPARC_CR_OPCODE_PRIORITY,
.cra_blocksize = CHKSUM_BLOCK_SIZE, .cra_blocksize = CHKSUM_BLOCK_SIZE,
.cra_ctxsize = sizeof(u32), .cra_ctxsize = sizeof(u32),
.cra_alignmask = 7, .cra_alignmask = 7,
......
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
#include <asm/pstate.h> #include <asm/pstate.h>
#include <asm/elf.h> #include <asm/elf.h>
#include "opcodes.h"
struct des_sparc64_ctx { struct des_sparc64_ctx {
u64 encrypt_expkey[DES_EXPKEY_WORDS / 2]; u64 encrypt_expkey[DES_EXPKEY_WORDS / 2];
u64 decrypt_expkey[DES_EXPKEY_WORDS / 2]; u64 decrypt_expkey[DES_EXPKEY_WORDS / 2];
...@@ -371,7 +373,7 @@ static int cbc3_decrypt(struct blkcipher_desc *desc, ...@@ -371,7 +373,7 @@ static int cbc3_decrypt(struct blkcipher_desc *desc,
static struct crypto_alg algs[] = { { static struct crypto_alg algs[] = { {
.cra_name = "des", .cra_name = "des",
.cra_driver_name = "des-sparc64", .cra_driver_name = "des-sparc64",
.cra_priority = 150, .cra_priority = SPARC_CR_OPCODE_PRIORITY,
.cra_flags = CRYPTO_ALG_TYPE_CIPHER, .cra_flags = CRYPTO_ALG_TYPE_CIPHER,
.cra_blocksize = DES_BLOCK_SIZE, .cra_blocksize = DES_BLOCK_SIZE,
.cra_ctxsize = sizeof(struct des_sparc64_ctx), .cra_ctxsize = sizeof(struct des_sparc64_ctx),
...@@ -389,7 +391,7 @@ static struct crypto_alg algs[] = { { ...@@ -389,7 +391,7 @@ static struct crypto_alg algs[] = { {
}, { }, {
.cra_name = "ecb(des)", .cra_name = "ecb(des)",
.cra_driver_name = "ecb-des-sparc64", .cra_driver_name = "ecb-des-sparc64",
.cra_priority = 150, .cra_priority = SPARC_CR_OPCODE_PRIORITY,
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER, .cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER,
.cra_blocksize = DES_BLOCK_SIZE, .cra_blocksize = DES_BLOCK_SIZE,
.cra_ctxsize = sizeof(struct des_sparc64_ctx), .cra_ctxsize = sizeof(struct des_sparc64_ctx),
...@@ -408,7 +410,7 @@ static struct crypto_alg algs[] = { { ...@@ -408,7 +410,7 @@ static struct crypto_alg algs[] = { {
}, { }, {
.cra_name = "cbc(des)", .cra_name = "cbc(des)",
.cra_driver_name = "cbc-des-sparc64", .cra_driver_name = "cbc-des-sparc64",
.cra_priority = 150, .cra_priority = SPARC_CR_OPCODE_PRIORITY,
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER, .cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER,
.cra_blocksize = DES_BLOCK_SIZE, .cra_blocksize = DES_BLOCK_SIZE,
.cra_ctxsize = sizeof(struct des_sparc64_ctx), .cra_ctxsize = sizeof(struct des_sparc64_ctx),
...@@ -427,7 +429,7 @@ static struct crypto_alg algs[] = { { ...@@ -427,7 +429,7 @@ static struct crypto_alg algs[] = { {
}, { }, {
.cra_name = "des3_ede", .cra_name = "des3_ede",
.cra_driver_name = "des3_ede-sparc64", .cra_driver_name = "des3_ede-sparc64",
.cra_priority = 150, .cra_priority = SPARC_CR_OPCODE_PRIORITY,
.cra_flags = CRYPTO_ALG_TYPE_CIPHER, .cra_flags = CRYPTO_ALG_TYPE_CIPHER,
.cra_blocksize = DES3_EDE_BLOCK_SIZE, .cra_blocksize = DES3_EDE_BLOCK_SIZE,
.cra_ctxsize = sizeof(struct des3_ede_sparc64_ctx), .cra_ctxsize = sizeof(struct des3_ede_sparc64_ctx),
...@@ -445,7 +447,7 @@ static struct crypto_alg algs[] = { { ...@@ -445,7 +447,7 @@ static struct crypto_alg algs[] = { {
}, { }, {
.cra_name = "ecb(des3_ede)", .cra_name = "ecb(des3_ede)",
.cra_driver_name = "ecb-des3_ede-sparc64", .cra_driver_name = "ecb-des3_ede-sparc64",
.cra_priority = 150, .cra_priority = SPARC_CR_OPCODE_PRIORITY,
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER, .cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER,
.cra_blocksize = DES3_EDE_BLOCK_SIZE, .cra_blocksize = DES3_EDE_BLOCK_SIZE,
.cra_ctxsize = sizeof(struct des3_ede_sparc64_ctx), .cra_ctxsize = sizeof(struct des3_ede_sparc64_ctx),
...@@ -464,7 +466,7 @@ static struct crypto_alg algs[] = { { ...@@ -464,7 +466,7 @@ static struct crypto_alg algs[] = { {
}, { }, {
.cra_name = "cbc(des3_ede)", .cra_name = "cbc(des3_ede)",
.cra_driver_name = "cbc-des3_ede-sparc64", .cra_driver_name = "cbc-des3_ede-sparc64",
.cra_priority = 150, .cra_priority = SPARC_CR_OPCODE_PRIORITY,
.cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER, .cra_flags = CRYPTO_ALG_TYPE_BLKCIPHER,
.cra_blocksize = DES3_EDE_BLOCK_SIZE, .cra_blocksize = DES3_EDE_BLOCK_SIZE,
.cra_ctxsize = sizeof(struct des3_ede_sparc64_ctx), .cra_ctxsize = sizeof(struct des3_ede_sparc64_ctx),
......
...@@ -24,6 +24,8 @@ ...@@ -24,6 +24,8 @@
#include <asm/pstate.h> #include <asm/pstate.h>
#include <asm/elf.h> #include <asm/elf.h>
#include "opcodes.h"
asmlinkage void md5_sparc64_transform(u32 *digest, const char *data, asmlinkage void md5_sparc64_transform(u32 *digest, const char *data,
unsigned int rounds); unsigned int rounds);
...@@ -141,7 +143,7 @@ static struct shash_alg alg = { ...@@ -141,7 +143,7 @@ static struct shash_alg alg = {
.base = { .base = {
.cra_name = "md5", .cra_name = "md5",
.cra_driver_name= "md5-sparc64", .cra_driver_name= "md5-sparc64",
.cra_priority = 150, .cra_priority = SPARC_CR_OPCODE_PRIORITY,
.cra_flags = CRYPTO_ALG_TYPE_SHASH, .cra_flags = CRYPTO_ALG_TYPE_SHASH,
.cra_blocksize = MD5_HMAC_BLOCK_SIZE, .cra_blocksize = MD5_HMAC_BLOCK_SIZE,
.cra_module = THIS_MODULE, .cra_module = THIS_MODULE,
......
#ifndef _OPCODES_H #ifndef _OPCODES_H
#define _OPCODES_H #define _OPCODES_H
#define SPARC_CR_OPCODE_PRIORITY 300
#define F3F(x,y,z) (((x)<<30)|((y)<<19)|((z)<<5)) #define F3F(x,y,z) (((x)<<30)|((y)<<19)|((z)<<5))
#define FPD_ENCODE(x) (((x) >> 5) | ((x) & ~(0x20))) #define FPD_ENCODE(x) (((x) >> 5) | ((x) & ~(0x20)))
......
...@@ -21,6 +21,8 @@ ...@@ -21,6 +21,8 @@
#include <asm/pstate.h> #include <asm/pstate.h>
#include <asm/elf.h> #include <asm/elf.h>
#include "opcodes.h"
asmlinkage void sha1_sparc64_transform(u32 *digest, const char *data, asmlinkage void sha1_sparc64_transform(u32 *digest, const char *data,
unsigned int rounds); unsigned int rounds);
...@@ -136,7 +138,7 @@ static struct shash_alg alg = { ...@@ -136,7 +138,7 @@ static struct shash_alg alg = {
.base = { .base = {
.cra_name = "sha1", .cra_name = "sha1",
.cra_driver_name= "sha1-sparc64", .cra_driver_name= "sha1-sparc64",
.cra_priority = 150, .cra_priority = SPARC_CR_OPCODE_PRIORITY,
.cra_flags = CRYPTO_ALG_TYPE_SHASH, .cra_flags = CRYPTO_ALG_TYPE_SHASH,
.cra_blocksize = SHA1_BLOCK_SIZE, .cra_blocksize = SHA1_BLOCK_SIZE,
.cra_module = THIS_MODULE, .cra_module = THIS_MODULE,
......
...@@ -21,6 +21,8 @@ ...@@ -21,6 +21,8 @@
#include <asm/pstate.h> #include <asm/pstate.h>
#include <asm/elf.h> #include <asm/elf.h>
#include "opcodes.h"
asmlinkage void sha256_sparc64_transform(u32 *digest, const char *data, asmlinkage void sha256_sparc64_transform(u32 *digest, const char *data,
unsigned int rounds); unsigned int rounds);
...@@ -166,6 +168,7 @@ static struct shash_alg sha256 = { ...@@ -166,6 +168,7 @@ static struct shash_alg sha256 = {
.base = { .base = {
.cra_name = "sha256", .cra_name = "sha256",
.cra_driver_name= "sha256-sparc64", .cra_driver_name= "sha256-sparc64",
.cra_priority = SPARC_CR_OPCODE_PRIORITY,
.cra_flags = CRYPTO_ALG_TYPE_SHASH, .cra_flags = CRYPTO_ALG_TYPE_SHASH,
.cra_blocksize = SHA256_BLOCK_SIZE, .cra_blocksize = SHA256_BLOCK_SIZE,
.cra_module = THIS_MODULE, .cra_module = THIS_MODULE,
...@@ -181,6 +184,7 @@ static struct shash_alg sha224 = { ...@@ -181,6 +184,7 @@ static struct shash_alg sha224 = {
.base = { .base = {
.cra_name = "sha224", .cra_name = "sha224",
.cra_driver_name= "sha224-sparc64", .cra_driver_name= "sha224-sparc64",
.cra_priority = SPARC_CR_OPCODE_PRIORITY,
.cra_flags = CRYPTO_ALG_TYPE_SHASH, .cra_flags = CRYPTO_ALG_TYPE_SHASH,
.cra_blocksize = SHA224_BLOCK_SIZE, .cra_blocksize = SHA224_BLOCK_SIZE,
.cra_module = THIS_MODULE, .cra_module = THIS_MODULE,
......
...@@ -20,6 +20,8 @@ ...@@ -20,6 +20,8 @@
#include <asm/pstate.h> #include <asm/pstate.h>
#include <asm/elf.h> #include <asm/elf.h>
#include "opcodes.h"
asmlinkage void sha512_sparc64_transform(u64 *digest, const char *data, asmlinkage void sha512_sparc64_transform(u64 *digest, const char *data,
unsigned int rounds); unsigned int rounds);
...@@ -151,6 +153,7 @@ static struct shash_alg sha512 = { ...@@ -151,6 +153,7 @@ static struct shash_alg sha512 = {
.base = { .base = {
.cra_name = "sha512", .cra_name = "sha512",
.cra_driver_name= "sha512-sparc64", .cra_driver_name= "sha512-sparc64",
.cra_priority = SPARC_CR_OPCODE_PRIORITY,
.cra_flags = CRYPTO_ALG_TYPE_SHASH, .cra_flags = CRYPTO_ALG_TYPE_SHASH,
.cra_blocksize = SHA512_BLOCK_SIZE, .cra_blocksize = SHA512_BLOCK_SIZE,
.cra_module = THIS_MODULE, .cra_module = THIS_MODULE,
...@@ -166,6 +169,7 @@ static struct shash_alg sha384 = { ...@@ -166,6 +169,7 @@ static struct shash_alg sha384 = {
.base = { .base = {
.cra_name = "sha384", .cra_name = "sha384",
.cra_driver_name= "sha384-sparc64", .cra_driver_name= "sha384-sparc64",
.cra_priority = SPARC_CR_OPCODE_PRIORITY,
.cra_flags = CRYPTO_ALG_TYPE_SHASH, .cra_flags = CRYPTO_ALG_TYPE_SHASH,
.cra_blocksize = SHA384_BLOCK_SIZE, .cra_blocksize = SHA384_BLOCK_SIZE,
.cra_module = THIS_MODULE, .cra_module = THIS_MODULE,
......
...@@ -42,7 +42,7 @@ MODULE_DESCRIPTION("Niagara2 Crypto driver"); ...@@ -42,7 +42,7 @@ MODULE_DESCRIPTION("Niagara2 Crypto driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_VERSION(DRV_MODULE_VERSION); MODULE_VERSION(DRV_MODULE_VERSION);
#define N2_CRA_PRIORITY 300 #define N2_CRA_PRIORITY 200
static DEFINE_MUTEX(spu_lock); static DEFINE_MUTEX(spu_lock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment