Commit 0a1d0152 authored by Kai Ye's avatar Kai Ye Committed by Zhiqi Song
Browse files

crypto: hisilicon/sec - misc cleanups

driver inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I7BANJ


CVE: NA

----------------------------------------------------------------------

some misc cleanups, include main and crypto file.

Signed-off-by: default avatarKai Ye <yekai13@huawei.com>
Signed-off-by: default avatarJiangShui Yang <yangjiangshui@h-partners.com>
parent d8fcd2f3
Loading
Loading
Loading
Loading
+28 −35
Original line number Diff line number Diff line
@@ -115,7 +115,7 @@ struct sec_aead {
};

/* Get an en/de-cipher queue cyclically to balance load over queues of TFM */
static inline int sec_alloc_queue_id(struct sec_ctx *ctx, struct sec_req *req)
static inline u32 sec_alloc_queue_id(struct sec_ctx *ctx, struct sec_req *req)
{
	if (req->c_req.encrypt)
		return (u32)atomic_inc_return(&ctx->enc_qcyclic) %
@@ -846,8 +846,6 @@ static int sec_skcipher_setkey(struct crypto_skcipher *tfm, const u8 *key,
	case SEC_CALG_SM4:
		ret = sec_skcipher_aes_sm4_setkey(c_ctx, keylen, c_mode);
		break;
	default:
		return -EINVAL;
	}

	if (ret) {
@@ -866,27 +864,6 @@ static int sec_skcipher_setkey(struct crypto_skcipher *tfm, const u8 *key,
	return 0;
}

#define GEN_SEC_SETKEY_FUNC(name, c_alg, c_mode)			\
static int sec_setkey_##name(struct crypto_skcipher *tfm, const u8 *key,\
	u32 keylen)							\
{									\
	return sec_skcipher_setkey(tfm, key, keylen, c_alg, c_mode);	\
}

GEN_SEC_SETKEY_FUNC(aes_ecb, SEC_CALG_AES, SEC_CMODE_ECB)
GEN_SEC_SETKEY_FUNC(aes_cbc, SEC_CALG_AES, SEC_CMODE_CBC)
GEN_SEC_SETKEY_FUNC(aes_xts, SEC_CALG_AES, SEC_CMODE_XTS)
GEN_SEC_SETKEY_FUNC(aes_ofb, SEC_CALG_AES, SEC_CMODE_OFB)
GEN_SEC_SETKEY_FUNC(aes_cfb, SEC_CALG_AES, SEC_CMODE_CFB)
GEN_SEC_SETKEY_FUNC(aes_ctr, SEC_CALG_AES, SEC_CMODE_CTR)
GEN_SEC_SETKEY_FUNC(3des_ecb, SEC_CALG_3DES, SEC_CMODE_ECB)
GEN_SEC_SETKEY_FUNC(3des_cbc, SEC_CALG_3DES, SEC_CMODE_CBC)
GEN_SEC_SETKEY_FUNC(sm4_xts, SEC_CALG_SM4, SEC_CMODE_XTS)
GEN_SEC_SETKEY_FUNC(sm4_cbc, SEC_CALG_SM4, SEC_CMODE_CBC)
GEN_SEC_SETKEY_FUNC(sm4_ofb, SEC_CALG_SM4, SEC_CMODE_OFB)
GEN_SEC_SETKEY_FUNC(sm4_cfb, SEC_CALG_SM4, SEC_CMODE_CFB)
GEN_SEC_SETKEY_FUNC(sm4_ctr, SEC_CALG_SM4, SEC_CMODE_CTR)

static int sec_cipher_pbuf_map(struct sec_ctx *ctx, struct sec_req *req,
			struct scatterlist *src)
{
@@ -1368,7 +1345,7 @@ static int sec_skcipher_bd_fill_v3(struct sec_ctx *ctx, struct sec_req *req)
	sec_sqe3->bd_param = cpu_to_le32(bd_param);

	sec_sqe3->c_len_ivin |= cpu_to_le32(c_req->c_len);
	sec_sqe3->tag = cpu_to_le64(req);
	sec_sqe3->tag = cpu_to_le64((unsigned long)(uintptr_t)req);

	return 0;
}
@@ -2093,7 +2070,7 @@ static int sec_skcipher_soft_crypto(struct sec_ctx *ctx,

	skcipher_request_set_sync_tfm(subreq, c_ctx->fbtfm);

	/* software need sync mode to do crypto */
	/* Software need sync mode to do crypto */
	skcipher_request_set_callback(subreq, sreq->base.flags,
				      NULL, NULL);
	skcipher_request_set_crypt(subreq, sreq->src, sreq->dst,
@@ -2146,8 +2123,29 @@ static int sec_skcipher_decrypt(struct skcipher_request *sk_req)
	return sec_skcipher_crypto(sk_req, false);
}

#define SEC_SKCIPHER_GEN_ALG(sec_cra_name, sec_set_key, sec_min_key_size, \
	sec_max_key_size, ctx_init, ctx_exit, blk_size, iv_size)\
#define GEN_SEC_SETKEY_FUNC(name, c_alg, c_mode)	                \
static int sec_setkey_##name(struct crypto_skcipher *tfm,	        \
	const u8 *key, u32 keylen)                                      \
{	                                                                \
	return sec_skcipher_setkey(tfm, key, keylen, c_alg, c_mode); \
}

GEN_SEC_SETKEY_FUNC(aes_ecb, SEC_CALG_AES, SEC_CMODE_ECB)
GEN_SEC_SETKEY_FUNC(aes_cbc, SEC_CALG_AES, SEC_CMODE_CBC)
GEN_SEC_SETKEY_FUNC(aes_xts, SEC_CALG_AES, SEC_CMODE_XTS)
GEN_SEC_SETKEY_FUNC(aes_ofb, SEC_CALG_AES, SEC_CMODE_OFB)
GEN_SEC_SETKEY_FUNC(aes_cfb, SEC_CALG_AES, SEC_CMODE_CFB)
GEN_SEC_SETKEY_FUNC(aes_ctr, SEC_CALG_AES, SEC_CMODE_CTR)
GEN_SEC_SETKEY_FUNC(3des_ecb, SEC_CALG_3DES, SEC_CMODE_ECB)
GEN_SEC_SETKEY_FUNC(3des_cbc, SEC_CALG_3DES, SEC_CMODE_CBC)
GEN_SEC_SETKEY_FUNC(sm4_xts, SEC_CALG_SM4, SEC_CMODE_XTS)
GEN_SEC_SETKEY_FUNC(sm4_cbc, SEC_CALG_SM4, SEC_CMODE_CBC)
GEN_SEC_SETKEY_FUNC(sm4_ofb, SEC_CALG_SM4, SEC_CMODE_OFB)
GEN_SEC_SETKEY_FUNC(sm4_cfb, SEC_CALG_SM4, SEC_CMODE_CFB)
GEN_SEC_SETKEY_FUNC(sm4_ctr, SEC_CALG_SM4, SEC_CMODE_CTR)

#define SEC_SKCIPHER_ALG(sec_cra_name, sec_set_key, \
	sec_min_key_size, sec_max_key_size, blk_size, iv_size)\
{\
	.base = {\
		.cra_name = sec_cra_name,\
@@ -2159,8 +2157,8 @@ static int sec_skcipher_decrypt(struct skcipher_request *sk_req)
		.cra_ctxsize = sizeof(struct sec_ctx),\
		.cra_module = THIS_MODULE,\
	},\
	.init = ctx_init,\
	.exit = ctx_exit,\
	.init = sec_skcipher_ctx_init,\
	.exit = sec_skcipher_ctx_exit,\
	.setkey = sec_set_key,\
	.decrypt = sec_skcipher_decrypt,\
	.encrypt = sec_skcipher_encrypt,\
@@ -2169,11 +2167,6 @@ static int sec_skcipher_decrypt(struct skcipher_request *sk_req)
	.ivsize = iv_size,\
}

#define SEC_SKCIPHER_ALG(name, key_func, min_key_size, \
	max_key_size, blk_size, iv_size) \
	SEC_SKCIPHER_GEN_ALG(name, key_func, min_key_size, max_key_size, \
	sec_skcipher_ctx_init, sec_skcipher_ctx_exit, blk_size, iv_size)

static struct sec_skcipher sec_skciphers[] = {
	{
		.alg_msk = BIT(0),
+19 −14
Original line number Diff line number Diff line
@@ -189,59 +189,59 @@ static const struct sec_dev_alg sec_dev_algs[] = { {
static const struct sec_hw_error sec_hw_errors[] = {
	{
		.int_msk = BIT(0),
		.msg = "sec_axi_rresp_err_rint"
		.msg = "sec_axi_rresp_err_rint",
	},
	{
		.int_msk = BIT(1),
		.msg = "sec_axi_bresp_err_rint"
		.msg = "sec_axi_bresp_err_rint",
	},
	{
		.int_msk = BIT(2),
		.msg = "sec_ecc_2bit_err_rint"
		.msg = "sec_ecc_2bit_err_rint",
	},
	{
		.int_msk = BIT(3),
		.msg = "sec_ecc_1bit_err_rint"
		.msg = "sec_ecc_1bit_err_rint",
	},
	{
		.int_msk = BIT(4),
		.msg = "sec_req_trng_timeout_rint"
		.msg = "sec_req_trng_timeout_rint",
	},
	{
		.int_msk = BIT(5),
		.msg = "sec_fsm_hbeat_rint"
		.msg = "sec_fsm_hbeat_rint",
	},
	{
		.int_msk = BIT(6),
		.msg = "sec_channel_req_rng_timeout_rint"
		.msg = "sec_channel_req_rng_timeout_rint",
	},
	{
		.int_msk = BIT(7),
		.msg = "sec_bd_err_rint"
		.msg = "sec_bd_err_rint",
	},
	{
		.int_msk = BIT(8),
		.msg = "sec_chain_buff_err_rint"
		.msg = "sec_chain_buff_err_rint",
	},
	{
		.int_msk = BIT(14),
		.msg = "sec_no_secure_access"
		.msg = "sec_no_secure_access",
	},
	{
		.int_msk = BIT(15),
		.msg = "sec_wrapping_key_auth_err"
		.msg = "sec_wrapping_key_auth_err",
	},
	{
		.int_msk = BIT(16),
		.msg = "sec_km_key_crc_fail"
		.msg = "sec_km_key_crc_fail",
	},
	{
		.int_msk = BIT(17),
		.msg = "sec_axi_poison_err"
		.msg = "sec_axi_poison_err",
	},
	{
		.int_msk = BIT(18),
		.msg = "sec_sva_err"
		.msg = "sec_sva_err",
	},
	{}
};
@@ -282,6 +282,11 @@ static const struct debugfs_reg32 sec_dfx_regs[] = {
	{"SEC_BD_SAA6                   ",  0x301C38},
	{"SEC_BD_SAA7                   ",  0x301C3C},
	{"SEC_BD_SAA8                   ",  0x301C40},
	{"SEC_RAS_CE_ENABLE             ",  0x301050},
	{"SEC_RAS_FE_ENABLE             ",  0x301054},
	{"SEC_RAS_NFE_ENABLE            ",  0x301058},
	{"SEC_REQ_TRNG_TIME_TH          ",  0x30112C},
	{"SEC_CHANNEL_RNG_REQ_THLD      ",  0x302110},
};

/* define the SEC's dfx regs region and region length */