Lines Matching refs:ctx

149 		dev_err(jrdev, "unable to map ctx\n");
190 dev_err(jrdev, "unable to map ctx\n");
202 struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash);
204 struct device *jrdev = ctx->jrdev;
208 ctx->adata.key_virt = ctx->key;
211 desc = ctx->sh_desc_update;
212 cnstr_shdsc_ahash(desc, &ctx->adata, OP_ALG_AS_UPDATE, ctx->ctx_len,
213 ctx->ctx_len, true, ctrlpriv->era);
214 dma_sync_single_for_device(jrdev, ctx->sh_desc_update_dma,
215 desc_bytes(desc), ctx->dir);
222 desc = ctx->sh_desc_update_first;
223 cnstr_shdsc_ahash(desc, &ctx->adata, OP_ALG_AS_INIT, ctx->ctx_len,
224 ctx->ctx_len, false, ctrlpriv->era);
225 dma_sync_single_for_device(jrdev, ctx->sh_desc_update_first_dma,
226 desc_bytes(desc), ctx->dir);
232 desc = ctx->sh_desc_fin;
233 cnstr_shdsc_ahash(desc, &ctx->adata, OP_ALG_AS_FINALIZE, digestsize,
234 ctx->ctx_len, true, ctrlpriv->era);
235 dma_sync_single_for_device(jrdev, ctx->sh_desc_fin_dma,
236 desc_bytes(desc), ctx->dir);
243 desc = ctx->sh_desc_digest;
244 cnstr_shdsc_ahash(desc, &ctx->adata, OP_ALG_AS_INITFINAL, digestsize,
245 ctx->ctx_len, false, ctrlpriv->era);
246 dma_sync_single_for_device(jrdev, ctx->sh_desc_digest_dma,
247 desc_bytes(desc), ctx->dir);
258 struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash);
260 struct device *jrdev = ctx->jrdev;
264 desc = ctx->sh_desc_update;
265 cnstr_shdsc_sk_hash(desc, &ctx->adata, OP_ALG_AS_UPDATE,
266 ctx->ctx_len, ctx->ctx_len);
267 dma_sync_single_for_device(jrdev, ctx->sh_desc_update_dma,
268 desc_bytes(desc), ctx->dir);
274 desc = ctx->sh_desc_fin;
275 cnstr_shdsc_sk_hash(desc, &ctx->adata, OP_ALG_AS_FINALIZE,
276 digestsize, ctx->ctx_len);
277 dma_sync_single_for_device(jrdev, ctx->sh_desc_fin_dma,
278 desc_bytes(desc), ctx->dir);
284 ctx->adata.key_virt = ctx->key;
287 desc = ctx->sh_desc_update_first;
288 cnstr_shdsc_sk_hash(desc, &ctx->adata, OP_ALG_AS_INIT, ctx->ctx_len,
289 ctx->ctx_len);
290 dma_sync_single_for_device(jrdev, ctx->sh_desc_update_first_dma,
291 desc_bytes(desc), ctx->dir);
297 desc = ctx->sh_desc_digest;
298 cnstr_shdsc_sk_hash(desc, &ctx->adata, OP_ALG_AS_INITFINAL,
299 digestsize, ctx->ctx_len);
300 dma_sync_single_for_device(jrdev, ctx->sh_desc_digest_dma,
301 desc_bytes(desc), ctx->dir);
310 struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash);
312 struct device *jrdev = ctx->jrdev;
316 desc = ctx->sh_desc_update;
317 cnstr_shdsc_sk_hash(desc, &ctx->adata, OP_ALG_AS_UPDATE,
318 ctx->ctx_len, ctx->ctx_len);
319 dma_sync_single_for_device(jrdev, ctx->sh_desc_update_dma,
320 desc_bytes(desc), ctx->dir);
326 desc = ctx->sh_desc_fin;
327 cnstr_shdsc_sk_hash(desc, &ctx->adata, OP_ALG_AS_FINALIZE,
328 digestsize, ctx->ctx_len);
329 dma_sync_single_for_device(jrdev, ctx->sh_desc_fin_dma,
330 desc_bytes(desc), ctx->dir);
336 desc = ctx->sh_desc_update_first;
337 cnstr_shdsc_sk_hash(desc, &ctx->adata, OP_ALG_AS_INIT, ctx->ctx_len,
338 ctx->ctx_len);
339 dma_sync_single_for_device(jrdev, ctx->sh_desc_update_first_dma,
340 desc_bytes(desc), ctx->dir);
346 desc = ctx->sh_desc_digest;
347 cnstr_shdsc_sk_hash(desc, &ctx->adata, OP_ALG_AS_INITFINAL,
348 digestsize, ctx->ctx_len);
349 dma_sync_single_for_device(jrdev, ctx->sh_desc_digest_dma,
350 desc_bytes(desc), ctx->dir);
359 static int hash_digest_key(struct caam_hash_ctx *ctx, u32 *keylen, u8 *key,
362 struct device *jrdev = ctx->jrdev;
384 append_operation(desc, ctx->adata.algtype | OP_ALG_ENCRYPT |
424 struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash);
425 struct device *jrdev = ctx->jrdev;
428 struct caam_drv_private *ctrlpriv = dev_get_drvdata(ctx->jrdev->parent);
438 ret = hash_digest_key(ctx, &keylen, hashed_key, digestsize);
449 ctx->adata.key_inline = true;
450 ctx->adata.keylen = keylen;
451 ctx->adata.keylen_pad = split_key_len(ctx->adata.algtype &
454 if (ctx->adata.keylen_pad > CAAM_MAX_HASH_KEY_SIZE)
457 memcpy(ctx->key, key, keylen);
465 if (keylen > ctx->adata.keylen_pad)
466 dma_sync_single_for_device(ctx->jrdev,
467 ctx->adata.key_dma,
468 ctx->adata.keylen_pad,
471 ret = gen_split_key(ctx->jrdev, ctx->key, &ctx->adata, key,
487 struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash);
488 struct device *jrdev = ctx->jrdev;
493 memcpy(ctx->key, key, keylen);
494 dma_sync_single_for_device(jrdev, ctx->adata.key_dma, keylen,
496 ctx->adata.keylen = keylen;
498 print_hex_dump_debug("axcbc ctx.key@" __stringify(__LINE__)" : ",
499 DUMP_PREFIX_ADDRESS, 16, 4, ctx->key, keylen, 1);
507 struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash);
515 ctx->adata.key_virt = key;
516 ctx->adata.keylen = keylen;
518 print_hex_dump_debug("acmac ctx.key@" __stringify(__LINE__)" : ",
584 struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash);
600 print_hex_dump_debug("ctx@"__stringify(__LINE__)": ",
602 ctx->ctx_len, 1);
633 struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash);
646 ahash_unmap_ctx(jrdev, edesc, req, ctx->ctx_len, dir);
658 print_hex_dump_debug("ctx@"__stringify(__LINE__)": ",
660 ctx->ctx_len, 1);
698 struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash);
707 dev_err(ctx->jrdev, "could not allocate extended descriptor\n");
719 static int ahash_edesc_add_src(struct caam_hash_ctx *ctx,
735 src_dma = dma_map_single(ctx->jrdev, sg, sgsize, DMA_TO_DEVICE);
736 if (dma_mapping_error(ctx->jrdev, src_dma)) {
737 dev_err(ctx->jrdev, "unable to map S/G table\n");
758 struct caam_hash_ctx *ctx = crypto_ahash_ctx(crypto_ahash_reqtfm(req));
760 struct device *jrdev = ctx->jrdev;
815 struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash);
817 struct device *jrdev = ctx->jrdev;
835 if ((is_xcbc_aes(ctx->adata.algtype) ||
836 is_cmac_aes(ctx->adata.algtype)) && to_hash >= blocksize &&
871 edesc = ahash_edesc_alloc(req, pad_nents, ctx->sh_desc_update,
872 ctx->sh_desc_update_dma);
881 ret = ctx_map_to_sec4_sg(jrdev, state, ctx->ctx_len,
909 append_seq_in_ptr(desc, edesc->sec4_sg_dma, ctx->ctx_len +
912 append_seq_out_ptr(desc, state->ctx_dma, ctx->ctx_len, 0);
919 ctx->ctx_len, DMA_BIDIRECTIONAL);
932 ahash_unmap_ctx(jrdev, edesc, req, ctx->ctx_len, DMA_BIDIRECTIONAL);
940 struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash);
942 struct device *jrdev = ctx->jrdev;
954 edesc = ahash_edesc_alloc(req, 4, ctx->sh_desc_fin,
955 ctx->sh_desc_fin_dma);
963 ret = ctx_map_to_sec4_sg(jrdev, state, ctx->ctx_len,
982 append_seq_in_ptr(desc, edesc->sec4_sg_dma, ctx->ctx_len + buflen,
1001 struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash);
1003 struct device *jrdev = ctx->jrdev;
1033 ctx->sh_desc_fin, ctx->sh_desc_fin_dma);
1043 ret = ctx_map_to_sec4_sg(jrdev, state, ctx->ctx_len,
1052 ret = ahash_edesc_add_src(ctx, edesc, req, mapped_nents,
1053 sec4_sg_src_index, ctx->ctx_len + buflen,
1075 struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash);
1077 struct device *jrdev = ctx->jrdev;
1105 ctx->sh_desc_digest, ctx->sh_desc_digest_dma);
1113 ret = ahash_edesc_add_src(ctx, edesc, req, mapped_nents, 0, 0,
1142 struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash);
1144 struct device *jrdev = ctx->jrdev;
1153 edesc = ahash_edesc_alloc(req, 0, ctx->sh_desc_digest,
1154 ctx->sh_desc_digest_dma);
1191 struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash);
1193 struct device *jrdev = ctx->jrdev;
1211 if ((is_xcbc_aes(ctx->adata.algtype) ||
1212 is_cmac_aes(ctx->adata.algtype)) && to_hash >= blocksize &&
1247 ctx->sh_desc_update_first,
1248 ctx->sh_desc_update_first_dma);
1276 ret = map_seq_out_ptr_ctx(desc, jrdev, state, ctx->ctx_len);
1285 ctx->ctx_len, DMA_TO_DEVICE);
1303 ahash_unmap_ctx(jrdev, edesc, req, ctx->ctx_len, DMA_TO_DEVICE);
1312 struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash);
1314 struct device *jrdev = ctx->jrdev;
1345 ctx->sh_desc_digest, ctx->sh_desc_digest_dma);
1360 ret = ahash_edesc_add_src(ctx, edesc, req, mapped_nents, 1, buflen,
1388 struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash);
1390 struct device *jrdev = ctx->jrdev;
1408 if ((is_xcbc_aes(ctx->adata.algtype) ||
1409 is_cmac_aes(ctx->adata.algtype)) && to_hash >= blocksize &&
1440 ctx->sh_desc_update_first,
1441 ctx->sh_desc_update_first_dma);
1449 ret = ahash_edesc_add_src(ctx, edesc, req, mapped_nents, 0, 0,
1456 ret = map_seq_out_ptr_ctx(desc, jrdev, state, ctx->ctx_len);
1465 ctx->ctx_len, DMA_TO_DEVICE);
1486 ahash_unmap_ctx(jrdev, edesc, req, ctx->ctx_len, DMA_TO_DEVICE);
1762 struct caam_hash_ctx *ctx = crypto_tfm_ctx(tfm);
1779 ctx->jrdev = caam_jr_alloc();
1780 if (IS_ERR(ctx->jrdev)) {
1782 return PTR_ERR(ctx->jrdev);
1785 priv = dev_get_drvdata(ctx->jrdev->parent);
1788 ctx->dir = DMA_TO_DEVICE;
1789 ctx->key_dir = DMA_BIDIRECTIONAL;
1790 ctx->adata.algtype = OP_TYPE_CLASS1_ALG | caam_hash->alg_type;
1791 ctx->ctx_len = 48;
1793 ctx->dir = DMA_TO_DEVICE;
1794 ctx->key_dir = DMA_NONE;
1795 ctx->adata.algtype = OP_TYPE_CLASS1_ALG | caam_hash->alg_type;
1796 ctx->ctx_len = 32;
1799 ctx->dir = DMA_BIDIRECTIONAL;
1800 ctx->key_dir = alg->setkey ? DMA_TO_DEVICE : DMA_NONE;
1802 ctx->dir = DMA_TO_DEVICE;
1803 ctx->key_dir = DMA_NONE;
1805 ctx->adata.algtype = OP_TYPE_CLASS2_ALG | caam_hash->alg_type;
1806 ctx->ctx_len = runninglen[(ctx->adata.algtype &
1811 if (ctx->key_dir != DMA_NONE) {
1812 ctx->adata.key_dma = dma_map_single_attrs(ctx->jrdev, ctx->key,
1813 ARRAY_SIZE(ctx->key),
1814 ctx->key_dir,
1816 if (dma_mapping_error(ctx->jrdev, ctx->adata.key_dma)) {
1817 dev_err(ctx->jrdev, "unable to map key\n");
1818 caam_jr_free(ctx->jrdev);
1823 dma_addr = dma_map_single_attrs(ctx->jrdev, ctx->sh_desc_update,
1826 ctx->dir, DMA_ATTR_SKIP_CPU_SYNC);
1827 if (dma_mapping_error(ctx->jrdev, dma_addr)) {
1828 dev_err(ctx->jrdev, "unable to map shared descriptors\n");
1830 if (ctx->key_dir != DMA_NONE)
1831 dma_unmap_single_attrs(ctx->jrdev, ctx->adata.key_dma,
1832 ARRAY_SIZE(ctx->key),
1833 ctx->key_dir,
1836 caam_jr_free(ctx->jrdev);
1840 ctx->sh_desc_update_dma = dma_addr;
1841 ctx->sh_desc_update_first_dma = dma_addr +
1845 ctx->sh_desc_fin_dma = dma_addr + offsetof(struct caam_hash_ctx,
1848 ctx->sh_desc_digest_dma = dma_addr + offsetof(struct caam_hash_ctx,
1852 ctx->enginectx.op.do_one_request = ahash_do_one_req;
1866 struct caam_hash_ctx *ctx = crypto_tfm_ctx(tfm);
1868 dma_unmap_single_attrs(ctx->jrdev, ctx->sh_desc_update_dma,
1871 ctx->dir, DMA_ATTR_SKIP_CPU_SYNC);
1872 if (ctx->key_dir != DMA_NONE)
1873 dma_unmap_single_attrs(ctx->jrdev, ctx->adata.key_dma,
1874 ARRAY_SIZE(ctx->key), ctx->key_dir,
1876 caam_jr_free(ctx->jrdev);