Lines Matching refs:cctx

252 	struct fastrpc_channel_ctx *cctx;
287 struct fastrpc_channel_ctx *cctx;
298 struct fastrpc_channel_ctx *cctx;
320 int vmid = map->fl->cctx->vmperms[0].vmid;
456 struct device *rdev = &fl->cctx->rpdev->dev;
463 struct fastrpc_channel_ctx *cctx;
465 cctx = container_of(ref, struct fastrpc_channel_ctx, refcount);
467 kfree(cctx);
470 static void fastrpc_channel_ctx_get(struct fastrpc_channel_ctx *cctx)
472 kref_get(&cctx->refcount);
475 static void fastrpc_channel_ctx_put(struct fastrpc_channel_ctx *cctx)
477 kref_put(&cctx->refcount, fastrpc_channel_ctx_free);
483 struct fastrpc_channel_ctx *cctx;
488 cctx = ctx->cctx;
496 spin_lock_irqsave(&cctx->lock, flags);
497 idr_remove(&cctx->ctx_idr, ctx->ctxid >> 4);
498 spin_unlock_irqrestore(&cctx->lock, flags);
504 fastrpc_channel_ctx_put(cctx);
578 struct fastrpc_channel_ctx *cctx = user->cctx;
612 fastrpc_channel_ctx_get(cctx);
618 ctx->cctx = cctx;
626 spin_lock_irqsave(&cctx->lock, flags);
627 ret = idr_alloc_cyclic(&cctx->ctx_idr, ctx, 1,
630 spin_unlock_irqrestore(&cctx->lock, flags);
634 spin_unlock_irqrestore(&cctx->lock, flags);
643 fastrpc_channel_ctx_put(cctx);
815 dst_perms[1].vmid = fl->cctx->vmperms[0].vmid;
1109 struct fastrpc_channel_ctx *cctx;
1114 cctx = fl->cctx;
1128 ret = rpmsg_send(cctx->rpdev->ept, (void *)msg, sizeof(*msg));
1149 if (!fl->cctx->rpdev)
1206 list_add_tail(&buf->node, &fl->cctx->invoke_interrupted_mmaps);
1219 if (!fl->is_secure_dev && fl->cctx->secure) {
1225 if (!fl->cctx->unsigned_support || !unsigned_pd_request) {
1226 dev_err(&fl->cctx->rpdev->dev, "Error: Untrusted application trying to offload to signed PD");
1274 if (!fl->cctx->remote_heap) {
1276 &fl->cctx->remote_heap);
1281 if (fl->cctx->vmcount) {
1282 err = qcom_scm_assign_mem(fl->cctx->remote_heap->phys,
1283 (u64)fl->cctx->remote_heap->size,
1284 &fl->cctx->perms,
1285 fl->cctx->vmperms, fl->cctx->vmcount);
1288 fl->cctx->remote_heap->phys, fl->cctx->remote_heap->size, err);
1307 pages[0].addr = fl->cctx->remote_heap->phys;
1308 pages[0].size = fl->cctx->remote_heap->size;
1325 if (fl->cctx->vmcount) {
1330 for (i = 0; i < fl->cctx->vmcount; i++)
1331 src_perms |= BIT(fl->cctx->vmperms[i].vmid);
1335 err = qcom_scm_assign_mem(fl->cctx->remote_heap->phys,
1336 (u64)fl->cctx->remote_heap->size,
1340 fl->cctx->remote_heap->phys, fl->cctx->remote_heap->size, err);
1343 fastrpc_buf_free(fl->cctx->remote_heap);
1469 struct fastrpc_channel_ctx *cctx)
1475 spin_lock_irqsave(&cctx->lock, flags);
1476 for (i = 0; i < cctx->sesscount; i++) {
1477 if (!cctx->session[i].used && cctx->session[i].valid) {
1478 cctx->session[i].used = true;
1479 session = &cctx->session[i];
1483 spin_unlock_irqrestore(&cctx->lock, flags);
1488 static void fastrpc_session_free(struct fastrpc_channel_ctx *cctx,
1493 spin_lock_irqsave(&cctx->lock, flags);
1495 spin_unlock_irqrestore(&cctx->lock, flags);
1517 struct fastrpc_channel_ctx *cctx = fl->cctx;
1525 spin_lock_irqsave(&cctx->lock, flags);
1527 spin_unlock_irqrestore(&cctx->lock, flags);
1545 fastrpc_session_free(cctx, fl->sctx);
1546 fastrpc_channel_ctx_put(cctx);
1557 struct fastrpc_channel_ctx *cctx;
1563 cctx = fdevice->cctx;
1570 fastrpc_channel_ctx_get(cctx);
1580 fl->cctx = cctx;
1583 fl->sctx = fastrpc_session_alloc(cctx);
1585 dev_err(&cctx->rpdev->dev, "No session available\n");
1592 spin_lock_irqsave(&cctx->lock, flags);
1593 list_add_tail(&fl->user, &cctx->users);
1594 spin_unlock_irqrestore(&cctx->lock, flags);
1713 struct fastrpc_channel_ctx *cctx = fl->cctx;
1720 spin_lock_irqsave(&cctx->lock, flags);
1722 if (cctx->valid_attributes) {
1723 spin_unlock_irqrestore(&cctx->lock, flags);
1726 spin_unlock_irqrestore(&cctx->lock, flags);
1734 dev_info(&cctx->rpdev->dev,
1739 dev_err(&cctx->rpdev->dev, "Error: dsp information is incorrect err: %d\n", err);
1744 spin_lock_irqsave(&cctx->lock, flags);
1745 memcpy(cctx->dsp_attributes, dsp_attributes, FASTRPC_MAX_DSP_ATTRIBUTES_LEN);
1746 cctx->valid_attributes = true;
1747 spin_unlock_irqrestore(&cctx->lock, flags);
1750 cap->capability = cctx->dsp_attributes[attribute_id];
1764 dev_err(&fl->cctx->rpdev->dev, "Error: Invalid domain id:%d, err:%d\n",
1771 dev_err(&fl->cctx->rpdev->dev, "Error: modem not supported %d\n", err);
1776 dev_err(&fl->cctx->rpdev->dev, "Error: invalid attribute: %d, err: %d\n",
1917 if (req.flags == ADSP_MMAP_REMOTE_HEAP_ADDR && fl->cctx->vmcount) {
1919 &fl->cctx->perms, fl->cctx->vmperms, fl->cctx->vmcount);
2138 struct fastrpc_channel_ctx *cctx;
2145 cctx = dev_get_drvdata(dev->parent);
2146 if (!cctx)
2151 spin_lock_irqsave(&cctx->lock, flags);
2152 if (cctx->sesscount >= FASTRPC_MAX_SESSIONS) {
2154 spin_unlock_irqrestore(&cctx->lock, flags);
2157 sess = &cctx->session[cctx->sesscount++];
2170 if (cctx->sesscount >= FASTRPC_MAX_SESSIONS)
2172 dup_sess = &cctx->session[cctx->sesscount++];
2176 spin_unlock_irqrestore(&cctx->lock, flags);
2188 struct fastrpc_channel_ctx *cctx = dev_get_drvdata(pdev->dev.parent);
2193 spin_lock_irqsave(&cctx->lock, flags);
2195 if (cctx->session[i].sid == sess->sid) {
2196 cctx->session[i].valid = false;
2197 cctx->sesscount--;
2200 spin_unlock_irqrestore(&cctx->lock, flags);
2220 static int fastrpc_device_register(struct device *dev, struct fastrpc_channel_ctx *cctx,
2231 fdev->cctx = cctx;
2242 cctx->secure_fdevice = fdev;
2244 cctx->fdevice = fdev;
2372 struct fastrpc_channel_ctx *cctx = dev_get_drvdata(&rpdev->dev);
2378 spin_lock_irqsave(&cctx->lock, flags);
2379 cctx->rpdev = NULL;
2380 list_for_each_entry(user, &cctx->users, user)
2382 spin_unlock_irqrestore(&cctx->lock, flags);
2384 if (cctx->fdevice)
2385 misc_deregister(&cctx->fdevice->miscdev);
2387 if (cctx->secure_fdevice)
2388 misc_deregister(&cctx->secure_fdevice->miscdev);
2390 list_for_each_entry_safe(buf, b, &cctx->invoke_interrupted_mmaps, node)
2393 if (cctx->remote_heap)
2394 fastrpc_buf_free(cctx->remote_heap);
2398 fastrpc_channel_ctx_put(cctx);
2404 struct fastrpc_channel_ctx *cctx = dev_get_drvdata(&rpdev->dev);
2415 spin_lock_irqsave(&cctx->lock, flags);
2416 ctx = idr_find(&cctx->ctx_idr, ctxid);
2417 spin_unlock_irqrestore(&cctx->lock, flags);