Lines Matching refs:header

235 static void vmw_cmdbuf_header_inline_free(struct vmw_cmdbuf_header *header)  in vmw_cmdbuf_header_inline_free()  argument
239 if (WARN_ON_ONCE(!header->inline_space)) in vmw_cmdbuf_header_inline_free()
242 dheader = container_of(header->cb_header, struct vmw_cmdbuf_dheader, in vmw_cmdbuf_header_inline_free()
244 dma_pool_free(header->man->dheaders, dheader, header->handle); in vmw_cmdbuf_header_inline_free()
245 kfree(header); in vmw_cmdbuf_header_inline_free()
256 static void __vmw_cmdbuf_header_free(struct vmw_cmdbuf_header *header) in __vmw_cmdbuf_header_free() argument
258 struct vmw_cmdbuf_man *man = header->man; in __vmw_cmdbuf_header_free()
262 if (header->inline_space) { in __vmw_cmdbuf_header_free()
263 vmw_cmdbuf_header_inline_free(header); in __vmw_cmdbuf_header_free()
267 drm_mm_remove_node(&header->node); in __vmw_cmdbuf_header_free()
269 if (header->cb_header) in __vmw_cmdbuf_header_free()
270 dma_pool_free(man->headers, header->cb_header, in __vmw_cmdbuf_header_free()
271 header->handle); in __vmw_cmdbuf_header_free()
272 kfree(header); in __vmw_cmdbuf_header_free()
281 void vmw_cmdbuf_header_free(struct vmw_cmdbuf_header *header) in vmw_cmdbuf_header_free() argument
283 struct vmw_cmdbuf_man *man = header->man; in vmw_cmdbuf_header_free()
286 if (header->inline_space) { in vmw_cmdbuf_header_free()
287 vmw_cmdbuf_header_inline_free(header); in vmw_cmdbuf_header_free()
291 __vmw_cmdbuf_header_free(header); in vmw_cmdbuf_header_free()
301 static int vmw_cmdbuf_header_submit(struct vmw_cmdbuf_header *header) in vmw_cmdbuf_header_submit() argument
303 struct vmw_cmdbuf_man *man = header->man; in vmw_cmdbuf_header_submit()
306 val = upper_32_bits(header->handle); in vmw_cmdbuf_header_submit()
309 val = lower_32_bits(header->handle); in vmw_cmdbuf_header_submit()
310 val |= header->cb_context & SVGA_CB_CONTEXT_MASK; in vmw_cmdbuf_header_submit()
313 return header->cb_header->status; in vmw_cmdbuf_header_submit()
475 struct vmw_cmdbuf_header *header, in vmw_cmdbuf_ctx_add() argument
478 if (!(header->cb_header->flags & SVGA_CB_FLAG_DX_CONTEXT)) in vmw_cmdbuf_ctx_add()
479 header->cb_header->dxContext = 0; in vmw_cmdbuf_ctx_add()
480 header->cb_context = cb_context; in vmw_cmdbuf_ctx_add()
481 list_add_tail(&header->list, &man->ctx[cb_context].submitted); in vmw_cmdbuf_ctx_add()
531 SVGA3dCmdHeader *header = (SVGA3dCmdHeader *) in vmw_cmdbuf_work_func() local
539 if (!vmw_cmd_describe(header, &error_cmd_size, &cmd_name)) { in vmw_cmdbuf_work_func()
861 struct vmw_cmdbuf_header *header, in vmw_cmdbuf_space_pool() argument
872 ret = vmw_cmdbuf_alloc_space(man, &header->node, size, interruptible); in vmw_cmdbuf_space_pool()
877 header->cb_header = dma_pool_zalloc(man->headers, GFP_KERNEL, in vmw_cmdbuf_space_pool()
878 &header->handle); in vmw_cmdbuf_space_pool()
879 if (!header->cb_header) { in vmw_cmdbuf_space_pool()
884 header->size = header->node.size << PAGE_SHIFT; in vmw_cmdbuf_space_pool()
885 cb_hdr = header->cb_header; in vmw_cmdbuf_space_pool()
886 offset = header->node.start << PAGE_SHIFT; in vmw_cmdbuf_space_pool()
887 header->cmd = man->map + offset; in vmw_cmdbuf_space_pool()
900 drm_mm_remove_node(&header->node); in vmw_cmdbuf_space_pool()
915 struct vmw_cmdbuf_header *header, in vmw_cmdbuf_space_inline() argument
925 &header->handle); in vmw_cmdbuf_space_inline()
929 header->inline_space = true; in vmw_cmdbuf_space_inline()
930 header->size = VMW_CMDBUF_INLINE_SIZE; in vmw_cmdbuf_space_inline()
932 header->cb_header = cb_hdr; in vmw_cmdbuf_space_inline()
933 header->cmd = dheader->cmd; in vmw_cmdbuf_space_inline()
936 cb_hdr->ptr.pa = (u64)header->handle + in vmw_cmdbuf_space_inline()
959 struct vmw_cmdbuf_header *header; in vmw_cmdbuf_alloc() local
964 header = kzalloc(sizeof(*header), GFP_KERNEL); in vmw_cmdbuf_alloc()
965 if (!header) in vmw_cmdbuf_alloc()
969 ret = vmw_cmdbuf_space_inline(man, header, size); in vmw_cmdbuf_alloc()
971 ret = vmw_cmdbuf_space_pool(man, header, size, interruptible); in vmw_cmdbuf_alloc()
974 kfree(header); in vmw_cmdbuf_alloc()
978 header->man = man; in vmw_cmdbuf_alloc()
979 INIT_LIST_HEAD(&header->list); in vmw_cmdbuf_alloc()
980 header->cb_header->status = SVGA_CB_STATUS_NONE; in vmw_cmdbuf_alloc()
981 *p_header = header; in vmw_cmdbuf_alloc()
983 return header->cmd; in vmw_cmdbuf_alloc()
1075 struct vmw_cmdbuf_header *header) in vmw_cmdbuf_reserve() argument
1077 if (!header) in vmw_cmdbuf_reserve()
1080 if (size > header->size) in vmw_cmdbuf_reserve()
1084 header->cb_header->flags |= SVGA_CB_FLAG_DX_CONTEXT; in vmw_cmdbuf_reserve()
1085 header->cb_header->dxContext = ctx_id; in vmw_cmdbuf_reserve()
1088 header->reserved = size; in vmw_cmdbuf_reserve()
1089 return header->cmd; in vmw_cmdbuf_reserve()
1102 struct vmw_cmdbuf_header *header, bool flush) in vmw_cmdbuf_commit() argument
1104 if (!header) { in vmw_cmdbuf_commit()
1111 WARN_ON(size > header->reserved); in vmw_cmdbuf_commit()
1112 man->cur = header; in vmw_cmdbuf_commit()
1115 header->cb_header->flags &= ~SVGA_CB_FLAG_DX_CONTEXT; in vmw_cmdbuf_commit()
1135 struct vmw_cmdbuf_header *header; in vmw_cmdbuf_send_device_command() local
1137 void *cmd = vmw_cmdbuf_alloc(man, size, false, &header); in vmw_cmdbuf_send_device_command()
1143 header->cb_header->length = size; in vmw_cmdbuf_send_device_command()
1144 header->cb_context = SVGA_CB_CONTEXT_DEVICE; in vmw_cmdbuf_send_device_command()
1146 status = vmw_cmdbuf_header_submit(header); in vmw_cmdbuf_send_device_command()
1148 vmw_cmdbuf_header_free(header); in vmw_cmdbuf_send_device_command()