Lines Matching refs:header

236 static void vmw_cmdbuf_header_inline_free(struct vmw_cmdbuf_header *header)  in vmw_cmdbuf_header_inline_free()  argument
240 if (WARN_ON_ONCE(!header->inline_space)) in vmw_cmdbuf_header_inline_free()
243 dheader = container_of(header->cb_header, struct vmw_cmdbuf_dheader, in vmw_cmdbuf_header_inline_free()
245 dma_pool_free(header->man->dheaders, dheader, header->handle); in vmw_cmdbuf_header_inline_free()
246 kfree(header); in vmw_cmdbuf_header_inline_free()
257 static void __vmw_cmdbuf_header_free(struct vmw_cmdbuf_header *header) in __vmw_cmdbuf_header_free() argument
259 struct vmw_cmdbuf_man *man = header->man; in __vmw_cmdbuf_header_free()
263 if (header->inline_space) { in __vmw_cmdbuf_header_free()
264 vmw_cmdbuf_header_inline_free(header); in __vmw_cmdbuf_header_free()
268 drm_mm_remove_node(&header->node); in __vmw_cmdbuf_header_free()
270 if (header->cb_header) in __vmw_cmdbuf_header_free()
271 dma_pool_free(man->headers, header->cb_header, in __vmw_cmdbuf_header_free()
272 header->handle); in __vmw_cmdbuf_header_free()
273 kfree(header); in __vmw_cmdbuf_header_free()
282 void vmw_cmdbuf_header_free(struct vmw_cmdbuf_header *header) in vmw_cmdbuf_header_free() argument
284 struct vmw_cmdbuf_man *man = header->man; in vmw_cmdbuf_header_free()
287 if (header->inline_space) { in vmw_cmdbuf_header_free()
288 vmw_cmdbuf_header_inline_free(header); in vmw_cmdbuf_header_free()
292 __vmw_cmdbuf_header_free(header); in vmw_cmdbuf_header_free()
302 static int vmw_cmdbuf_header_submit(struct vmw_cmdbuf_header *header) in vmw_cmdbuf_header_submit() argument
304 struct vmw_cmdbuf_man *man = header->man; in vmw_cmdbuf_header_submit()
307 val = upper_32_bits(header->handle); in vmw_cmdbuf_header_submit()
310 val = lower_32_bits(header->handle); in vmw_cmdbuf_header_submit()
311 val |= header->cb_context & SVGA_CB_CONTEXT_MASK; in vmw_cmdbuf_header_submit()
314 return header->cb_header->status; in vmw_cmdbuf_header_submit()
476 struct vmw_cmdbuf_header *header, in vmw_cmdbuf_ctx_add() argument
479 if (!(header->cb_header->flags & SVGA_CB_FLAG_DX_CONTEXT)) in vmw_cmdbuf_ctx_add()
480 header->cb_header->dxContext = 0; in vmw_cmdbuf_ctx_add()
481 header->cb_context = cb_context; in vmw_cmdbuf_ctx_add()
482 list_add_tail(&header->list, &man->ctx[cb_context].submitted); in vmw_cmdbuf_ctx_add()
532 SVGA3dCmdHeader *header = (SVGA3dCmdHeader *) in vmw_cmdbuf_work_func() local
540 if (!vmw_cmd_describe(header, &error_cmd_size, &cmd_name)) { in vmw_cmdbuf_work_func()
862 struct vmw_cmdbuf_header *header, in vmw_cmdbuf_space_pool() argument
873 ret = vmw_cmdbuf_alloc_space(man, &header->node, size, interruptible); in vmw_cmdbuf_space_pool()
878 header->cb_header = dma_pool_zalloc(man->headers, GFP_KERNEL, in vmw_cmdbuf_space_pool()
879 &header->handle); in vmw_cmdbuf_space_pool()
880 if (!header->cb_header) { in vmw_cmdbuf_space_pool()
885 header->size = header->node.size << PAGE_SHIFT; in vmw_cmdbuf_space_pool()
886 cb_hdr = header->cb_header; in vmw_cmdbuf_space_pool()
887 offset = header->node.start << PAGE_SHIFT; in vmw_cmdbuf_space_pool()
888 header->cmd = man->map + offset; in vmw_cmdbuf_space_pool()
901 drm_mm_remove_node(&header->node); in vmw_cmdbuf_space_pool()
916 struct vmw_cmdbuf_header *header, in vmw_cmdbuf_space_inline() argument
926 &header->handle); in vmw_cmdbuf_space_inline()
930 header->inline_space = true; in vmw_cmdbuf_space_inline()
931 header->size = VMW_CMDBUF_INLINE_SIZE; in vmw_cmdbuf_space_inline()
933 header->cb_header = cb_hdr; in vmw_cmdbuf_space_inline()
934 header->cmd = dheader->cmd; in vmw_cmdbuf_space_inline()
937 cb_hdr->ptr.pa = (u64)header->handle + in vmw_cmdbuf_space_inline()
960 struct vmw_cmdbuf_header *header; in vmw_cmdbuf_alloc() local
965 header = kzalloc(sizeof(*header), GFP_KERNEL); in vmw_cmdbuf_alloc()
966 if (!header) in vmw_cmdbuf_alloc()
970 ret = vmw_cmdbuf_space_inline(man, header, size); in vmw_cmdbuf_alloc()
972 ret = vmw_cmdbuf_space_pool(man, header, size, interruptible); in vmw_cmdbuf_alloc()
975 kfree(header); in vmw_cmdbuf_alloc()
979 header->man = man; in vmw_cmdbuf_alloc()
980 INIT_LIST_HEAD(&header->list); in vmw_cmdbuf_alloc()
981 header->cb_header->status = SVGA_CB_STATUS_NONE; in vmw_cmdbuf_alloc()
982 *p_header = header; in vmw_cmdbuf_alloc()
984 return header->cmd; in vmw_cmdbuf_alloc()
1076 struct vmw_cmdbuf_header *header) in vmw_cmdbuf_reserve() argument
1078 if (!header) in vmw_cmdbuf_reserve()
1081 if (size > header->size) in vmw_cmdbuf_reserve()
1085 header->cb_header->flags |= SVGA_CB_FLAG_DX_CONTEXT; in vmw_cmdbuf_reserve()
1086 header->cb_header->dxContext = ctx_id; in vmw_cmdbuf_reserve()
1089 header->reserved = size; in vmw_cmdbuf_reserve()
1090 return header->cmd; in vmw_cmdbuf_reserve()
1103 struct vmw_cmdbuf_header *header, bool flush) in vmw_cmdbuf_commit() argument
1105 if (!header) { in vmw_cmdbuf_commit()
1112 WARN_ON(size > header->reserved); in vmw_cmdbuf_commit()
1113 man->cur = header; in vmw_cmdbuf_commit()
1116 header->cb_header->flags &= ~SVGA_CB_FLAG_DX_CONTEXT; in vmw_cmdbuf_commit()
1136 struct vmw_cmdbuf_header *header; in vmw_cmdbuf_send_device_command() local
1138 void *cmd = vmw_cmdbuf_alloc(man, size, false, &header); in vmw_cmdbuf_send_device_command()
1144 header->cb_header->length = size; in vmw_cmdbuf_send_device_command()
1145 header->cb_context = SVGA_CB_CONTEXT_DEVICE; in vmw_cmdbuf_send_device_command()
1147 status = vmw_cmdbuf_header_submit(header); in vmw_cmdbuf_send_device_command()
1149 vmw_cmdbuf_header_free(header); in vmw_cmdbuf_send_device_command()