Lines Matching full:command
33 * Size of inline command buffers. Try to make sure that a page size is a
41 * struct vmw_cmdbuf_context - Command buffer context queues
43 * @submitted: List of command buffers that have been submitted to the
45 * @hw_submitted: List of command buffers submitted to hardware.
46 * @preempted: List of preempted command buffers.
58 * struct vmw_cmdbuf_man: - Command buffer manager
60 * @cur_mutex: Mutex protecting the command buffer used for incremental small
61 * kernel command submissions, @cur.
67 * @work: A struct work_struct implementeing command buffer error handling.
70 * @ctx: Array of command buffer context queues. The queues and the context
72 * @error: List of command buffers that have caused device errors.
74 * @mm: Range manager for the command buffer space. Manager allocations and
76 * @cmd_space: Buffer object for the command buffer space, unless we were
79 * @map: Pointer to command buffer space. May be a mapped buffer object or
81 * @cur: Command buffer for small kernel command submissions. Protected by
84 * @default_size: Default size for the @cur command buffer. Immutable.
85 * @max_hw_submitted: Max number of in-flight command buffers the device can
87 * @lock: Spinlock protecting command submission queues.
88 * @header: Pool of DMA memory for device command buffer headers.
90 * @dheaders: Pool of DMA memory for device command buffer headers with trailing
92 * @alloc_queue: Wait queue for processes waiting to allocate command buffer
94 * @idle_queue: Wait queue for processes waiting for command buffer idle.
97 * @using_mob: Whether the command buffer space is a MOB or a contigous DMA
101 * @handle: DMA address handle for the command buffer space if @using_mob is
103 * @size: The size of the command buffer space. Immutable.
136 * struct vmw_cmdbuf_header - Command buffer metadata
138 * @man: The command buffer manager.
139 * @cb_header: Device command buffer header, allocated from a DMA pool.
140 * @cb_context: The device command buffer context.
143 * @handle. The DMA address of @cb_header. Handed to the device on command
145 * @cmd: Pointer to the command buffer space of this buffer.
146 * @size: Size of the command buffer space of this buffer.
148 * @inline_space: Whether inline command buffer space is used.
164 * struct vmw_cmdbuf_dheader - Device command buffer header with inline
165 * command buffer space.
167 * @cb_header: Device command buffer header.
168 * @cmd: Inline command buffer space.
176 * struct vmw_cmdbuf_alloc_info - Command buffer space allocation metadata
178 * @page_size: Size of requested command buffer space in pages.
188 /* Loop over each context in the command buffer manager. */
227 * been used for the device context with inline command buffers.
294 * vmw_cmbuf_header_submit: Submit a command buffer to hardware.
314 * vmw_cmdbuf_ctx_init: Initialize a command buffer context.
316 * @ctx: The command buffer context to initialize
327 * vmw_cmdbuf_ctx_submit: Submit command buffers from a command buffer
330 * @man: The command buffer manager.
331 * @ctx: The command buffer context.
333 * Submits command buffers to hardware until there are no more command
334 * buffers to submit or the hardware can't handle more command buffers.
365 * vmw_cmdbuf_ctx_submit: Process a command buffer context.
367 * @man: The command buffer manager.
368 * @ctx: The command buffer context.
370 * Submit command buffers to hardware if possible, and process finished
405 WARN_ONCE(true, "Command buffer header error.\n"); in vmw_cmdbuf_ctx_process()
409 WARN_ONCE(true, "Undefined command buffer status.\n"); in vmw_cmdbuf_ctx_process()
421 * vmw_cmdbuf_man_process - Process all command buffer contexts and
424 * @man: The command buffer manager.
427 * command buffers left that are not submitted to hardware, Make sure
458 * vmw_cmdbuf_ctx_add - Schedule a command buffer for submission on a
459 * command buffer context
461 * @man: The command buffer manager.
463 * @cb_context: The command buffer context to use.
465 * This function adds @header to the "submitted" queue of the command
466 * buffer context identified by @cb_context. It then calls the command buffer
483 * vmw_cmdbuf_irqthread - The main part of the command buffer interrupt
486 * @man: Pointer to the command buffer manager.
489 * command buffer processor to free finished buffers and submit any
501 * command buffer errors.
505 * Restarting the command buffer context after an error requires process
536 DRM_ERROR("Unknown command causing device error.\n"); in vmw_cmdbuf_work_func()
537 DRM_ERROR("Command buffer offset is %lu\n", in vmw_cmdbuf_work_func()
544 DRM_ERROR("Command \"%s\" causing device error.\n", cmd_name); in vmw_cmdbuf_work_func()
545 DRM_ERROR("Command buffer offset is %lu\n", in vmw_cmdbuf_work_func()
547 DRM_ERROR("Command size is %lu\n", in vmw_cmdbuf_work_func()
578 DRM_ERROR("Failed preempting command buffer contexts\n"); in vmw_cmdbuf_work_func()
582 /* Move preempted command buffers to the preempted queue. */ in vmw_cmdbuf_work_func()
586 * Add the preempted queue after the command buffer in vmw_cmdbuf_work_func()
592 * Finally add all command buffers first in the submitted in vmw_cmdbuf_work_func()
604 DRM_ERROR("Failed restarting command buffer contexts\n"); in vmw_cmdbuf_work_func()
616 * vmw_cmdbuf_man idle - Check whether the command buffer manager is idle.
618 * @man: The command buffer manager.
619 * @check_preempted: Check also the preempted queue for pending command buffers.
647 * __vmw_cmdbuf_cur_flush - Flush the current command buffer for small kernel
648 * command submissions
650 * @man: The command buffer manager.
652 * Flushes the current command buffer without allocating a new one. A new one
679 * vmw_cmdbuf_cur_flush - Flush the current command buffer for small kernel
680 * command submissions
682 * @man: The command buffer manager.
685 * Flushes the current command buffer without allocating a new one. A new one
703 * vmw_cmdbuf_idle - Wait for command buffer manager idle.
705 * @man: The command buffer manager.
709 * Wait until the command buffer manager has processed all command buffers,
750 * @man: The command buffer manager.
782 * @man: The command buffer manager.
847 * vmw_cmdbuf_space_pool - Set up a command buffer header with command buffer
850 * @man: The command buffer manager.
902 * vmw_cmdbuf_space_inline - Set up a command buffer header with
903 * inline command buffer space.
905 * @man: The command buffer manager.
938 * vmw_cmdbuf_alloc - Allocate a command buffer header complete with
939 * command buffer space.
941 * @man: The command buffer manager.
946 * Returns a pointer to command buffer space if successful. Otherwise
983 * command buffer.
985 * @man: The command buffer manager.
990 * Returns a pointer to command buffer space if successful. Otherwise
1033 * vmw_cmdbuf_commit_cur - Commit commands in the current command buffer.
1035 * @man: The command buffer manager.
1037 * @flush: Whether to flush the command buffer immediately.
1056 * vmw_cmdbuf_reserve - Reserve space for commands in a command buffer.
1058 * @man: The command buffer manager.
1062 * @header: Header of the command buffer. NULL if the current command buffer
1065 * Returns a pointer to command buffer space if successful. Otherwise
1088 * vmw_cmdbuf_commit - Commit commands in a command buffer.
1090 * @man: The command buffer manager.
1092 * @header: Header of the command buffer. NULL if the current command buffer
1094 * @flush: Whether to flush the command buffer immediately.
1118 * vmw_cmdbuf_send_device_command - Send a command through the device context.
1120 * @man: The command buffer manager.
1121 * @command: Pointer to the command to send.
1122 * @size: Size of the command.
1124 * Synchronously sends a device context command.
1127 const void *command, in vmw_cmdbuf_send_device_command() argument
1137 memcpy(cmd, command, size); in vmw_cmdbuf_send_device_command()
1146 DRM_ERROR("Device context command failed with status %d\n", in vmw_cmdbuf_send_device_command()
1155 * vmw_cmdbuf_preempt - Send a preempt command through the device
1158 * @man: The command buffer manager.
1160 * Synchronously sends a preempt command.
1178 * vmw_cmdbuf_startstop - Send a start / stop command through the device
1181 * @man: The command buffer manager.
1184 * Synchronously sends a device start / stop context command.
1202 * vmw_cmdbuf_set_pool_size - Set command buffer manager sizes
1204 * @man: The command buffer manager.
1206 * @default_size: The default size of the command buffer for small kernel
1209 * Set the size and allocate the main command buffer space pool,
1210 * as well as the default size of the command buffer for
1211 * small kernel submissions. If successful, this enables large command
1212 * submissions. Note that this function requires that rudimentary command
1234 * DMA memory failed. If we can have command buffers in a in vmw_cmdbuf_set_pool_size()
1265 * needs to wait for space and we block on further command in vmw_cmdbuf_set_pool_size()
1269 DRM_INFO("Using command buffers with %s pool.\n", in vmw_cmdbuf_set_pool_size()
1282 * vmw_cmdbuf_man_create: Create a command buffer manager and enable it for
1283 * inline command buffer submissions only.
1288 * on failure. The command buffer manager will be enabled for submissions of
1343 DRM_ERROR("Failed starting command buffer contexts\n"); in vmw_cmdbuf_man_create()
1361 * @man: Pointer to a command buffer manager.
1365 * only small command buffer submissions of size VMW_CMDBUF_INLINE_SIZE or
1366 * less are allowed, and the default size of the command buffer for small kernel
1387 * vmw_cmdbuf_man_destroy - Take down a command buffer manager.
1389 * @man: Pointer to a command buffer manager.
1391 * This function idles and then destroys a command buffer manager.
1399 DRM_ERROR("Failed stopping command buffer contexts.\n"); in vmw_cmdbuf_man_destroy()