Lines Matching +full:queue +full:- +full:group
1 /* SPDX-License-Identifier: MIT */
19 * - Structures must be aligned on 64-bit/8-byte. If the object is not
21 * - Fields must be explicitly aligned to their natural type alignment with
23 * - All padding fields will be checked by the driver to make sure they are
25 * - Flags can be added, but not removed/replaced.
26 * - New fields can be added to the main structures (the structures
31 * - New fields can be added to indirect objects (objects pointed by the
35 * - If the kernel driver is too old to know some fields, those will be
37 * - If userspace is too old to know some fields, those will be zeroed
39 * - Each new flag/field addition must come with a driver version update so
42 * - Structures should not contain unions, as this would defeat the
44 * - IOCTLs can't be removed or replaced. New IOCTL IDs should be placed
56 * different offset on 32-bit and 64-bit systems.
63 * ioctl, but Arm provides a well-isolated register page containing only this
64 * read-only register, so let's expose this page through a static mmap offset
66 * user <-> kernel round-trip.
78 * enum drm_panthor_ioctl_id - IOCTL IDs
80 * Place new ioctls at the end, don't re-order, don't replace or remove entries.
110 /** @DRM_PANTHOR_GROUP_CREATE: Create a scheduling group. */
113 /** @DRM_PANTHOR_GROUP_DESTROY: Destroy a scheduling group. */
118 * to a specific scheduling group.
122 /** @DRM_PANTHOR_GROUP_GET_STATE: Get the state of a scheduling group. */
138 * type seen by the process that manipulates the FD, such that a 32-bit process can
140 * like FEX, where the emulator is an 64-bit binary which might be executing 32-bit
141 * code. In that case, the kernel thinks it's the 64-bit process and assumes
154 * struct drm_panthor_obj_array - Object array.
176 * DRM_PANTHOR_OBJ_ARRAY() - Initialize a drm_panthor_obj_array field.
187 * enum drm_panthor_sync_op_flags - Synchronization operation flags.
210 * struct drm_panthor_sync_op - Synchronization operation.
228 * enum drm_panthor_dev_query_type - Query type
230 * Place new types at the end, don't re-order, don't remove or replace.
236 /** @DRM_PANTHOR_DEV_QUERY_CSIF_INFO: Query command-stream interface information. */
243 * @DRM_PANTHOR_DEV_QUERY_GROUP_PRIORITIES_INFO: Query allowed group priorities information.
249 * struct drm_panthor_gpu_info - GPU information
276 /** @l2_features: L2-cache features. */
310 /** @as_present: Bitmask encoding the number of address-space exposed by the MMU. */
331 /** @gpu_features: Bitmask describing supported GPU-wide features */
336 * struct drm_panthor_csif_info - Command stream interface information
341 /** @csg_slot_count: Number of command stream group slots exposed by the firmware. */
344 /** @cs_slot_count: Number of command stream slots per group. */
358 * [cs_slot_count - unpreserved_cs_reg_count .. cs_slot_count] registers are
370 * struct drm_panthor_timestamp_info - Timestamp information
389 * struct drm_panthor_group_priorities_info - Group priorities information
391 * Structure grouping all queryable information relating to the allowed group priorities.
395 * @allowed_mask: Bitmask of the allowed group priorities.
406 * struct drm_panthor_dev_query - Arguments passed to DRM_PANTHOR_IOCTL_DEV_QUERY
434 * struct drm_panthor_vm_create - Arguments passed to DRM_PANTHOR_IOCTL_VM_CREATE
446 * The kernel will pick the remaining space to map kernel-only objects to the
467 * struct drm_panthor_vm_destroy - Arguments passed to DRM_PANTHOR_IOCTL_VM_DESTROY
478 * enum drm_panthor_vm_bind_op_flags - VM bind operation flags
482 * @DRM_PANTHOR_VM_BIND_OP_MAP_READONLY: Map the memory read-only.
489 * @DRM_PANTHOR_VM_BIND_OP_MAP_NOEXEC: Map the memory not-executable.
516 * Just serves as a synchronization point on a VM queue.
525 * struct drm_panthor_vm_bind_op - VM bind operation
533 * MBZ for unmap or sync-only operations.
539 * MBZ for unmap or sync-only operations.
545 * MBZ for sync-only operations.
551 * MBZ for sync-only operations.
562 * This array shall not be empty for sync-only operations.
569 * enum drm_panthor_vm_bind_flags - VM bind flags
574 * queue instead of being executed synchronously.
580 * struct drm_panthor_vm_bind - Arguments passed to DRM_IOCTL_PANTHOR_VM_BIND
594 * enum drm_panthor_vm_state - VM states.
621 * struct drm_panthor_vm_get_state - Get VM state.
636 * enum drm_panthor_bo_flags - Buffer object flags, passed at creation time.
639 /** @DRM_PANTHOR_BO_NO_MMAP: The buffer object will never be CPU-mapped in userspace. */
644 * struct drm_panthor_bo_create - Arguments passed to DRM_IOCTL_PANTHOR_BO_CREATE.
650 * The (page-aligned) allocated size for the object will be returned.
663 * - the buffer object will only ever be bound to that VM
664 * - cannot be exported as a PRIME fd
680 * struct drm_panthor_bo_mmap_offset - Arguments passed to DRM_IOCTL_PANTHOR_BO_MMAP_OFFSET.
694 * struct drm_panthor_queue_create - Queue creation arguments.
698 * @priority: Defines the priority of queues inside a group. Goes from 0 to 15,
706 /** @ringbuf_size: Size of the ring buffer to allocate to this queue. */
711 * enum drm_panthor_group_priority - Scheduling group priority
714 /** @PANTHOR_GROUP_PRIORITY_LOW: Low priority group. */
717 /** @PANTHOR_GROUP_PRIORITY_MEDIUM: Medium priority group. */
721 * @PANTHOR_GROUP_PRIORITY_HIGH: High priority group.
728 * @PANTHOR_GROUP_PRIORITY_REALTIME: Realtime priority group.
736 * struct drm_panthor_group_create - Arguments passed to DRM_IOCTL_PANTHOR_GROUP_CREATE
744 * jobs across CS queues bound to this group.
752 * jobs across CS queues bound to this group.
760 * across CS queues bound to this group.
766 /** @priority: Group priority (see enum drm_panthor_group_priority). */
800 * @vm_id: VM ID to bind this group to.
802 * All submission to queues bound to this group will use this VM.
807 * @group_handle: Returned group handle. Passed back when submitting jobs or
808 * destroying a group.
814 * struct drm_panthor_group_destroy - Arguments passed to DRM_IOCTL_PANTHOR_GROUP_DESTROY
817 /** @group_handle: Group to destroy */
825 * struct drm_panthor_queue_submit - Job submission arguments.
828 * command stream ring-buffer. Queue submission is always part of a group
832 /** @queue_index: Index of the queue inside a group. */
838 * Must be 64-bit/8-byte aligned (the size of a CS instruction)
842 * When the stream size is zero, the queue submit serves as a
850 * Must be aligned on 64-byte.
877 * struct drm_panthor_group_submit - Arguments passed to DRM_IOCTL_PANTHOR_GROUP_SUBMIT
880 /** @group_handle: Handle of the group to queue jobs to. */
891 * enum drm_panthor_group_state_flags - Group state flags
895 * @DRM_PANTHOR_GROUP_STATE_TIMEDOUT: Group had unfinished jobs.
897 * When a group ends up with this flag set, no jobs can be submitted to its queues.
902 * @DRM_PANTHOR_GROUP_STATE_FATAL_FAULT: Group had fatal faults.
904 * When a group ends up with this flag set, no jobs can be submitted to its queues.
909 * @DRM_PANTHOR_GROUP_STATE_INNOCENT: Group was killed during a reset caused by other
919 * struct drm_panthor_group_get_state - Arguments passed to DRM_IOCTL_PANTHOR_GROUP_GET_STATE
921 * Used to query the state of a group and decide whether a new group should be created to
925 /** @group_handle: Handle of the group to query state on */
930 * group state.
942 * struct drm_panthor_tiler_heap_create - Arguments passed to DRM_IOCTL_PANTHOR_TILER_HEAP_CREATE
954 * Must be page-aligned and lie in the [128k:8M] range.
966 * @target_in_flight: Maximum number of in-flight render passes.
968 * If the heap has more than tiler jobs in-flight, the FW will wait for render
982 * The tiler heap is formed of heap chunks forming a single-link list. This
989 * struct drm_panthor_tiler_heap_destroy - Arguments passed to DRM_IOCTL_PANTHOR_TILER_HEAP_DESTROY
1004 * struct drm_panthor_bo_set_label - Arguments passed to DRM_IOCTL_PANTHOR_BO_SET_LABEL
1014 * @label: User pointer to a NUL-terminated string
1022 * struct drm_panthor_set_user_mmio_offset - Arguments passed to
1044 * DRM_IOCTL_PANTHOR() - Build a Panthor IOCTL number