diff options
-rw-r--r-- | drivers/crypto/ccp/ccp-dev-v3.c | 32 | ||||
-rw-r--r-- | drivers/crypto/ccp/ccp-dev.c | 7 | ||||
-rw-r--r-- | drivers/crypto/ccp/ccp-dev.h | 43 | ||||
-rw-r--r-- | drivers/crypto/ccp/ccp-ops.c | 266 |
4 files changed, 175 insertions, 173 deletions
diff --git a/drivers/crypto/ccp/ccp-dev-v3.c b/drivers/crypto/ccp/ccp-dev-v3.c index 1a94d2ea4ff1..19eafb85708f 100644 --- a/drivers/crypto/ccp/ccp-dev-v3.c +++ b/drivers/crypto/ccp/ccp-dev-v3.c | |||
@@ -100,10 +100,10 @@ static int ccp_perform_aes(struct ccp_op *op) | |||
100 | | (op->u.aes.type << REQ1_AES_TYPE_SHIFT) | 100 | | (op->u.aes.type << REQ1_AES_TYPE_SHIFT) |
101 | | (op->u.aes.mode << REQ1_AES_MODE_SHIFT) | 101 | | (op->u.aes.mode << REQ1_AES_MODE_SHIFT) |
102 | | (op->u.aes.action << REQ1_AES_ACTION_SHIFT) | 102 | | (op->u.aes.action << REQ1_AES_ACTION_SHIFT) |
103 | | (op->ksb_key << REQ1_KEY_KSB_SHIFT); | 103 | | (op->sb_key << REQ1_KEY_KSB_SHIFT); |
104 | cr[1] = op->src.u.dma.length - 1; | 104 | cr[1] = op->src.u.dma.length - 1; |
105 | cr[2] = ccp_addr_lo(&op->src.u.dma); | 105 | cr[2] = ccp_addr_lo(&op->src.u.dma); |
106 | cr[3] = (op->ksb_ctx << REQ4_KSB_SHIFT) | 106 | cr[3] = (op->sb_ctx << REQ4_KSB_SHIFT) |
107 | | (CCP_MEMTYPE_SYSTEM << REQ4_MEMTYPE_SHIFT) | 107 | | (CCP_MEMTYPE_SYSTEM << REQ4_MEMTYPE_SHIFT) |
108 | | ccp_addr_hi(&op->src.u.dma); | 108 | | ccp_addr_hi(&op->src.u.dma); |
109 | cr[4] = ccp_addr_lo(&op->dst.u.dma); | 109 | cr[4] = ccp_addr_lo(&op->dst.u.dma); |
@@ -130,10 +130,10 @@ static int ccp_perform_xts_aes(struct ccp_op *op) | |||
130 | cr[0] = (CCP_ENGINE_XTS_AES_128 << REQ1_ENGINE_SHIFT) | 130 | cr[0] = (CCP_ENGINE_XTS_AES_128 << REQ1_ENGINE_SHIFT) |
131 | | (op->u.xts.action << REQ1_AES_ACTION_SHIFT) | 131 | | (op->u.xts.action << REQ1_AES_ACTION_SHIFT) |
132 | | (op->u.xts.unit_size << REQ1_XTS_AES_SIZE_SHIFT) | 132 | | (op->u.xts.unit_size << REQ1_XTS_AES_SIZE_SHIFT) |
133 | | (op->ksb_key << REQ1_KEY_KSB_SHIFT); | 133 | | (op->sb_key << REQ1_KEY_KSB_SHIFT); |
134 | cr[1] = op->src.u.dma.length - 1; | 134 | cr[1] = op->src.u.dma.length - 1; |
135 | cr[2] = ccp_addr_lo(&op->src.u.dma); | 135 | cr[2] = ccp_addr_lo(&op->src.u.dma); |
136 | cr[3] = (op->ksb_ctx << REQ4_KSB_SHIFT) | 136 | cr[3] = (op->sb_ctx << REQ4_KSB_SHIFT) |
137 | | (CCP_MEMTYPE_SYSTEM << REQ4_MEMTYPE_SHIFT) | 137 | | (CCP_MEMTYPE_SYSTEM << REQ4_MEMTYPE_SHIFT) |
138 | | ccp_addr_hi(&op->src.u.dma); | 138 | | ccp_addr_hi(&op->src.u.dma); |
139 | cr[4] = ccp_addr_lo(&op->dst.u.dma); | 139 | cr[4] = ccp_addr_lo(&op->dst.u.dma); |
@@ -159,7 +159,7 @@ static int ccp_perform_sha(struct ccp_op *op) | |||
159 | | REQ1_INIT; | 159 | | REQ1_INIT; |
160 | cr[1] = op->src.u.dma.length - 1; | 160 | cr[1] = op->src.u.dma.length - 1; |
161 | cr[2] = ccp_addr_lo(&op->src.u.dma); | 161 | cr[2] = ccp_addr_lo(&op->src.u.dma); |
162 | cr[3] = (op->ksb_ctx << REQ4_KSB_SHIFT) | 162 | cr[3] = (op->sb_ctx << REQ4_KSB_SHIFT) |
163 | | (CCP_MEMTYPE_SYSTEM << REQ4_MEMTYPE_SHIFT) | 163 | | (CCP_MEMTYPE_SYSTEM << REQ4_MEMTYPE_SHIFT) |
164 | | ccp_addr_hi(&op->src.u.dma); | 164 | | ccp_addr_hi(&op->src.u.dma); |
165 | 165 | ||
@@ -182,11 +182,11 @@ static int ccp_perform_rsa(struct ccp_op *op) | |||
182 | /* Fill out the register contents for REQ1 through REQ6 */ | 182 | /* Fill out the register contents for REQ1 through REQ6 */ |
183 | cr[0] = (CCP_ENGINE_RSA << REQ1_ENGINE_SHIFT) | 183 | cr[0] = (CCP_ENGINE_RSA << REQ1_ENGINE_SHIFT) |
184 | | (op->u.rsa.mod_size << REQ1_RSA_MOD_SIZE_SHIFT) | 184 | | (op->u.rsa.mod_size << REQ1_RSA_MOD_SIZE_SHIFT) |
185 | | (op->ksb_key << REQ1_KEY_KSB_SHIFT) | 185 | | (op->sb_key << REQ1_KEY_KSB_SHIFT) |
186 | | REQ1_EOM; | 186 | | REQ1_EOM; |
187 | cr[1] = op->u.rsa.input_len - 1; | 187 | cr[1] = op->u.rsa.input_len - 1; |
188 | cr[2] = ccp_addr_lo(&op->src.u.dma); | 188 | cr[2] = ccp_addr_lo(&op->src.u.dma); |
189 | cr[3] = (op->ksb_ctx << REQ4_KSB_SHIFT) | 189 | cr[3] = (op->sb_ctx << REQ4_KSB_SHIFT) |
190 | | (CCP_MEMTYPE_SYSTEM << REQ4_MEMTYPE_SHIFT) | 190 | | (CCP_MEMTYPE_SYSTEM << REQ4_MEMTYPE_SHIFT) |
191 | | ccp_addr_hi(&op->src.u.dma); | 191 | | ccp_addr_hi(&op->src.u.dma); |
192 | cr[4] = ccp_addr_lo(&op->dst.u.dma); | 192 | cr[4] = ccp_addr_lo(&op->dst.u.dma); |
@@ -216,10 +216,10 @@ static int ccp_perform_passthru(struct ccp_op *op) | |||
216 | | ccp_addr_hi(&op->src.u.dma); | 216 | | ccp_addr_hi(&op->src.u.dma); |
217 | 217 | ||
218 | if (op->u.passthru.bit_mod != CCP_PASSTHRU_BITWISE_NOOP) | 218 | if (op->u.passthru.bit_mod != CCP_PASSTHRU_BITWISE_NOOP) |
219 | cr[3] |= (op->ksb_key << REQ4_KSB_SHIFT); | 219 | cr[3] |= (op->sb_key << REQ4_KSB_SHIFT); |
220 | } else { | 220 | } else { |
221 | cr[2] = op->src.u.ksb * CCP_KSB_BYTES; | 221 | cr[2] = op->src.u.sb * CCP_SB_BYTES; |
222 | cr[3] = (CCP_MEMTYPE_KSB << REQ4_MEMTYPE_SHIFT); | 222 | cr[3] = (CCP_MEMTYPE_SB << REQ4_MEMTYPE_SHIFT); |
223 | } | 223 | } |
224 | 224 | ||
225 | if (op->dst.type == CCP_MEMTYPE_SYSTEM) { | 225 | if (op->dst.type == CCP_MEMTYPE_SYSTEM) { |
@@ -227,8 +227,8 @@ static int ccp_perform_passthru(struct ccp_op *op) | |||
227 | cr[5] = (CCP_MEMTYPE_SYSTEM << REQ6_MEMTYPE_SHIFT) | 227 | cr[5] = (CCP_MEMTYPE_SYSTEM << REQ6_MEMTYPE_SHIFT) |
228 | | ccp_addr_hi(&op->dst.u.dma); | 228 | | ccp_addr_hi(&op->dst.u.dma); |
229 | } else { | 229 | } else { |
230 | cr[4] = op->dst.u.ksb * CCP_KSB_BYTES; | 230 | cr[4] = op->dst.u.sb * CCP_SB_BYTES; |
231 | cr[5] = (CCP_MEMTYPE_KSB << REQ6_MEMTYPE_SHIFT); | 231 | cr[5] = (CCP_MEMTYPE_SB << REQ6_MEMTYPE_SHIFT); |
232 | } | 232 | } |
233 | 233 | ||
234 | if (op->eom) | 234 | if (op->eom) |
@@ -322,9 +322,9 @@ static int ccp_init(struct ccp_device *ccp) | |||
322 | cmd_q->dma_pool = dma_pool; | 322 | cmd_q->dma_pool = dma_pool; |
323 | 323 | ||
324 | /* Reserve 2 KSB regions for the queue */ | 324 | /* Reserve 2 KSB regions for the queue */ |
325 | cmd_q->ksb_key = KSB_START + ccp->ksb_start++; | 325 | cmd_q->sb_key = KSB_START + ccp->sb_start++; |
326 | cmd_q->ksb_ctx = KSB_START + ccp->ksb_start++; | 326 | cmd_q->sb_ctx = KSB_START + ccp->sb_start++; |
327 | ccp->ksb_count -= 2; | 327 | ccp->sb_count -= 2; |
328 | 328 | ||
329 | /* Preset some register values and masks that are queue | 329 | /* Preset some register values and masks that are queue |
330 | * number dependent | 330 | * number dependent |
@@ -376,7 +376,7 @@ static int ccp_init(struct ccp_device *ccp) | |||
376 | } | 376 | } |
377 | 377 | ||
378 | /* Initialize the queues used to wait for KSB space and suspend */ | 378 | /* Initialize the queues used to wait for KSB space and suspend */ |
379 | init_waitqueue_head(&ccp->ksb_queue); | 379 | init_waitqueue_head(&ccp->sb_queue); |
380 | init_waitqueue_head(&ccp->suspend_queue); | 380 | init_waitqueue_head(&ccp->suspend_queue); |
381 | 381 | ||
382 | /* Create a kthread for each queue */ | 382 | /* Create a kthread for each queue */ |
diff --git a/drivers/crypto/ccp/ccp-dev.c b/drivers/crypto/ccp/ccp-dev.c index 87b9f2bfa623..9c8cfbb6841f 100644 --- a/drivers/crypto/ccp/ccp-dev.c +++ b/drivers/crypto/ccp/ccp-dev.c | |||
@@ -4,6 +4,7 @@ | |||
4 | * Copyright (C) 2013,2016 Advanced Micro Devices, Inc. | 4 | * Copyright (C) 2013,2016 Advanced Micro Devices, Inc. |
5 | * | 5 | * |
6 | * Author: Tom Lendacky <thomas.lendacky@amd.com> | 6 | * Author: Tom Lendacky <thomas.lendacky@amd.com> |
7 | * Author: Gary R Hook <gary.hook@amd.com> | ||
7 | * | 8 | * |
8 | * This program is free software; you can redistribute it and/or modify | 9 | * This program is free software; you can redistribute it and/or modify |
9 | * it under the terms of the GNU General Public License version 2 as | 10 | * it under the terms of the GNU General Public License version 2 as |
@@ -397,9 +398,9 @@ struct ccp_device *ccp_alloc_struct(struct device *dev) | |||
397 | 398 | ||
398 | spin_lock_init(&ccp->cmd_lock); | 399 | spin_lock_init(&ccp->cmd_lock); |
399 | mutex_init(&ccp->req_mutex); | 400 | mutex_init(&ccp->req_mutex); |
400 | mutex_init(&ccp->ksb_mutex); | 401 | mutex_init(&ccp->sb_mutex); |
401 | ccp->ksb_count = KSB_COUNT; | 402 | ccp->sb_count = KSB_COUNT; |
402 | ccp->ksb_start = 0; | 403 | ccp->sb_start = 0; |
403 | 404 | ||
404 | ccp->ord = ccp_increment_unit_ordinal(); | 405 | ccp->ord = ccp_increment_unit_ordinal(); |
405 | snprintf(ccp->name, MAX_CCP_NAME_LEN, "ccp-%u", ccp->ord); | 406 | snprintf(ccp->name, MAX_CCP_NAME_LEN, "ccp-%u", ccp->ord); |
diff --git a/drivers/crypto/ccp/ccp-dev.h b/drivers/crypto/ccp/ccp-dev.h index 46d3ef30c6e9..1e30568d7c04 100644 --- a/drivers/crypto/ccp/ccp-dev.h +++ b/drivers/crypto/ccp/ccp-dev.h | |||
@@ -111,8 +111,7 @@ | |||
111 | #define KSB_START 77 | 111 | #define KSB_START 77 |
112 | #define KSB_END 127 | 112 | #define KSB_END 127 |
113 | #define KSB_COUNT (KSB_END - KSB_START + 1) | 113 | #define KSB_COUNT (KSB_END - KSB_START + 1) |
114 | #define CCP_KSB_BITS 256 | 114 | #define CCP_SB_BITS 256 |
115 | #define CCP_KSB_BYTES 32 | ||
116 | 115 | ||
117 | #define CCP_JOBID_MASK 0x0000003f | 116 | #define CCP_JOBID_MASK 0x0000003f |
118 | 117 | ||
@@ -121,19 +120,19 @@ | |||
121 | 120 | ||
122 | #define CCP_REVERSE_BUF_SIZE 64 | 121 | #define CCP_REVERSE_BUF_SIZE 64 |
123 | 122 | ||
124 | #define CCP_AES_KEY_KSB_COUNT 1 | 123 | #define CCP_AES_KEY_SB_COUNT 1 |
125 | #define CCP_AES_CTX_KSB_COUNT 1 | 124 | #define CCP_AES_CTX_SB_COUNT 1 |
126 | 125 | ||
127 | #define CCP_XTS_AES_KEY_KSB_COUNT 1 | 126 | #define CCP_XTS_AES_KEY_SB_COUNT 1 |
128 | #define CCP_XTS_AES_CTX_KSB_COUNT 1 | 127 | #define CCP_XTS_AES_CTX_SB_COUNT 1 |
129 | 128 | ||
130 | #define CCP_SHA_KSB_COUNT 1 | 129 | #define CCP_SHA_SB_COUNT 1 |
131 | 130 | ||
132 | #define CCP_RSA_MAX_WIDTH 4096 | 131 | #define CCP_RSA_MAX_WIDTH 4096 |
133 | 132 | ||
134 | #define CCP_PASSTHRU_BLOCKSIZE 256 | 133 | #define CCP_PASSTHRU_BLOCKSIZE 256 |
135 | #define CCP_PASSTHRU_MASKSIZE 32 | 134 | #define CCP_PASSTHRU_MASKSIZE 32 |
136 | #define CCP_PASSTHRU_KSB_COUNT 1 | 135 | #define CCP_PASSTHRU_SB_COUNT 1 |
137 | 136 | ||
138 | #define CCP_ECC_MODULUS_BYTES 48 /* 384-bits */ | 137 | #define CCP_ECC_MODULUS_BYTES 48 /* 384-bits */ |
139 | #define CCP_ECC_MAX_OPERANDS 6 | 138 | #define CCP_ECC_MAX_OPERANDS 6 |
@@ -145,6 +144,8 @@ | |||
145 | #define CCP_ECC_RESULT_OFFSET 60 | 144 | #define CCP_ECC_RESULT_OFFSET 60 |
146 | #define CCP_ECC_RESULT_SUCCESS 0x0001 | 145 | #define CCP_ECC_RESULT_SUCCESS 0x0001 |
147 | 146 | ||
147 | #define CCP_SB_BYTES 32 | ||
148 | |||
148 | struct ccp_op; | 149 | struct ccp_op; |
149 | 150 | ||
150 | /* Structure for computation functions that are device-specific */ | 151 | /* Structure for computation functions that are device-specific */ |
@@ -215,9 +216,9 @@ struct ccp_cmd_queue { | |||
215 | /* Queue dma pool */ | 216 | /* Queue dma pool */ |
216 | struct dma_pool *dma_pool; | 217 | struct dma_pool *dma_pool; |
217 | 218 | ||
218 | /* Queue reserved KSB regions */ | 219 | /* Per-queue reserved storage block(s) */ |
219 | u32 ksb_key; | 220 | u32 sb_key; |
220 | u32 ksb_ctx; | 221 | u32 sb_ctx; |
221 | 222 | ||
222 | /* Queue processing thread */ | 223 | /* Queue processing thread */ |
223 | struct task_struct *kthread; | 224 | struct task_struct *kthread; |
@@ -313,12 +314,12 @@ struct ccp_device { | |||
313 | * to avoid allocation contention. This will reserve at most 10 KSB | 314 | * to avoid allocation contention. This will reserve at most 10 KSB |
314 | * entries, leaving 40 KSB entries available for dynamic allocation. | 315 | * entries, leaving 40 KSB entries available for dynamic allocation. |
315 | */ | 316 | */ |
316 | struct mutex ksb_mutex ____cacheline_aligned; | 317 | struct mutex sb_mutex ____cacheline_aligned; |
317 | DECLARE_BITMAP(ksb, KSB_COUNT); | 318 | DECLARE_BITMAP(sb, KSB_COUNT); |
318 | wait_queue_head_t ksb_queue; | 319 | wait_queue_head_t sb_queue; |
319 | unsigned int ksb_avail; | 320 | unsigned int sb_avail; |
320 | unsigned int ksb_count; | 321 | unsigned int sb_count; |
321 | u32 ksb_start; | 322 | u32 sb_start; |
322 | 323 | ||
323 | /* Suspend support */ | 324 | /* Suspend support */ |
324 | unsigned int suspending; | 325 | unsigned int suspending; |
@@ -330,7 +331,7 @@ struct ccp_device { | |||
330 | 331 | ||
331 | enum ccp_memtype { | 332 | enum ccp_memtype { |
332 | CCP_MEMTYPE_SYSTEM = 0, | 333 | CCP_MEMTYPE_SYSTEM = 0, |
333 | CCP_MEMTYPE_KSB, | 334 | CCP_MEMTYPE_SB, |
334 | CCP_MEMTYPE_LOCAL, | 335 | CCP_MEMTYPE_LOCAL, |
335 | CCP_MEMTYPE__LAST, | 336 | CCP_MEMTYPE__LAST, |
336 | }; | 337 | }; |
@@ -374,7 +375,7 @@ struct ccp_mem { | |||
374 | enum ccp_memtype type; | 375 | enum ccp_memtype type; |
375 | union { | 376 | union { |
376 | struct ccp_dma_info dma; | 377 | struct ccp_dma_info dma; |
377 | u32 ksb; | 378 | u32 sb; |
378 | } u; | 379 | } u; |
379 | }; | 380 | }; |
380 | 381 | ||
@@ -414,8 +415,8 @@ struct ccp_op { | |||
414 | u32 jobid; | 415 | u32 jobid; |
415 | u32 ioc; | 416 | u32 ioc; |
416 | u32 soc; | 417 | u32 soc; |
417 | u32 ksb_key; | 418 | u32 sb_key; |
418 | u32 ksb_ctx; | 419 | u32 sb_ctx; |
419 | u32 init; | 420 | u32 init; |
420 | u32 eom; | 421 | u32 eom; |
421 | 422 | ||
diff --git a/drivers/crypto/ccp/ccp-ops.c b/drivers/crypto/ccp/ccp-ops.c index d1024771e926..2c2890a4c2e2 100644 --- a/drivers/crypto/ccp/ccp-ops.c +++ b/drivers/crypto/ccp/ccp-ops.c | |||
@@ -46,25 +46,25 @@ static u32 ccp_alloc_ksb(struct ccp_device *ccp, unsigned int count) | |||
46 | int start; | 46 | int start; |
47 | 47 | ||
48 | for (;;) { | 48 | for (;;) { |
49 | mutex_lock(&ccp->ksb_mutex); | 49 | mutex_lock(&ccp->sb_mutex); |
50 | 50 | ||
51 | start = (u32)bitmap_find_next_zero_area(ccp->ksb, | 51 | start = (u32)bitmap_find_next_zero_area(ccp->sb, |
52 | ccp->ksb_count, | 52 | ccp->sb_count, |
53 | ccp->ksb_start, | 53 | ccp->sb_start, |
54 | count, 0); | 54 | count, 0); |
55 | if (start <= ccp->ksb_count) { | 55 | if (start <= ccp->sb_count) { |
56 | bitmap_set(ccp->ksb, start, count); | 56 | bitmap_set(ccp->sb, start, count); |
57 | 57 | ||
58 | mutex_unlock(&ccp->ksb_mutex); | 58 | mutex_unlock(&ccp->sb_mutex); |
59 | break; | 59 | break; |
60 | } | 60 | } |
61 | 61 | ||
62 | ccp->ksb_avail = 0; | 62 | ccp->sb_avail = 0; |
63 | 63 | ||
64 | mutex_unlock(&ccp->ksb_mutex); | 64 | mutex_unlock(&ccp->sb_mutex); |
65 | 65 | ||
66 | /* Wait for KSB entries to become available */ | 66 | /* Wait for KSB entries to become available */ |
67 | if (wait_event_interruptible(ccp->ksb_queue, ccp->ksb_avail)) | 67 | if (wait_event_interruptible(ccp->sb_queue, ccp->sb_avail)) |
68 | return 0; | 68 | return 0; |
69 | } | 69 | } |
70 | 70 | ||
@@ -77,15 +77,15 @@ static void ccp_free_ksb(struct ccp_device *ccp, unsigned int start, | |||
77 | if (!start) | 77 | if (!start) |
78 | return; | 78 | return; |
79 | 79 | ||
80 | mutex_lock(&ccp->ksb_mutex); | 80 | mutex_lock(&ccp->sb_mutex); |
81 | 81 | ||
82 | bitmap_clear(ccp->ksb, start - KSB_START, count); | 82 | bitmap_clear(ccp->sb, start - KSB_START, count); |
83 | 83 | ||
84 | ccp->ksb_avail = 1; | 84 | ccp->sb_avail = 1; |
85 | 85 | ||
86 | mutex_unlock(&ccp->ksb_mutex); | 86 | mutex_unlock(&ccp->sb_mutex); |
87 | 87 | ||
88 | wake_up_interruptible_all(&ccp->ksb_queue); | 88 | wake_up_interruptible_all(&ccp->sb_queue); |
89 | } | 89 | } |
90 | 90 | ||
91 | static u32 ccp_gen_jobid(struct ccp_device *ccp) | 91 | static u32 ccp_gen_jobid(struct ccp_device *ccp) |
@@ -232,7 +232,7 @@ static int ccp_reverse_set_dm_area(struct ccp_dm_workarea *wa, | |||
232 | unsigned int len, unsigned int se_len, | 232 | unsigned int len, unsigned int se_len, |
233 | bool sign_extend) | 233 | bool sign_extend) |
234 | { | 234 | { |
235 | unsigned int nbytes, sg_offset, dm_offset, ksb_len, i; | 235 | unsigned int nbytes, sg_offset, dm_offset, sb_len, i; |
236 | u8 buffer[CCP_REVERSE_BUF_SIZE]; | 236 | u8 buffer[CCP_REVERSE_BUF_SIZE]; |
237 | 237 | ||
238 | if (WARN_ON(se_len > sizeof(buffer))) | 238 | if (WARN_ON(se_len > sizeof(buffer))) |
@@ -242,21 +242,21 @@ static int ccp_reverse_set_dm_area(struct ccp_dm_workarea *wa, | |||
242 | dm_offset = 0; | 242 | dm_offset = 0; |
243 | nbytes = len; | 243 | nbytes = len; |
244 | while (nbytes) { | 244 | while (nbytes) { |
245 | ksb_len = min_t(unsigned int, nbytes, se_len); | 245 | sb_len = min_t(unsigned int, nbytes, se_len); |
246 | sg_offset -= ksb_len; | 246 | sg_offset -= sb_len; |
247 | 247 | ||
248 | scatterwalk_map_and_copy(buffer, sg, sg_offset, ksb_len, 0); | 248 | scatterwalk_map_and_copy(buffer, sg, sg_offset, sb_len, 0); |
249 | for (i = 0; i < ksb_len; i++) | 249 | for (i = 0; i < sb_len; i++) |
250 | wa->address[dm_offset + i] = buffer[ksb_len - i - 1]; | 250 | wa->address[dm_offset + i] = buffer[sb_len - i - 1]; |
251 | 251 | ||
252 | dm_offset += ksb_len; | 252 | dm_offset += sb_len; |
253 | nbytes -= ksb_len; | 253 | nbytes -= sb_len; |
254 | 254 | ||
255 | if ((ksb_len != se_len) && sign_extend) { | 255 | if ((sb_len != se_len) && sign_extend) { |
256 | /* Must sign-extend to nearest sign-extend length */ | 256 | /* Must sign-extend to nearest sign-extend length */ |
257 | if (wa->address[dm_offset - 1] & 0x80) | 257 | if (wa->address[dm_offset - 1] & 0x80) |
258 | memset(wa->address + dm_offset, 0xff, | 258 | memset(wa->address + dm_offset, 0xff, |
259 | se_len - ksb_len); | 259 | se_len - sb_len); |
260 | } | 260 | } |
261 | } | 261 | } |
262 | 262 | ||
@@ -267,22 +267,22 @@ static void ccp_reverse_get_dm_area(struct ccp_dm_workarea *wa, | |||
267 | struct scatterlist *sg, | 267 | struct scatterlist *sg, |
268 | unsigned int len) | 268 | unsigned int len) |
269 | { | 269 | { |
270 | unsigned int nbytes, sg_offset, dm_offset, ksb_len, i; | 270 | unsigned int nbytes, sg_offset, dm_offset, sb_len, i; |
271 | u8 buffer[CCP_REVERSE_BUF_SIZE]; | 271 | u8 buffer[CCP_REVERSE_BUF_SIZE]; |
272 | 272 | ||
273 | sg_offset = 0; | 273 | sg_offset = 0; |
274 | dm_offset = len; | 274 | dm_offset = len; |
275 | nbytes = len; | 275 | nbytes = len; |
276 | while (nbytes) { | 276 | while (nbytes) { |
277 | ksb_len = min_t(unsigned int, nbytes, sizeof(buffer)); | 277 | sb_len = min_t(unsigned int, nbytes, sizeof(buffer)); |
278 | dm_offset -= ksb_len; | 278 | dm_offset -= sb_len; |
279 | 279 | ||
280 | for (i = 0; i < ksb_len; i++) | 280 | for (i = 0; i < sb_len; i++) |
281 | buffer[ksb_len - i - 1] = wa->address[dm_offset + i]; | 281 | buffer[sb_len - i - 1] = wa->address[dm_offset + i]; |
282 | scatterwalk_map_and_copy(buffer, sg, sg_offset, ksb_len, 1); | 282 | scatterwalk_map_and_copy(buffer, sg, sg_offset, sb_len, 1); |
283 | 283 | ||
284 | sg_offset += ksb_len; | 284 | sg_offset += sb_len; |
285 | nbytes -= ksb_len; | 285 | nbytes -= sb_len; |
286 | } | 286 | } |
287 | } | 287 | } |
288 | 288 | ||
@@ -450,9 +450,9 @@ static void ccp_process_data(struct ccp_data *src, struct ccp_data *dst, | |||
450 | } | 450 | } |
451 | } | 451 | } |
452 | 452 | ||
453 | static int ccp_copy_to_from_ksb(struct ccp_cmd_queue *cmd_q, | 453 | static int ccp_copy_to_from_sb(struct ccp_cmd_queue *cmd_q, |
454 | struct ccp_dm_workarea *wa, u32 jobid, u32 ksb, | 454 | struct ccp_dm_workarea *wa, u32 jobid, u32 sb, |
455 | u32 byte_swap, bool from) | 455 | u32 byte_swap, bool from) |
456 | { | 456 | { |
457 | struct ccp_op op; | 457 | struct ccp_op op; |
458 | 458 | ||
@@ -464,8 +464,8 @@ static int ccp_copy_to_from_ksb(struct ccp_cmd_queue *cmd_q, | |||
464 | 464 | ||
465 | if (from) { | 465 | if (from) { |
466 | op.soc = 1; | 466 | op.soc = 1; |
467 | op.src.type = CCP_MEMTYPE_KSB; | 467 | op.src.type = CCP_MEMTYPE_SB; |
468 | op.src.u.ksb = ksb; | 468 | op.src.u.sb = sb; |
469 | op.dst.type = CCP_MEMTYPE_SYSTEM; | 469 | op.dst.type = CCP_MEMTYPE_SYSTEM; |
470 | op.dst.u.dma.address = wa->dma.address; | 470 | op.dst.u.dma.address = wa->dma.address; |
471 | op.dst.u.dma.length = wa->length; | 471 | op.dst.u.dma.length = wa->length; |
@@ -473,8 +473,8 @@ static int ccp_copy_to_from_ksb(struct ccp_cmd_queue *cmd_q, | |||
473 | op.src.type = CCP_MEMTYPE_SYSTEM; | 473 | op.src.type = CCP_MEMTYPE_SYSTEM; |
474 | op.src.u.dma.address = wa->dma.address; | 474 | op.src.u.dma.address = wa->dma.address; |
475 | op.src.u.dma.length = wa->length; | 475 | op.src.u.dma.length = wa->length; |
476 | op.dst.type = CCP_MEMTYPE_KSB; | 476 | op.dst.type = CCP_MEMTYPE_SB; |
477 | op.dst.u.ksb = ksb; | 477 | op.dst.u.sb = sb; |
478 | } | 478 | } |
479 | 479 | ||
480 | op.u.passthru.byte_swap = byte_swap; | 480 | op.u.passthru.byte_swap = byte_swap; |
@@ -482,18 +482,18 @@ static int ccp_copy_to_from_ksb(struct ccp_cmd_queue *cmd_q, | |||
482 | return cmd_q->ccp->vdata->perform->passthru(&op); | 482 | return cmd_q->ccp->vdata->perform->passthru(&op); |
483 | } | 483 | } |
484 | 484 | ||
485 | static int ccp_copy_to_ksb(struct ccp_cmd_queue *cmd_q, | 485 | static int ccp_copy_to_sb(struct ccp_cmd_queue *cmd_q, |
486 | struct ccp_dm_workarea *wa, u32 jobid, u32 ksb, | 486 | struct ccp_dm_workarea *wa, u32 jobid, u32 sb, |
487 | u32 byte_swap) | 487 | u32 byte_swap) |
488 | { | 488 | { |
489 | return ccp_copy_to_from_ksb(cmd_q, wa, jobid, ksb, byte_swap, false); | 489 | return ccp_copy_to_from_sb(cmd_q, wa, jobid, sb, byte_swap, false); |
490 | } | 490 | } |
491 | 491 | ||
492 | static int ccp_copy_from_ksb(struct ccp_cmd_queue *cmd_q, | 492 | static int ccp_copy_from_sb(struct ccp_cmd_queue *cmd_q, |
493 | struct ccp_dm_workarea *wa, u32 jobid, u32 ksb, | 493 | struct ccp_dm_workarea *wa, u32 jobid, u32 sb, |
494 | u32 byte_swap) | 494 | u32 byte_swap) |
495 | { | 495 | { |
496 | return ccp_copy_to_from_ksb(cmd_q, wa, jobid, ksb, byte_swap, true); | 496 | return ccp_copy_to_from_sb(cmd_q, wa, jobid, sb, byte_swap, true); |
497 | } | 497 | } |
498 | 498 | ||
499 | static int ccp_run_aes_cmac_cmd(struct ccp_cmd_queue *cmd_q, | 499 | static int ccp_run_aes_cmac_cmd(struct ccp_cmd_queue *cmd_q, |
@@ -528,54 +528,54 @@ static int ccp_run_aes_cmac_cmd(struct ccp_cmd_queue *cmd_q, | |||
528 | return -EINVAL; | 528 | return -EINVAL; |
529 | } | 529 | } |
530 | 530 | ||
531 | BUILD_BUG_ON(CCP_AES_KEY_KSB_COUNT != 1); | 531 | BUILD_BUG_ON(CCP_AES_KEY_SB_COUNT != 1); |
532 | BUILD_BUG_ON(CCP_AES_CTX_KSB_COUNT != 1); | 532 | BUILD_BUG_ON(CCP_AES_CTX_SB_COUNT != 1); |
533 | 533 | ||
534 | ret = -EIO; | 534 | ret = -EIO; |
535 | memset(&op, 0, sizeof(op)); | 535 | memset(&op, 0, sizeof(op)); |
536 | op.cmd_q = cmd_q; | 536 | op.cmd_q = cmd_q; |
537 | op.jobid = ccp_gen_jobid(cmd_q->ccp); | 537 | op.jobid = ccp_gen_jobid(cmd_q->ccp); |
538 | op.ksb_key = cmd_q->ksb_key; | 538 | op.sb_key = cmd_q->sb_key; |
539 | op.ksb_ctx = cmd_q->ksb_ctx; | 539 | op.sb_ctx = cmd_q->sb_ctx; |
540 | op.init = 1; | 540 | op.init = 1; |
541 | op.u.aes.type = aes->type; | 541 | op.u.aes.type = aes->type; |
542 | op.u.aes.mode = aes->mode; | 542 | op.u.aes.mode = aes->mode; |
543 | op.u.aes.action = aes->action; | 543 | op.u.aes.action = aes->action; |
544 | 544 | ||
545 | /* All supported key sizes fit in a single (32-byte) KSB entry | 545 | /* All supported key sizes fit in a single (32-byte) SB entry |
546 | * and must be in little endian format. Use the 256-bit byte | 546 | * and must be in little endian format. Use the 256-bit byte |
547 | * swap passthru option to convert from big endian to little | 547 | * swap passthru option to convert from big endian to little |
548 | * endian. | 548 | * endian. |
549 | */ | 549 | */ |
550 | ret = ccp_init_dm_workarea(&key, cmd_q, | 550 | ret = ccp_init_dm_workarea(&key, cmd_q, |
551 | CCP_AES_KEY_KSB_COUNT * CCP_KSB_BYTES, | 551 | CCP_AES_KEY_SB_COUNT * CCP_SB_BYTES, |
552 | DMA_TO_DEVICE); | 552 | DMA_TO_DEVICE); |
553 | if (ret) | 553 | if (ret) |
554 | return ret; | 554 | return ret; |
555 | 555 | ||
556 | dm_offset = CCP_KSB_BYTES - aes->key_len; | 556 | dm_offset = CCP_SB_BYTES - aes->key_len; |
557 | ccp_set_dm_area(&key, dm_offset, aes->key, 0, aes->key_len); | 557 | ccp_set_dm_area(&key, dm_offset, aes->key, 0, aes->key_len); |
558 | ret = ccp_copy_to_ksb(cmd_q, &key, op.jobid, op.ksb_key, | 558 | ret = ccp_copy_to_sb(cmd_q, &key, op.jobid, op.sb_key, |
559 | CCP_PASSTHRU_BYTESWAP_256BIT); | 559 | CCP_PASSTHRU_BYTESWAP_256BIT); |
560 | if (ret) { | 560 | if (ret) { |
561 | cmd->engine_error = cmd_q->cmd_error; | 561 | cmd->engine_error = cmd_q->cmd_error; |
562 | goto e_key; | 562 | goto e_key; |
563 | } | 563 | } |
564 | 564 | ||
565 | /* The AES context fits in a single (32-byte) KSB entry and | 565 | /* The AES context fits in a single (32-byte) SB entry and |
566 | * must be in little endian format. Use the 256-bit byte swap | 566 | * must be in little endian format. Use the 256-bit byte swap |
567 | * passthru option to convert from big endian to little endian. | 567 | * passthru option to convert from big endian to little endian. |
568 | */ | 568 | */ |
569 | ret = ccp_init_dm_workarea(&ctx, cmd_q, | 569 | ret = ccp_init_dm_workarea(&ctx, cmd_q, |
570 | CCP_AES_CTX_KSB_COUNT * CCP_KSB_BYTES, | 570 | CCP_AES_CTX_SB_COUNT * CCP_SB_BYTES, |
571 | DMA_BIDIRECTIONAL); | 571 | DMA_BIDIRECTIONAL); |
572 | if (ret) | 572 | if (ret) |
573 | goto e_key; | 573 | goto e_key; |
574 | 574 | ||
575 | dm_offset = CCP_KSB_BYTES - AES_BLOCK_SIZE; | 575 | dm_offset = CCP_SB_BYTES - AES_BLOCK_SIZE; |
576 | ccp_set_dm_area(&ctx, dm_offset, aes->iv, 0, aes->iv_len); | 576 | ccp_set_dm_area(&ctx, dm_offset, aes->iv, 0, aes->iv_len); |
577 | ret = ccp_copy_to_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, | 577 | ret = ccp_copy_to_sb(cmd_q, &ctx, op.jobid, op.sb_ctx, |
578 | CCP_PASSTHRU_BYTESWAP_256BIT); | 578 | CCP_PASSTHRU_BYTESWAP_256BIT); |
579 | if (ret) { | 579 | if (ret) { |
580 | cmd->engine_error = cmd_q->cmd_error; | 580 | cmd->engine_error = cmd_q->cmd_error; |
581 | goto e_ctx; | 581 | goto e_ctx; |
@@ -593,9 +593,9 @@ static int ccp_run_aes_cmac_cmd(struct ccp_cmd_queue *cmd_q, | |||
593 | op.eom = 1; | 593 | op.eom = 1; |
594 | 594 | ||
595 | /* Push the K1/K2 key to the CCP now */ | 595 | /* Push the K1/K2 key to the CCP now */ |
596 | ret = ccp_copy_from_ksb(cmd_q, &ctx, op.jobid, | 596 | ret = ccp_copy_from_sb(cmd_q, &ctx, op.jobid, |
597 | op.ksb_ctx, | 597 | op.sb_ctx, |
598 | CCP_PASSTHRU_BYTESWAP_256BIT); | 598 | CCP_PASSTHRU_BYTESWAP_256BIT); |
599 | if (ret) { | 599 | if (ret) { |
600 | cmd->engine_error = cmd_q->cmd_error; | 600 | cmd->engine_error = cmd_q->cmd_error; |
601 | goto e_src; | 601 | goto e_src; |
@@ -603,8 +603,8 @@ static int ccp_run_aes_cmac_cmd(struct ccp_cmd_queue *cmd_q, | |||
603 | 603 | ||
604 | ccp_set_dm_area(&ctx, 0, aes->cmac_key, 0, | 604 | ccp_set_dm_area(&ctx, 0, aes->cmac_key, 0, |
605 | aes->cmac_key_len); | 605 | aes->cmac_key_len); |
606 | ret = ccp_copy_to_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, | 606 | ret = ccp_copy_to_sb(cmd_q, &ctx, op.jobid, op.sb_ctx, |
607 | CCP_PASSTHRU_BYTESWAP_256BIT); | 607 | CCP_PASSTHRU_BYTESWAP_256BIT); |
608 | if (ret) { | 608 | if (ret) { |
609 | cmd->engine_error = cmd_q->cmd_error; | 609 | cmd->engine_error = cmd_q->cmd_error; |
610 | goto e_src; | 610 | goto e_src; |
@@ -623,15 +623,15 @@ static int ccp_run_aes_cmac_cmd(struct ccp_cmd_queue *cmd_q, | |||
623 | /* Retrieve the AES context - convert from LE to BE using | 623 | /* Retrieve the AES context - convert from LE to BE using |
624 | * 32-byte (256-bit) byteswapping | 624 | * 32-byte (256-bit) byteswapping |
625 | */ | 625 | */ |
626 | ret = ccp_copy_from_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, | 626 | ret = ccp_copy_from_sb(cmd_q, &ctx, op.jobid, op.sb_ctx, |
627 | CCP_PASSTHRU_BYTESWAP_256BIT); | 627 | CCP_PASSTHRU_BYTESWAP_256BIT); |
628 | if (ret) { | 628 | if (ret) { |
629 | cmd->engine_error = cmd_q->cmd_error; | 629 | cmd->engine_error = cmd_q->cmd_error; |
630 | goto e_src; | 630 | goto e_src; |
631 | } | 631 | } |
632 | 632 | ||
633 | /* ...but we only need AES_BLOCK_SIZE bytes */ | 633 | /* ...but we only need AES_BLOCK_SIZE bytes */ |
634 | dm_offset = CCP_KSB_BYTES - AES_BLOCK_SIZE; | 634 | dm_offset = CCP_SB_BYTES - AES_BLOCK_SIZE; |
635 | ccp_get_dm_area(&ctx, dm_offset, aes->iv, 0, aes->iv_len); | 635 | ccp_get_dm_area(&ctx, dm_offset, aes->iv, 0, aes->iv_len); |
636 | 636 | ||
637 | e_src: | 637 | e_src: |
@@ -681,56 +681,56 @@ static int ccp_run_aes_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) | |||
681 | return -EINVAL; | 681 | return -EINVAL; |
682 | } | 682 | } |
683 | 683 | ||
684 | BUILD_BUG_ON(CCP_AES_KEY_KSB_COUNT != 1); | 684 | BUILD_BUG_ON(CCP_AES_KEY_SB_COUNT != 1); |
685 | BUILD_BUG_ON(CCP_AES_CTX_KSB_COUNT != 1); | 685 | BUILD_BUG_ON(CCP_AES_CTX_SB_COUNT != 1); |
686 | 686 | ||
687 | ret = -EIO; | 687 | ret = -EIO; |
688 | memset(&op, 0, sizeof(op)); | 688 | memset(&op, 0, sizeof(op)); |
689 | op.cmd_q = cmd_q; | 689 | op.cmd_q = cmd_q; |
690 | op.jobid = ccp_gen_jobid(cmd_q->ccp); | 690 | op.jobid = ccp_gen_jobid(cmd_q->ccp); |
691 | op.ksb_key = cmd_q->ksb_key; | 691 | op.sb_key = cmd_q->sb_key; |
692 | op.ksb_ctx = cmd_q->ksb_ctx; | 692 | op.sb_ctx = cmd_q->sb_ctx; |
693 | op.init = (aes->mode == CCP_AES_MODE_ECB) ? 0 : 1; | 693 | op.init = (aes->mode == CCP_AES_MODE_ECB) ? 0 : 1; |
694 | op.u.aes.type = aes->type; | 694 | op.u.aes.type = aes->type; |
695 | op.u.aes.mode = aes->mode; | 695 | op.u.aes.mode = aes->mode; |
696 | op.u.aes.action = aes->action; | 696 | op.u.aes.action = aes->action; |
697 | 697 | ||
698 | /* All supported key sizes fit in a single (32-byte) KSB entry | 698 | /* All supported key sizes fit in a single (32-byte) SB entry |
699 | * and must be in little endian format. Use the 256-bit byte | 699 | * and must be in little endian format. Use the 256-bit byte |
700 | * swap passthru option to convert from big endian to little | 700 | * swap passthru option to convert from big endian to little |
701 | * endian. | 701 | * endian. |
702 | */ | 702 | */ |
703 | ret = ccp_init_dm_workarea(&key, cmd_q, | 703 | ret = ccp_init_dm_workarea(&key, cmd_q, |
704 | CCP_AES_KEY_KSB_COUNT * CCP_KSB_BYTES, | 704 | CCP_AES_KEY_SB_COUNT * CCP_SB_BYTES, |
705 | DMA_TO_DEVICE); | 705 | DMA_TO_DEVICE); |
706 | if (ret) | 706 | if (ret) |
707 | return ret; | 707 | return ret; |
708 | 708 | ||
709 | dm_offset = CCP_KSB_BYTES - aes->key_len; | 709 | dm_offset = CCP_SB_BYTES - aes->key_len; |
710 | ccp_set_dm_area(&key, dm_offset, aes->key, 0, aes->key_len); | 710 | ccp_set_dm_area(&key, dm_offset, aes->key, 0, aes->key_len); |
711 | ret = ccp_copy_to_ksb(cmd_q, &key, op.jobid, op.ksb_key, | 711 | ret = ccp_copy_to_sb(cmd_q, &key, op.jobid, op.sb_key, |
712 | CCP_PASSTHRU_BYTESWAP_256BIT); | 712 | CCP_PASSTHRU_BYTESWAP_256BIT); |
713 | if (ret) { | 713 | if (ret) { |
714 | cmd->engine_error = cmd_q->cmd_error; | 714 | cmd->engine_error = cmd_q->cmd_error; |
715 | goto e_key; | 715 | goto e_key; |
716 | } | 716 | } |
717 | 717 | ||
718 | /* The AES context fits in a single (32-byte) KSB entry and | 718 | /* The AES context fits in a single (32-byte) SB entry and |
719 | * must be in little endian format. Use the 256-bit byte swap | 719 | * must be in little endian format. Use the 256-bit byte swap |
720 | * passthru option to convert from big endian to little endian. | 720 | * passthru option to convert from big endian to little endian. |
721 | */ | 721 | */ |
722 | ret = ccp_init_dm_workarea(&ctx, cmd_q, | 722 | ret = ccp_init_dm_workarea(&ctx, cmd_q, |
723 | CCP_AES_CTX_KSB_COUNT * CCP_KSB_BYTES, | 723 | CCP_AES_CTX_SB_COUNT * CCP_SB_BYTES, |
724 | DMA_BIDIRECTIONAL); | 724 | DMA_BIDIRECTIONAL); |
725 | if (ret) | 725 | if (ret) |
726 | goto e_key; | 726 | goto e_key; |
727 | 727 | ||
728 | if (aes->mode != CCP_AES_MODE_ECB) { | 728 | if (aes->mode != CCP_AES_MODE_ECB) { |
729 | /* Load the AES context - conver to LE */ | 729 | /* Load the AES context - conver to LE */ |
730 | dm_offset = CCP_KSB_BYTES - AES_BLOCK_SIZE; | 730 | dm_offset = CCP_SB_BYTES - AES_BLOCK_SIZE; |
731 | ccp_set_dm_area(&ctx, dm_offset, aes->iv, 0, aes->iv_len); | 731 | ccp_set_dm_area(&ctx, dm_offset, aes->iv, 0, aes->iv_len); |
732 | ret = ccp_copy_to_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, | 732 | ret = ccp_copy_to_sb(cmd_q, &ctx, op.jobid, op.sb_ctx, |
733 | CCP_PASSTHRU_BYTESWAP_256BIT); | 733 | CCP_PASSTHRU_BYTESWAP_256BIT); |
734 | if (ret) { | 734 | if (ret) { |
735 | cmd->engine_error = cmd_q->cmd_error; | 735 | cmd->engine_error = cmd_q->cmd_error; |
736 | goto e_ctx; | 736 | goto e_ctx; |
@@ -786,15 +786,15 @@ static int ccp_run_aes_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) | |||
786 | /* Retrieve the AES context - convert from LE to BE using | 786 | /* Retrieve the AES context - convert from LE to BE using |
787 | * 32-byte (256-bit) byteswapping | 787 | * 32-byte (256-bit) byteswapping |
788 | */ | 788 | */ |
789 | ret = ccp_copy_from_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, | 789 | ret = ccp_copy_from_sb(cmd_q, &ctx, op.jobid, op.sb_ctx, |
790 | CCP_PASSTHRU_BYTESWAP_256BIT); | 790 | CCP_PASSTHRU_BYTESWAP_256BIT); |
791 | if (ret) { | 791 | if (ret) { |
792 | cmd->engine_error = cmd_q->cmd_error; | 792 | cmd->engine_error = cmd_q->cmd_error; |
793 | goto e_dst; | 793 | goto e_dst; |
794 | } | 794 | } |
795 | 795 | ||
796 | /* ...but we only need AES_BLOCK_SIZE bytes */ | 796 | /* ...but we only need AES_BLOCK_SIZE bytes */ |
797 | dm_offset = CCP_KSB_BYTES - AES_BLOCK_SIZE; | 797 | dm_offset = CCP_SB_BYTES - AES_BLOCK_SIZE; |
798 | ccp_get_dm_area(&ctx, dm_offset, aes->iv, 0, aes->iv_len); | 798 | ccp_get_dm_area(&ctx, dm_offset, aes->iv, 0, aes->iv_len); |
799 | } | 799 | } |
800 | 800 | ||
@@ -858,53 +858,53 @@ static int ccp_run_xts_aes_cmd(struct ccp_cmd_queue *cmd_q, | |||
858 | if (!xts->key || !xts->iv || !xts->src || !xts->dst) | 858 | if (!xts->key || !xts->iv || !xts->src || !xts->dst) |
859 | return -EINVAL; | 859 | return -EINVAL; |
860 | 860 | ||
861 | BUILD_BUG_ON(CCP_XTS_AES_KEY_KSB_COUNT != 1); | 861 | BUILD_BUG_ON(CCP_XTS_AES_KEY_SB_COUNT != 1); |
862 | BUILD_BUG_ON(CCP_XTS_AES_CTX_KSB_COUNT != 1); | 862 | BUILD_BUG_ON(CCP_XTS_AES_CTX_SB_COUNT != 1); |
863 | 863 | ||
864 | ret = -EIO; | 864 | ret = -EIO; |
865 | memset(&op, 0, sizeof(op)); | 865 | memset(&op, 0, sizeof(op)); |
866 | op.cmd_q = cmd_q; | 866 | op.cmd_q = cmd_q; |
867 | op.jobid = ccp_gen_jobid(cmd_q->ccp); | 867 | op.jobid = ccp_gen_jobid(cmd_q->ccp); |
868 | op.ksb_key = cmd_q->ksb_key; | 868 | op.sb_key = cmd_q->sb_key; |
869 | op.ksb_ctx = cmd_q->ksb_ctx; | 869 | op.sb_ctx = cmd_q->sb_ctx; |
870 | op.init = 1; | 870 | op.init = 1; |
871 | op.u.xts.action = xts->action; | 871 | op.u.xts.action = xts->action; |
872 | op.u.xts.unit_size = xts->unit_size; | 872 | op.u.xts.unit_size = xts->unit_size; |
873 | 873 | ||
874 | /* All supported key sizes fit in a single (32-byte) KSB entry | 874 | /* All supported key sizes fit in a single (32-byte) SB entry |
875 | * and must be in little endian format. Use the 256-bit byte | 875 | * and must be in little endian format. Use the 256-bit byte |
876 | * swap passthru option to convert from big endian to little | 876 | * swap passthru option to convert from big endian to little |
877 | * endian. | 877 | * endian. |
878 | */ | 878 | */ |
879 | ret = ccp_init_dm_workarea(&key, cmd_q, | 879 | ret = ccp_init_dm_workarea(&key, cmd_q, |
880 | CCP_XTS_AES_KEY_KSB_COUNT * CCP_KSB_BYTES, | 880 | CCP_XTS_AES_KEY_SB_COUNT * CCP_SB_BYTES, |
881 | DMA_TO_DEVICE); | 881 | DMA_TO_DEVICE); |
882 | if (ret) | 882 | if (ret) |
883 | return ret; | 883 | return ret; |
884 | 884 | ||
885 | dm_offset = CCP_KSB_BYTES - AES_KEYSIZE_128; | 885 | dm_offset = CCP_SB_BYTES - AES_KEYSIZE_128; |
886 | ccp_set_dm_area(&key, dm_offset, xts->key, 0, xts->key_len); | 886 | ccp_set_dm_area(&key, dm_offset, xts->key, 0, xts->key_len); |
887 | ccp_set_dm_area(&key, 0, xts->key, dm_offset, xts->key_len); | 887 | ccp_set_dm_area(&key, 0, xts->key, dm_offset, xts->key_len); |
888 | ret = ccp_copy_to_ksb(cmd_q, &key, op.jobid, op.ksb_key, | 888 | ret = ccp_copy_to_sb(cmd_q, &key, op.jobid, op.sb_key, |
889 | CCP_PASSTHRU_BYTESWAP_256BIT); | 889 | CCP_PASSTHRU_BYTESWAP_256BIT); |
890 | if (ret) { | 890 | if (ret) { |
891 | cmd->engine_error = cmd_q->cmd_error; | 891 | cmd->engine_error = cmd_q->cmd_error; |
892 | goto e_key; | 892 | goto e_key; |
893 | } | 893 | } |
894 | 894 | ||
895 | /* The AES context fits in a single (32-byte) KSB entry and | 895 | /* The AES context fits in a single (32-byte) SB entry and |
896 | * for XTS is already in little endian format so no byte swapping | 896 | * for XTS is already in little endian format so no byte swapping |
897 | * is needed. | 897 | * is needed. |
898 | */ | 898 | */ |
899 | ret = ccp_init_dm_workarea(&ctx, cmd_q, | 899 | ret = ccp_init_dm_workarea(&ctx, cmd_q, |
900 | CCP_XTS_AES_CTX_KSB_COUNT * CCP_KSB_BYTES, | 900 | CCP_XTS_AES_CTX_SB_COUNT * CCP_SB_BYTES, |
901 | DMA_BIDIRECTIONAL); | 901 | DMA_BIDIRECTIONAL); |
902 | if (ret) | 902 | if (ret) |
903 | goto e_key; | 903 | goto e_key; |
904 | 904 | ||
905 | ccp_set_dm_area(&ctx, 0, xts->iv, 0, xts->iv_len); | 905 | ccp_set_dm_area(&ctx, 0, xts->iv, 0, xts->iv_len); |
906 | ret = ccp_copy_to_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, | 906 | ret = ccp_copy_to_sb(cmd_q, &ctx, op.jobid, op.sb_ctx, |
907 | CCP_PASSTHRU_BYTESWAP_NOOP); | 907 | CCP_PASSTHRU_BYTESWAP_NOOP); |
908 | if (ret) { | 908 | if (ret) { |
909 | cmd->engine_error = cmd_q->cmd_error; | 909 | cmd->engine_error = cmd_q->cmd_error; |
910 | goto e_ctx; | 910 | goto e_ctx; |
@@ -950,15 +950,15 @@ static int ccp_run_xts_aes_cmd(struct ccp_cmd_queue *cmd_q, | |||
950 | /* Retrieve the AES context - convert from LE to BE using | 950 | /* Retrieve the AES context - convert from LE to BE using |
951 | * 32-byte (256-bit) byteswapping | 951 | * 32-byte (256-bit) byteswapping |
952 | */ | 952 | */ |
953 | ret = ccp_copy_from_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, | 953 | ret = ccp_copy_from_sb(cmd_q, &ctx, op.jobid, op.sb_ctx, |
954 | CCP_PASSTHRU_BYTESWAP_256BIT); | 954 | CCP_PASSTHRU_BYTESWAP_256BIT); |
955 | if (ret) { | 955 | if (ret) { |
956 | cmd->engine_error = cmd_q->cmd_error; | 956 | cmd->engine_error = cmd_q->cmd_error; |
957 | goto e_dst; | 957 | goto e_dst; |
958 | } | 958 | } |
959 | 959 | ||
960 | /* ...but we only need AES_BLOCK_SIZE bytes */ | 960 | /* ...but we only need AES_BLOCK_SIZE bytes */ |
961 | dm_offset = CCP_KSB_BYTES - AES_BLOCK_SIZE; | 961 | dm_offset = CCP_SB_BYTES - AES_BLOCK_SIZE; |
962 | ccp_get_dm_area(&ctx, dm_offset, xts->iv, 0, xts->iv_len); | 962 | ccp_get_dm_area(&ctx, dm_offset, xts->iv, 0, xts->iv_len); |
963 | 963 | ||
964 | e_dst: | 964 | e_dst: |
@@ -1036,21 +1036,21 @@ static int ccp_run_sha_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) | |||
1036 | if (!sha->src) | 1036 | if (!sha->src) |
1037 | return -EINVAL; | 1037 | return -EINVAL; |
1038 | 1038 | ||
1039 | BUILD_BUG_ON(CCP_SHA_KSB_COUNT != 1); | 1039 | BUILD_BUG_ON(CCP_SHA_SB_COUNT != 1); |
1040 | 1040 | ||
1041 | memset(&op, 0, sizeof(op)); | 1041 | memset(&op, 0, sizeof(op)); |
1042 | op.cmd_q = cmd_q; | 1042 | op.cmd_q = cmd_q; |
1043 | op.jobid = ccp_gen_jobid(cmd_q->ccp); | 1043 | op.jobid = ccp_gen_jobid(cmd_q->ccp); |
1044 | op.ksb_ctx = cmd_q->ksb_ctx; | 1044 | op.sb_ctx = cmd_q->sb_ctx; |
1045 | op.u.sha.type = sha->type; | 1045 | op.u.sha.type = sha->type; |
1046 | op.u.sha.msg_bits = sha->msg_bits; | 1046 | op.u.sha.msg_bits = sha->msg_bits; |
1047 | 1047 | ||
1048 | /* The SHA context fits in a single (32-byte) KSB entry and | 1048 | /* The SHA context fits in a single (32-byte) SB entry and |
1049 | * must be in little endian format. Use the 256-bit byte swap | 1049 | * must be in little endian format. Use the 256-bit byte swap |
1050 | * passthru option to convert from big endian to little endian. | 1050 | * passthru option to convert from big endian to little endian. |
1051 | */ | 1051 | */ |
1052 | ret = ccp_init_dm_workarea(&ctx, cmd_q, | 1052 | ret = ccp_init_dm_workarea(&ctx, cmd_q, |
1053 | CCP_SHA_KSB_COUNT * CCP_KSB_BYTES, | 1053 | CCP_SHA_SB_COUNT * CCP_SB_BYTES, |
1054 | DMA_BIDIRECTIONAL); | 1054 | DMA_BIDIRECTIONAL); |
1055 | if (ret) | 1055 | if (ret) |
1056 | return ret; | 1056 | return ret; |
@@ -1077,8 +1077,8 @@ static int ccp_run_sha_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) | |||
1077 | ccp_set_dm_area(&ctx, 0, sha->ctx, 0, sha->ctx_len); | 1077 | ccp_set_dm_area(&ctx, 0, sha->ctx, 0, sha->ctx_len); |
1078 | } | 1078 | } |
1079 | 1079 | ||
1080 | ret = ccp_copy_to_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, | 1080 | ret = ccp_copy_to_sb(cmd_q, &ctx, op.jobid, op.sb_ctx, |
1081 | CCP_PASSTHRU_BYTESWAP_256BIT); | 1081 | CCP_PASSTHRU_BYTESWAP_256BIT); |
1082 | if (ret) { | 1082 | if (ret) { |
1083 | cmd->engine_error = cmd_q->cmd_error; | 1083 | cmd->engine_error = cmd_q->cmd_error; |
1084 | goto e_ctx; | 1084 | goto e_ctx; |
@@ -1107,8 +1107,8 @@ static int ccp_run_sha_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) | |||
1107 | /* Retrieve the SHA context - convert from LE to BE using | 1107 | /* Retrieve the SHA context - convert from LE to BE using |
1108 | * 32-byte (256-bit) byteswapping to BE | 1108 | * 32-byte (256-bit) byteswapping to BE |
1109 | */ | 1109 | */ |
1110 | ret = ccp_copy_from_ksb(cmd_q, &ctx, op.jobid, op.ksb_ctx, | 1110 | ret = ccp_copy_from_sb(cmd_q, &ctx, op.jobid, op.sb_ctx, |
1111 | CCP_PASSTHRU_BYTESWAP_256BIT); | 1111 | CCP_PASSTHRU_BYTESWAP_256BIT); |
1112 | if (ret) { | 1112 | if (ret) { |
1113 | cmd->engine_error = cmd_q->cmd_error; | 1113 | cmd->engine_error = cmd_q->cmd_error; |
1114 | goto e_data; | 1114 | goto e_data; |
@@ -1191,7 +1191,7 @@ static int ccp_run_rsa_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) | |||
1191 | struct ccp_dm_workarea exp, src; | 1191 | struct ccp_dm_workarea exp, src; |
1192 | struct ccp_data dst; | 1192 | struct ccp_data dst; |
1193 | struct ccp_op op; | 1193 | struct ccp_op op; |
1194 | unsigned int ksb_count, i_len, o_len; | 1194 | unsigned int sb_count, i_len, o_len; |
1195 | int ret; | 1195 | int ret; |
1196 | 1196 | ||
1197 | if (rsa->key_size > CCP_RSA_MAX_WIDTH) | 1197 | if (rsa->key_size > CCP_RSA_MAX_WIDTH) |
@@ -1209,16 +1209,16 @@ static int ccp_run_rsa_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) | |||
1209 | o_len = ((rsa->key_size + 255) / 256) * 32; | 1209 | o_len = ((rsa->key_size + 255) / 256) * 32; |
1210 | i_len = o_len * 2; | 1210 | i_len = o_len * 2; |
1211 | 1211 | ||
1212 | ksb_count = o_len / CCP_KSB_BYTES; | 1212 | sb_count = o_len / CCP_SB_BYTES; |
1213 | 1213 | ||
1214 | memset(&op, 0, sizeof(op)); | 1214 | memset(&op, 0, sizeof(op)); |
1215 | op.cmd_q = cmd_q; | 1215 | op.cmd_q = cmd_q; |
1216 | op.jobid = ccp_gen_jobid(cmd_q->ccp); | 1216 | op.jobid = ccp_gen_jobid(cmd_q->ccp); |
1217 | op.ksb_key = ccp_alloc_ksb(cmd_q->ccp, ksb_count); | 1217 | op.sb_key = ccp_alloc_ksb(cmd_q->ccp, sb_count); |
1218 | if (!op.ksb_key) | 1218 | if (!op.sb_key) |
1219 | return -EIO; | 1219 | return -EIO; |
1220 | 1220 | ||
1221 | /* The RSA exponent may span multiple (32-byte) KSB entries and must | 1221 | /* The RSA exponent may span multiple (32-byte) SB entries and must |
1222 | * be in little endian format. Reverse copy each 32-byte chunk | 1222 | * be in little endian format. Reverse copy each 32-byte chunk |
1223 | * of the exponent (En chunk to E0 chunk, E(n-1) chunk to E1 chunk) | 1223 | * of the exponent (En chunk to E0 chunk, E(n-1) chunk to E1 chunk) |
1224 | * and each byte within that chunk and do not perform any byte swap | 1224 | * and each byte within that chunk and do not perform any byte swap |
@@ -1226,14 +1226,14 @@ static int ccp_run_rsa_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) | |||
1226 | */ | 1226 | */ |
1227 | ret = ccp_init_dm_workarea(&exp, cmd_q, o_len, DMA_TO_DEVICE); | 1227 | ret = ccp_init_dm_workarea(&exp, cmd_q, o_len, DMA_TO_DEVICE); |
1228 | if (ret) | 1228 | if (ret) |
1229 | goto e_ksb; | 1229 | goto e_sb; |
1230 | 1230 | ||
1231 | ret = ccp_reverse_set_dm_area(&exp, rsa->exp, rsa->exp_len, | 1231 | ret = ccp_reverse_set_dm_area(&exp, rsa->exp, rsa->exp_len, |
1232 | CCP_KSB_BYTES, false); | 1232 | CCP_SB_BYTES, false); |
1233 | if (ret) | 1233 | if (ret) |
1234 | goto e_exp; | 1234 | goto e_exp; |
1235 | ret = ccp_copy_to_ksb(cmd_q, &exp, op.jobid, op.ksb_key, | 1235 | ret = ccp_copy_to_sb(cmd_q, &exp, op.jobid, op.sb_key, |
1236 | CCP_PASSTHRU_BYTESWAP_NOOP); | 1236 | CCP_PASSTHRU_BYTESWAP_NOOP); |
1237 | if (ret) { | 1237 | if (ret) { |
1238 | cmd->engine_error = cmd_q->cmd_error; | 1238 | cmd->engine_error = cmd_q->cmd_error; |
1239 | goto e_exp; | 1239 | goto e_exp; |
@@ -1248,12 +1248,12 @@ static int ccp_run_rsa_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd) | |||
1248 | goto e_exp; | 1248 | goto e_exp; |
1249 | 1249 | ||
1250 | ret = ccp_reverse_set_dm_area(&src, rsa->mod, rsa->mod_len, | 1250 | ret = ccp_reverse_set_dm_area(&src, rsa->mod, rsa->mod_len, |
1251 | CCP_KSB_BYTES, false); | 1251 | CCP_SB_BYTES, false); |
1252 | if (ret) | 1252 | if (ret) |
1253 | goto e_src; | 1253 | goto e_src; |
1254 | src.address += o_len; /* Adjust the address for the copy operation */ | 1254 | src.address += o_len; /* Adjust the address for the copy operation */ |
1255 | ret = ccp_reverse_set_dm_area(&src, rsa->src, rsa->src_len, | 1255 | ret = ccp_reverse_set_dm_area(&src, rsa->src, rsa->src_len, |
1256 | CCP_KSB_BYTES, false); | 1256 | CCP_SB_BYTES, false); |
1257 | if (ret) | 1257 | if (ret) |
1258 | goto e_src; | 1258 | goto e_src; |
1259 | src.address -= o_len; /* Reset the address to original value */ | 1259 | src.address -= o_len; /* Reset the address to original value */ |
@@ -1292,8 +1292,8 @@ e_src: | |||
1292 | e_exp: | 1292 | e_exp: |
1293 | ccp_dm_free(&exp); | 1293 | ccp_dm_free(&exp); |
1294 | 1294 | ||
1295 | e_ksb: | 1295 | e_sb: |
1296 | ccp_free_ksb(cmd_q->ccp, op.ksb_key, ksb_count); | 1296 | ccp_free_ksb(cmd_q->ccp, op.sb_key, sb_count); |
1297 | 1297 | ||
1298 | return ret; | 1298 | return ret; |
1299 | } | 1299 | } |
@@ -1322,7 +1322,7 @@ static int ccp_run_passthru_cmd(struct ccp_cmd_queue *cmd_q, | |||
1322 | return -EINVAL; | 1322 | return -EINVAL; |
1323 | } | 1323 | } |
1324 | 1324 | ||
1325 | BUILD_BUG_ON(CCP_PASSTHRU_KSB_COUNT != 1); | 1325 | BUILD_BUG_ON(CCP_PASSTHRU_SB_COUNT != 1); |
1326 | 1326 | ||
1327 | memset(&op, 0, sizeof(op)); | 1327 | memset(&op, 0, sizeof(op)); |
1328 | op.cmd_q = cmd_q; | 1328 | op.cmd_q = cmd_q; |
@@ -1330,18 +1330,18 @@ static int ccp_run_passthru_cmd(struct ccp_cmd_queue *cmd_q, | |||
1330 | 1330 | ||
1331 | if (pt->bit_mod != CCP_PASSTHRU_BITWISE_NOOP) { | 1331 | if (pt->bit_mod != CCP_PASSTHRU_BITWISE_NOOP) { |
1332 | /* Load the mask */ | 1332 | /* Load the mask */ |
1333 | op.ksb_key = cmd_q->ksb_key; | 1333 | op.sb_key = cmd_q->sb_key; |
1334 | 1334 | ||
1335 | ret = ccp_init_dm_workarea(&mask, cmd_q, | 1335 | ret = ccp_init_dm_workarea(&mask, cmd_q, |
1336 | CCP_PASSTHRU_KSB_COUNT * | 1336 | CCP_PASSTHRU_SB_COUNT * |
1337 | CCP_KSB_BYTES, | 1337 | CCP_SB_BYTES, |
1338 | DMA_TO_DEVICE); | 1338 | DMA_TO_DEVICE); |
1339 | if (ret) | 1339 | if (ret) |
1340 | return ret; | 1340 | return ret; |
1341 | 1341 | ||
1342 | ccp_set_dm_area(&mask, 0, pt->mask, 0, pt->mask_len); | 1342 | ccp_set_dm_area(&mask, 0, pt->mask, 0, pt->mask_len); |
1343 | ret = ccp_copy_to_ksb(cmd_q, &mask, op.jobid, op.ksb_key, | 1343 | ret = ccp_copy_to_sb(cmd_q, &mask, op.jobid, op.sb_key, |
1344 | CCP_PASSTHRU_BYTESWAP_NOOP); | 1344 | CCP_PASSTHRU_BYTESWAP_NOOP); |
1345 | if (ret) { | 1345 | if (ret) { |
1346 | cmd->engine_error = cmd_q->cmd_error; | 1346 | cmd->engine_error = cmd_q->cmd_error; |
1347 | goto e_mask; | 1347 | goto e_mask; |
@@ -1449,7 +1449,7 @@ static int ccp_run_passthru_nomap_cmd(struct ccp_cmd_queue *cmd_q, | |||
1449 | return -EINVAL; | 1449 | return -EINVAL; |
1450 | } | 1450 | } |
1451 | 1451 | ||
1452 | BUILD_BUG_ON(CCP_PASSTHRU_KSB_COUNT != 1); | 1452 | BUILD_BUG_ON(CCP_PASSTHRU_SB_COUNT != 1); |
1453 | 1453 | ||
1454 | memset(&op, 0, sizeof(op)); | 1454 | memset(&op, 0, sizeof(op)); |
1455 | op.cmd_q = cmd_q; | 1455 | op.cmd_q = cmd_q; |
@@ -1457,13 +1457,13 @@ static int ccp_run_passthru_nomap_cmd(struct ccp_cmd_queue *cmd_q, | |||
1457 | 1457 | ||
1458 | if (pt->bit_mod != CCP_PASSTHRU_BITWISE_NOOP) { | 1458 | if (pt->bit_mod != CCP_PASSTHRU_BITWISE_NOOP) { |
1459 | /* Load the mask */ | 1459 | /* Load the mask */ |
1460 | op.ksb_key = cmd_q->ksb_key; | 1460 | op.sb_key = cmd_q->sb_key; |
1461 | 1461 | ||
1462 | mask.length = pt->mask_len; | 1462 | mask.length = pt->mask_len; |
1463 | mask.dma.address = pt->mask; | 1463 | mask.dma.address = pt->mask; |
1464 | mask.dma.length = pt->mask_len; | 1464 | mask.dma.length = pt->mask_len; |
1465 | 1465 | ||
1466 | ret = ccp_copy_to_ksb(cmd_q, &mask, op.jobid, op.ksb_key, | 1466 | ret = ccp_copy_to_sb(cmd_q, &mask, op.jobid, op.sb_key, |
1467 | CCP_PASSTHRU_BYTESWAP_NOOP); | 1467 | CCP_PASSTHRU_BYTESWAP_NOOP); |
1468 | if (ret) { | 1468 | if (ret) { |
1469 | cmd->engine_error = cmd_q->cmd_error; | 1469 | cmd->engine_error = cmd_q->cmd_error; |