Lines Matching defs:header

142  * @cb_header: Device command buffer header, allocated from a DMA pool.
167 * struct vmw_cmdbuf_dheader - Device command buffer header with inline
170 * @cb_header: Device command buffer header.
233 * @header: Pointer to the header to free.
235 static void vmw_cmdbuf_header_inline_free(struct vmw_cmdbuf_header *header)
239 if (WARN_ON_ONCE(!header->inline_space))
242 dheader = container_of(header->cb_header, struct vmw_cmdbuf_dheader,
244 dma_pool_free(header->man->dheaders, dheader, header->handle);
245 kfree(header);
252 * @header: Pointer to the header to free.
256 static void __vmw_cmdbuf_header_free(struct vmw_cmdbuf_header *header)
258 struct vmw_cmdbuf_man *man = header->man;
262 if (header->inline_space) {
263 vmw_cmdbuf_header_inline_free(header);
267 drm_mm_remove_node(&header->node);
269 if (header->cb_header)
270 dma_pool_free(man->headers, header->cb_header,
271 header->handle);
272 kfree(header);
279 * @header: Pointer to the header to free.
281 void vmw_cmdbuf_header_free(struct vmw_cmdbuf_header *header)
283 struct vmw_cmdbuf_man *man = header->man;
286 if (header->inline_space) {
287 vmw_cmdbuf_header_inline_free(header);
291 __vmw_cmdbuf_header_free(header);
299 * @header: The header of the buffer to submit.
301 static int vmw_cmdbuf_header_submit(struct vmw_cmdbuf_header *header)
303 struct vmw_cmdbuf_man *man = header->man;
306 val = upper_32_bits(header->handle);
309 val = lower_32_bits(header->handle);
310 val |= header->cb_context & SVGA_CB_CONTEXT_MASK;
313 return header->cb_header->status;
409 WARN_ONCE(true, "Command buffer header error.\n");
466 * @header: The header of the buffer to submit.
469 * This function adds @header to the "submitted" queue of the command
475 struct vmw_cmdbuf_header *header,
478 if (!(header->cb_header->flags & SVGA_CB_FLAG_DX_CONTEXT))
479 header->cb_header->dxContext = 0;
480 header->cb_context = cb_context;
481 list_add_tail(&header->list, &man->ctx[cb_context].submitted);
531 SVGA3dCmdHeader *header = (SVGA3dCmdHeader *)
539 if (!vmw_cmd_describe(header, &error_cmd_size, &cmd_name)) {
852 * vmw_cmdbuf_space_pool - Set up a command buffer header with command buffer
856 * @header: Pointer to the header to set up.
861 struct vmw_cmdbuf_header *header,
872 ret = vmw_cmdbuf_alloc_space(man, &header->node, size, interruptible);
877 header->cb_header = dma_pool_zalloc(man->headers, GFP_KERNEL,
878 &header->handle);
879 if (!header->cb_header) {
884 header->size = header->node.size << PAGE_SHIFT;
885 cb_hdr = header->cb_header;
886 offset = header->node.start << PAGE_SHIFT;
887 header->cmd = man->map + offset;
900 drm_mm_remove_node(&header->node);
907 * vmw_cmdbuf_space_inline - Set up a command buffer header with
911 * @header: Pointer to the header to set up.
915 struct vmw_cmdbuf_header *header,
925 &header->handle);
929 header->inline_space = true;
930 header->size = VMW_CMDBUF_INLINE_SIZE;
932 header->cb_header = cb_hdr;
933 header->cmd = dheader->cmd;
936 cb_hdr->ptr.pa = (u64)header->handle +
943 * vmw_cmdbuf_alloc - Allocate a command buffer header complete with
949 * @p_header: points to a header pointer to populate on successful return.
952 * returns an error pointer. The header pointer returned in @p_header should
959 struct vmw_cmdbuf_header *header;
964 header = kzalloc(sizeof(*header), GFP_KERNEL);
965 if (!header)
969 ret = vmw_cmdbuf_space_inline(man, header, size);
971 ret = vmw_cmdbuf_space_pool(man, header, size, interruptible);
974 kfree(header);
978 header->man = man;
979 INIT_LIST_HEAD(&header->list);
980 header->cb_header->status = SVGA_CB_STATUS_NONE;
981 *p_header = header;
983 return header->cmd;
1067 * @header: Header of the command buffer. NULL if the current command buffer
1075 struct vmw_cmdbuf_header *header)
1077 if (!header)
1080 if (size > header->size)
1084 header->cb_header->flags |= SVGA_CB_FLAG_DX_CONTEXT;
1085 header->cb_header->dxContext = ctx_id;
1088 header->reserved = size;
1089 return header->cmd;
1097 * @header: Header of the command buffer. NULL if the current command buffer
1102 struct vmw_cmdbuf_header *header, bool flush)
1104 if (!header) {
1111 WARN_ON(size > header->reserved);
1112 man->cur = header;
1115 header->cb_header->flags &= ~SVGA_CB_FLAG_DX_CONTEXT;
1135 struct vmw_cmdbuf_header *header;
1137 void *cmd = vmw_cmdbuf_alloc(man, size, false, &header);
1143 header->cb_header->length = size;
1144 header->cb_context = SVGA_CB_CONTEXT_DEVICE;
1146 status = vmw_cmdbuf_header_submit(header);
1148 vmw_cmdbuf_header_free(header);