Lines Matching refs:fl
117 struct fastrpc_user *fl; member
136 struct fastrpc_user *fl; member
163 struct fastrpc_user *fl; member
236 static int fastrpc_map_find(struct fastrpc_user *fl, int fd, in fastrpc_map_find() argument
241 mutex_lock(&fl->mutex); in fastrpc_map_find()
242 list_for_each_entry(map, &fl->maps, node) { in fastrpc_map_find()
246 mutex_unlock(&fl->mutex); in fastrpc_map_find()
250 mutex_unlock(&fl->mutex); in fastrpc_map_find()
262 static int fastrpc_buf_alloc(struct fastrpc_user *fl, struct device *dev, in fastrpc_buf_alloc() argument
274 buf->fl = fl; in fastrpc_buf_alloc()
288 if (fl->sctx && fl->sctx->sid) in fastrpc_buf_alloc()
289 buf->phys += ((u64)fl->sctx->sid << 32); in fastrpc_buf_alloc()
423 ctx->fl = user; in fastrpc_context_alloc()
593 static int fastrpc_map_create(struct fastrpc_user *fl, int fd, in fastrpc_map_create() argument
596 struct fastrpc_session_ctx *sess = fl->sctx; in fastrpc_map_create()
600 if (!fastrpc_map_find(fl, fd, ppmap)) in fastrpc_map_create()
608 map->fl = fl; in fastrpc_map_create()
630 map->phys += ((u64)fl->sctx->sid << 32); in fastrpc_map_create()
636 spin_lock(&fl->lock); in fastrpc_map_create()
637 list_add_tail(&map->node, &fl->maps); in fastrpc_map_create()
638 spin_unlock(&fl->lock); in fastrpc_map_create()
714 struct device *dev = ctx->fl->sctx->dev; in fastrpc_create_maps()
726 err = fastrpc_map_create(ctx->fl, ctx->args[i].fd, in fastrpc_create_maps()
739 struct device *dev = ctx->fl->sctx->dev; in fastrpc_get_args()
759 err = fastrpc_buf_alloc(ctx->fl, dev, pkt_size, &ctx->buf); in fastrpc_get_args()
887 struct fastrpc_user *fl = ctx->fl; in fastrpc_invoke_send() local
890 cctx = fl->cctx; in fastrpc_invoke_send()
891 msg->pid = fl->tgid; in fastrpc_invoke_send()
897 msg->ctx = ctx->ctxid | fl->pd; in fastrpc_invoke_send()
907 static int fastrpc_internal_invoke(struct fastrpc_user *fl, u32 kernel, in fastrpc_internal_invoke() argument
914 if (!fl->sctx) in fastrpc_internal_invoke()
917 if (!fl->cctx->rpdev) in fastrpc_internal_invoke()
920 ctx = fastrpc_context_alloc(fl, kernel, sc, args); in fastrpc_internal_invoke()
933 err = fastrpc_invoke_send(fl->sctx, ctx, kernel, handle); in fastrpc_internal_invoke()
958 spin_lock(&fl->lock); in fastrpc_internal_invoke()
960 spin_unlock(&fl->lock); in fastrpc_internal_invoke()
964 dev_dbg(fl->sctx->dev, "Error: Invoke Failed %d\n", err); in fastrpc_internal_invoke()
969 static int fastrpc_init_create_process(struct fastrpc_user *fl, in fastrpc_init_create_process() argument
1003 inbuf.pgid = fl->tgid; in fastrpc_init_create_process()
1009 fl->pd = 1; in fastrpc_init_create_process()
1012 err = fastrpc_map_create(fl, init.filefd, init.filelen, &map); in fastrpc_init_create_process()
1019 err = fastrpc_buf_alloc(fl, fl->sctx->dev, memlen, in fastrpc_init_create_process()
1024 fl->init_mem = imem; in fastrpc_init_create_process()
1056 err = fastrpc_internal_invoke(fl, true, FASTRPC_INIT_HANDLE, in fastrpc_init_create_process()
1066 fl->init_mem = NULL; in fastrpc_init_create_process()
1070 spin_lock(&fl->lock); in fastrpc_init_create_process()
1072 spin_unlock(&fl->lock); in fastrpc_init_create_process()
1111 static int fastrpc_release_current_dsp_process(struct fastrpc_user *fl) in fastrpc_release_current_dsp_process() argument
1117 tgid = fl->tgid; in fastrpc_release_current_dsp_process()
1124 return fastrpc_internal_invoke(fl, true, FASTRPC_INIT_HANDLE, in fastrpc_release_current_dsp_process()
1130 struct fastrpc_user *fl = (struct fastrpc_user *)file->private_data; in fastrpc_device_release() local
1131 struct fastrpc_channel_ctx *cctx = fl->cctx; in fastrpc_device_release()
1136 fastrpc_release_current_dsp_process(fl); in fastrpc_device_release()
1139 list_del(&fl->user); in fastrpc_device_release()
1142 if (fl->init_mem) in fastrpc_device_release()
1143 fastrpc_buf_free(fl->init_mem); in fastrpc_device_release()
1145 list_for_each_entry_safe(ctx, n, &fl->pending, node) { in fastrpc_device_release()
1150 list_for_each_entry_safe(map, m, &fl->maps, node) { in fastrpc_device_release()
1155 fastrpc_session_free(cctx, fl->sctx); in fastrpc_device_release()
1158 mutex_destroy(&fl->mutex); in fastrpc_device_release()
1159 kfree(fl); in fastrpc_device_release()
1168 struct fastrpc_user *fl = NULL; in fastrpc_device_open() local
1171 fl = kzalloc(sizeof(*fl), GFP_KERNEL); in fastrpc_device_open()
1172 if (!fl) in fastrpc_device_open()
1178 filp->private_data = fl; in fastrpc_device_open()
1179 spin_lock_init(&fl->lock); in fastrpc_device_open()
1180 mutex_init(&fl->mutex); in fastrpc_device_open()
1181 INIT_LIST_HEAD(&fl->pending); in fastrpc_device_open()
1182 INIT_LIST_HEAD(&fl->maps); in fastrpc_device_open()
1183 INIT_LIST_HEAD(&fl->user); in fastrpc_device_open()
1184 fl->tgid = current->tgid; in fastrpc_device_open()
1185 fl->cctx = cctx; in fastrpc_device_open()
1187 fl->sctx = fastrpc_session_alloc(cctx); in fastrpc_device_open()
1188 if (!fl->sctx) { in fastrpc_device_open()
1190 mutex_destroy(&fl->mutex); in fastrpc_device_open()
1191 kfree(fl); in fastrpc_device_open()
1197 list_add_tail(&fl->user, &cctx->users); in fastrpc_device_open()
1203 static int fastrpc_dmabuf_alloc(struct fastrpc_user *fl, char __user *argp) in fastrpc_dmabuf_alloc() argument
1213 err = fastrpc_buf_alloc(fl, fl->sctx->dev, bp.size, &buf); in fastrpc_dmabuf_alloc()
1241 static int fastrpc_init_attach(struct fastrpc_user *fl) in fastrpc_init_attach() argument
1244 int tgid = fl->tgid; in fastrpc_init_attach()
1252 fl->pd = 0; in fastrpc_init_attach()
1254 return fastrpc_internal_invoke(fl, true, FASTRPC_INIT_HANDLE, in fastrpc_init_attach()
1258 static int fastrpc_invoke(struct fastrpc_user *fl, char __user *argp) in fastrpc_invoke() argument
1282 err = fastrpc_internal_invoke(fl, false, inv.handle, inv.sc, args); in fastrpc_invoke()
1291 struct fastrpc_user *fl = (struct fastrpc_user *)file->private_data; in fastrpc_device_ioctl() local
1297 err = fastrpc_invoke(fl, argp); in fastrpc_device_ioctl()
1300 err = fastrpc_init_attach(fl); in fastrpc_device_ioctl()
1303 err = fastrpc_init_create_process(fl, argp); in fastrpc_device_ioctl()
1306 err = fastrpc_dmabuf_alloc(fl, argp); in fastrpc_device_ioctl()