Lines Matching refs:resources

58 	__le32 handle; /* unique id to track the resources consumed */
297 static void save_dbc_buf(struct qaic_device *qdev, struct ioctl_resources *resources,
300 u32 dbc_id = resources->dbc_id;
302 if (resources->buf) {
304 qdev->dbc[dbc_id].req_q_base = resources->buf;
305 qdev->dbc[dbc_id].rsp_q_base = resources->rsp_q_base;
306 qdev->dbc[dbc_id].dma_addr = resources->dma_addr;
307 qdev->dbc[dbc_id].total_size = resources->total_size;
308 qdev->dbc[dbc_id].nelem = resources->nelem;
311 resources->buf = NULL;
315 static void free_dbc_buf(struct qaic_device *qdev, struct ioctl_resources *resources)
317 if (resources->buf)
318 dma_free_coherent(&qdev->pdev->dev, resources->total_size, resources->buf,
319 resources->dma_addr);
320 resources->buf = NULL;
323 static void free_dma_xfers(struct qaic_device *qdev, struct ioctl_resources *resources)
329 list_for_each_entry_safe(xfer, x, &resources->dma_xfers, list) {
393 struct ioctl_resources *resources, struct dma_xfer *xfer)
403 if (check_add_overflow(in_trans->addr, resources->xferred_dma_size, &xfer_start_addr))
406 if (in_trans->size < resources->xferred_dma_size)
408 remaining = in_trans->size - resources->xferred_dma_size;
481 struct ioctl_resources *resources, u32 msg_hdr_len, u32 *size,
543 resources->xferred_dma_size += dma_chunk_len;
561 u32 *user_len, struct ioctl_resources *resources, struct qaic_user *usr)
586 ret = find_and_map_user_pages(qdev, in_trans, resources, xfer);
592 ret = encode_addr_size_pairs(xfer, wrappers, resources, msg_hdr_len, &size, &out_trans);
609 if (resources->dma_chunk_id) {
610 out_trans->dma_chunk_id = cpu_to_le32(resources->dma_chunk_id);
612 while (resources->dma_chunk_id == 0)
613 resources->dma_chunk_id = atomic_inc_return(&usr->chunk_id);
615 out_trans->dma_chunk_id = cpu_to_le32(resources->dma_chunk_id);
617 resources->trans_hdr = trans;
619 list_add(&xfer->list, &resources->dma_xfers);
630 u32 *user_len, struct ioctl_resources *resources)
693 resources->buf = buf;
694 resources->dma_addr = dma_addr;
695 resources->total_size = size;
696 resources->nelem = nelem;
697 resources->rsp_q_base = buf + size - nelem * get_dbc_rsp_elem_size();
752 struct wrapper_list *wrappers, struct ioctl_resources *resources,
773 if (resources->dma_chunk_id) {
774 ret = encode_dma(qdev, resources->trans_hdr, wrappers, &user_len, resources, usr);
796 ret = encode_dma(qdev, trans_hdr, wrappers, &user_len, resources, usr);
799 ret = encode_activate(qdev, trans_hdr, wrappers, &user_len, resources);
820 free_dma_xfers(qdev, resources);
821 free_dbc_buf(qdev, resources);
854 u32 *msg_len, struct ioctl_resources *resources, struct qaic_user *usr)
874 if (!resources->buf)
887 * Allocating resources failed on device side. This is not an
892 resources->status = out_trans->status;
893 resources->dbc_id = out_trans->dbc_id;
894 save_dbc_buf(qdev, resources, usr);
915 * Releasing resources failed on the device side, which puts
960 struct wire_msg *msg, struct ioctl_resources *resources,
993 ret = decode_activate(qdev, trans_hdr, user_msg, &msg_len, resources, usr);
1175 struct manage_msg *user_msg, struct ioctl_resources *resources,
1198 ret = encode_message(qdev, user_msg, wrappers, resources, usr);
1199 if (ret && resources->dma_chunk_id)
1200 ret = abort_dma_cont(qdev, wrappers, resources->dma_chunk_id);
1228 free_dma_xfers(qdev, resources);
1244 struct ioctl_resources resources;
1248 memset(&resources, 0, sizeof(struct ioctl_resources));
1250 INIT_LIST_HEAD(&resources.dma_xfers);
1257 ret = qaic_manage_msg_xfer(qdev, usr, user_msg, &resources, &rsp);
1267 if (le32_to_cpu(dma_cont->dma_chunk_id) == resources.dma_chunk_id &&
1268 le64_to_cpu(dma_cont->xferred_size) == resources.xferred_dma_size) {
1277 ret = decode_message(qdev, user_msg, rsp, &resources, usr);
1280 free_dbc_buf(qdev, &resources);