2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-08-01 12:28:14 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-02-24 16:15:38 -08:00
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2024-12-17 21:31:21 -08:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2025-10-31 16:40:45 -07:00
|
|
|
|
2024-08-27 12:15:39 +03:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
drm/xe/multi_queue: Add user interface for multi queue support
Multi Queue is a new mode of execution supported by the compute and
blitter copy command streamers (CCS and BCS, respectively). It is an
enhancement of the existing hardware architecture and leverages the
same submission model. It enables support for efficient, parallel
execution of multiple queues within a single context. All the queues
of a group must use the same address space (VM).
The new DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE execution queue
property supports creating a multi queue group and adding queues to
a queue group. All queues of a multi queue group share the same
context.
A exec queue create ioctl call with above property specified with value
DRM_XE_SUPER_GROUP_CREATE will create a new multi queue group with the
queue being created as the primary queue (aka q0) of the group. To add
secondary queues to the group, they need to be created with the above
property with id of the primary queue as the value. The properties of
the primary queue (like priority, timeslice) applies to the whole group.
So, these properties can't be set for secondary queues of a group.
Once destroyed, the secondary queues of a multi queue group can't be
replaced. However, they can be dynamically added to the group up to a
total of 64 queues per group. Once the primary queue is destroyed,
secondary queues can't be added to the queue group.
v2: Remove group->lock, fix xe_exec_queue_group_add()/delete()
function semantics, add additional comments, remove unused
group->list_lock, add XE_BO_FLAG_GGTT_INVALIDATE for cgp bo,
Assert LRC is valid, update uapi kernel doc.
(Matt Brost)
v3: Use XE_BO_FLAG_PINNED_LATE_RESTORE/USER_VRAM/GGTT_INVALIDATE
flags for cgp bo (Matt)
v4: Ensure queue is not a vm_bind queue
uapi change due to rebase
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251211010249.1647839-21-niranjana.vishwanathapura@intel.com
2025-12-10 17:02:50 -08:00
|
|
|
|
2025-07-24 12:12:13 -07:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2025-12-18 14:38:51 -08:00
|
|
|
|
2025-10-08 14:45:25 -07:00
|
|
|
|
2023-08-04 11:54:23 +05:30
|
|
|
|
2024-08-09 17:51:28 +02:00
|
|
|
|
2024-12-13 09:25:36 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-01-29 09:41:32 -08:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2025-10-01 21:43:20 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-12-10 17:03:04 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-01-06 11:10:51 -08:00
|
|
|
|
|
|
|
|
|
2025-12-10 17:03:04 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-12-10 17:03:05 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-12-10 17:03:04 -08:00
|
|
|
|
|
|
|
|
|
2023-08-04 11:54:23 +05:30
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-01-10 09:32:51 -08:00
|
|
|
|
2025-12-10 17:02:53 -08:00
|
|
|
|
2024-01-10 09:32:51 -08:00
|
|
|
|
drm/xe/multi_queue: Add user interface for multi queue support
Multi Queue is a new mode of execution supported by the compute and
blitter copy command streamers (CCS and BCS, respectively). It is an
enhancement of the existing hardware architecture and leverages the
same submission model. It enables support for efficient, parallel
execution of multiple queues within a single context. All the queues
of a group must use the same address space (VM).
The new DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE execution queue
property supports creating a multi queue group and adding queues to
a queue group. All queues of a multi queue group share the same
context.
A exec queue create ioctl call with above property specified with value
DRM_XE_SUPER_GROUP_CREATE will create a new multi queue group with the
queue being created as the primary queue (aka q0) of the group. To add
secondary queues to the group, they need to be created with the above
property with id of the primary queue as the value. The properties of
the primary queue (like priority, timeslice) applies to the whole group.
So, these properties can't be set for secondary queues of a group.
Once destroyed, the secondary queues of a multi queue group can't be
replaced. However, they can be dynamically added to the group up to a
total of 64 queues per group. Once the primary queue is destroyed,
secondary queues can't be added to the queue group.
v2: Remove group->lock, fix xe_exec_queue_group_add()/delete()
function semantics, add additional comments, remove unused
group->list_lock, add XE_BO_FLAG_GGTT_INVALIDATE for cgp bo,
Assert LRC is valid, update uapi kernel doc.
(Matt Brost)
v3: Use XE_BO_FLAG_PINNED_LATE_RESTORE/USER_VRAM/GGTT_INVALIDATE
flags for cgp bo (Matt)
v4: Ensure queue is not a vm_bind queue
uapi change due to rebase
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251211010249.1647839-21-niranjana.vishwanathapura@intel.com
2025-12-10 17:02:50 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-12-10 17:02:57 -08:00
|
|
|
|
drm/xe/multi_queue: Add user interface for multi queue support
Multi Queue is a new mode of execution supported by the compute and
blitter copy command streamers (CCS and BCS, respectively). It is an
enhancement of the existing hardware architecture and leverages the
same submission model. It enables support for efficient, parallel
execution of multiple queues within a single context. All the queues
of a group must use the same address space (VM).
The new DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE execution queue
property supports creating a multi queue group and adding queues to
a queue group. All queues of a multi queue group share the same
context.
A exec queue create ioctl call with above property specified with value
DRM_XE_SUPER_GROUP_CREATE will create a new multi queue group with the
queue being created as the primary queue (aka q0) of the group. To add
secondary queues to the group, they need to be created with the above
property with id of the primary queue as the value. The properties of
the primary queue (like priority, timeslice) applies to the whole group.
So, these properties can't be set for secondary queues of a group.
Once destroyed, the secondary queues of a multi queue group can't be
replaced. However, they can be dynamically added to the group up to a
total of 64 queues per group. Once the primary queue is destroyed,
secondary queues can't be added to the queue group.
v2: Remove group->lock, fix xe_exec_queue_group_add()/delete()
function semantics, add additional comments, remove unused
group->list_lock, add XE_BO_FLAG_GGTT_INVALIDATE for cgp bo,
Assert LRC is valid, update uapi kernel doc.
(Matt Brost)
v3: Use XE_BO_FLAG_PINNED_LATE_RESTORE/USER_VRAM/GGTT_INVALIDATE
flags for cgp bo (Matt)
v4: Ensure queue is not a vm_bind queue
uapi change due to rebase
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251211010249.1647839-21-niranjana.vishwanathapura@intel.com
2025-12-10 17:02:50 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-03-19 10:59:46 -07:00
|
|
|
|
|
|
|
|
|
2025-07-24 12:12:13 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-01-29 09:41:32 -08:00
|
|
|
|
|
|
|
|
|
drm/xe/multi_queue: Add user interface for multi queue support
Multi Queue is a new mode of execution supported by the compute and
blitter copy command streamers (CCS and BCS, respectively). It is an
enhancement of the existing hardware architecture and leverages the
same submission model. It enables support for efficient, parallel
execution of multiple queues within a single context. All the queues
of a group must use the same address space (VM).
The new DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE execution queue
property supports creating a multi queue group and adding queues to
a queue group. All queues of a multi queue group share the same
context.
A exec queue create ioctl call with above property specified with value
DRM_XE_SUPER_GROUP_CREATE will create a new multi queue group with the
queue being created as the primary queue (aka q0) of the group. To add
secondary queues to the group, they need to be created with the above
property with id of the primary queue as the value. The properties of
the primary queue (like priority, timeslice) applies to the whole group.
So, these properties can't be set for secondary queues of a group.
Once destroyed, the secondary queues of a multi queue group can't be
replaced. However, they can be dynamically added to the group up to a
total of 64 queues per group. Once the primary queue is destroyed,
secondary queues can't be added to the queue group.
v2: Remove group->lock, fix xe_exec_queue_group_add()/delete()
function semantics, add additional comments, remove unused
group->list_lock, add XE_BO_FLAG_GGTT_INVALIDATE for cgp bo,
Assert LRC is valid, update uapi kernel doc.
(Matt Brost)
v3: Use XE_BO_FLAG_PINNED_LATE_RESTORE/USER_VRAM/GGTT_INVALIDATE
flags for cgp bo (Matt)
v4: Ensure queue is not a vm_bind queue
uapi change due to rebase
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251211010249.1647839-21-niranjana.vishwanathapura@intel.com
2025-12-10 17:02:50 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-01-16 14:17:25 -08:00
|
|
|
|
|
|
|
|
|
2024-03-19 10:59:46 -07:00
|
|
|
|
2026-01-16 14:17:25 -08:00
|
|
|
|
2024-07-18 14:05:48 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-11-26 10:59:52 -08:00
|
|
|
|
2024-03-19 10:59:46 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-24 12:12:13 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-08-26 18:29:05 +00:00
|
|
|
|
2025-07-24 12:12:13 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-01-10 09:32:49 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-01-10 09:32:51 -08:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2024-01-10 09:32:51 -08:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-08-22 10:33:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-02-21 17:06:51 -08:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-12-13 09:25:36 +02:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-06-13 19:03:48 +02:00
|
|
|
|
2026-01-16 14:17:25 -08:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2024-08-09 17:51:28 +02:00
|
|
|
|
2025-01-29 09:41:31 -08:00
|
|
|
|
2026-01-26 09:42:42 -08:00
|
|
|
|
2026-02-26 22:26:59 +01:00
|
|
|
|
2025-12-10 17:02:52 -08:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-08-04 17:36:25 +05:30
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-01-10 09:32:50 -08:00
|
|
|
|
|
|
|
|
|
2024-01-05 11:04:40 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2025-07-24 12:12:13 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-03-19 10:59:46 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-01-10 09:32:51 -08:00
|
|
|
|
|
|
|
|
|
2024-05-29 20:22:10 -07:00
|
|
|
|
2024-01-10 09:32:51 -08:00
|
|
|
|
|
|
|
|
|
2025-12-10 17:02:53 -08:00
|
|
|
|
2024-01-10 09:32:51 -08:00
|
|
|
|
2024-03-19 10:59:46 -07:00
|
|
|
|
2024-01-10 09:32:51 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-01-10 09:32:49 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-02-26 22:26:59 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-05-07 09:20:22 -07:00
|
|
|
|
2026-02-26 22:26:59 +01:00
|
|
|
|
2026-05-07 09:20:22 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-02-26 22:26:59 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-02-26 22:26:58 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-10-03 18:26:17 +02:00
|
|
|
|
2024-01-10 09:32:49 -08:00
|
|
|
|
|
|
|
|
|
2025-01-29 09:41:32 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-01-10 09:32:49 -08:00
|
|
|
|
2025-10-03 18:26:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-03-06 09:55:03 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2025-10-08 14:45:25 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
drm/xe/vf: Redo LRC creation while in VF fixups
If the xe module within a VM was creating a new LRC during save/
restore, this LRC will be invalid. The fixups procedure may not
be able to reach it, as there will be a race to add the new LRC
reference to an exec queue.
Even if the new LRC which was being created during VM migration is
added to EQ in time for fixups, said LRC may still remain damaged.
In a small percentage of specially crafted test cases, the resulting
LRC was still damaged and caused GPU hang.
Any LRC which could be created in such a situation, have to be
re-created.
Due to VM having arbitrarily set amount of CPU cores, it is possible
to limit the amount to 1. In such case, there is a possibility that
kernel will switch CPU contexts in a way which allows to miss
VF migration recovery running in parallel (by simply not switching
to the LRC creation thread during recovery). Therefore checking
if the migration is in progress just after LRC creation, is not
enough to ensure detection.
Free the incorrectly created LRC, and trigger a re-run of the
creation, but only after waiting for default LRC to get fixups.
Use additional atomic value increased after fixups, to ensure any VF
migration that avoided detection by just checking for recovery in
progress, will be caught.
v2: Merge marker and wait for default LRC, reducing amount of calls
within xe_init_eq(). Alter the LRC creation loop to remove a race
with post-migration fixups worker.
v3: Kerneldoc fixes. Rename fixups_complete_count.
Signed-off-by: Tomasz Lis <tomasz.lis@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Link: https://patch.msgid.link/20260226212701.2937065-5-tomasz.lis@intel.com
2026-02-26 22:27:01 +01:00
|
|
|
|
|
|
|
|
|
2025-10-08 14:45:25 -07:00
|
|
|
|
drm/xe/vf: Redo LRC creation while in VF fixups
If the xe module within a VM was creating a new LRC during save/
restore, this LRC will be invalid. The fixups procedure may not
be able to reach it, as there will be a race to add the new LRC
reference to an exec queue.
Even if the new LRC which was being created during VM migration is
added to EQ in time for fixups, said LRC may still remain damaged.
In a small percentage of specially crafted test cases, the resulting
LRC was still damaged and caused GPU hang.
Any LRC which could be created in such a situation, have to be
re-created.
Due to VM having arbitrarily set amount of CPU cores, it is possible
to limit the amount to 1. In such case, there is a possibility that
kernel will switch CPU contexts in a way which allows to miss
VF migration recovery running in parallel (by simply not switching
to the LRC creation thread during recovery). Therefore checking
if the migration is in progress just after LRC creation, is not
enough to ensure detection.
Free the incorrectly created LRC, and trigger a re-run of the
creation, but only after waiting for default LRC to get fixups.
Use additional atomic value increased after fixups, to ensure any VF
migration that avoided detection by just checking for recovery in
progress, will be caught.
v2: Merge marker and wait for default LRC, reducing amount of calls
within xe_init_eq(). Alter the LRC creation loop to remove a race
with post-migration fixups worker.
v3: Kerneldoc fixes. Rename fixups_complete_count.
Signed-off-by: Tomasz Lis <tomasz.lis@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Link: https://patch.msgid.link/20260226212701.2937065-5-tomasz.lis@intel.com
2026-02-26 22:27:01 +01:00
|
|
|
|
|
|
|
|
|
2025-10-08 14:45:25 -07:00
|
|
|
|
drm/xe/vf: Redo LRC creation while in VF fixups
If the xe module within a VM was creating a new LRC during save/
restore, this LRC will be invalid. The fixups procedure may not
be able to reach it, as there will be a race to add the new LRC
reference to an exec queue.
Even if the new LRC which was being created during VM migration is
added to EQ in time for fixups, said LRC may still remain damaged.
In a small percentage of specially crafted test cases, the resulting
LRC was still damaged and caused GPU hang.
Any LRC which could be created in such a situation, have to be
re-created.
Due to VM having arbitrarily set amount of CPU cores, it is possible
to limit the amount to 1. In such case, there is a possibility that
kernel will switch CPU contexts in a way which allows to miss
VF migration recovery running in parallel (by simply not switching
to the LRC creation thread during recovery). Therefore checking
if the migration is in progress just after LRC creation, is not
enough to ensure detection.
Free the incorrectly created LRC, and trigger a re-run of the
creation, but only after waiting for default LRC to get fixups.
Use additional atomic value increased after fixups, to ensure any VF
migration that avoided detection by just checking for recovery in
progress, will be caught.
v2: Merge marker and wait for default LRC, reducing amount of calls
within xe_init_eq(). Alter the LRC creation loop to remove a race
with post-migration fixups worker.
v3: Kerneldoc fixes. Rename fixups_complete_count.
Signed-off-by: Tomasz Lis <tomasz.lis@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Link: https://patch.msgid.link/20260226212701.2937065-5-tomasz.lis@intel.com
2026-02-26 22:27:01 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-10-08 14:45:25 -07:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2024-01-10 09:32:49 -08:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2026-02-26 22:26:58 +01:00
|
|
|
|
2024-01-10 09:32:49 -08:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2026-03-03 14:30:41 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2024-01-10 09:32:51 -08:00
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2025-01-29 09:41:26 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-01-10 09:32:51 -08:00
|
|
|
|
|
|
|
|
|
2024-01-10 09:32:49 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-10-03 18:26:17 +02:00
|
|
|
|
2024-01-10 09:32:49 -08:00
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2025-01-29 09:41:32 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-09-09 15:12:40 -07:00
|
|
|
|
2025-01-29 09:41:32 -08:00
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2024-01-10 09:32:49 -08:00
|
|
|
|
2025-09-09 15:12:40 -07:00
|
|
|
|
|
|
|
|
|
2024-01-10 09:32:49 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2025-03-05 16:06:59 +01:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2026-03-03 14:30:41 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2024-08-15 20:40:33 -07:00
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-08-15 20:40:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-01-20 11:06:10 +00:00
|
|
|
|
2024-08-15 20:40:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-01-20 11:06:10 +00:00
|
|
|
|
2024-08-15 20:40:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-09-01 07:42:27 +03:00
|
|
|
|
|
|
|
|
|
2024-08-15 20:40:33 -07:00
|
|
|
|
2024-09-01 07:42:27 +03:00
|
|
|
|
2024-08-15 20:40:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-10-31 16:40:45 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-01-20 11:06:10 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-10-31 16:40:45 -07:00
|
|
|
|
|
|
|
|
|
2024-08-15 20:40:33 -07:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2024-11-13 17:22:12 +01:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2026-03-03 14:30:41 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2025-10-31 16:40:46 -07:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2025-10-27 20:21:19 +00:00
|
|
|
|
|
|
|
|
|
2025-10-31 16:40:45 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-01-29 09:41:32 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-09-14 13:40:51 -07:00
|
|
|
|
2025-10-31 16:40:46 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2026-01-20 11:06:10 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-09-09 15:12:40 -07:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2026-03-03 14:30:41 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2024-11-04 06:38:12 -08:00
|
|
|
|
|
|
|
|
|
2024-11-07 21:33:16 -08:00
|
|
|
|
2024-11-04 06:38:12 -08:00
|
|
|
|
|
|
|
|
|
2024-11-07 21:33:16 -08:00
|
|
|
|
|
|
|
|
|
2024-11-04 06:38:12 -08:00
|
|
|
|
2025-09-09 15:12:40 -07:00
|
|
|
|
2024-01-10 09:32:49 -08:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2026-03-03 14:30:41 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-08-17 13:18:25 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-12-10 05:29:48 +05:30
|
|
|
|
2023-08-17 13:18:25 -07:00
|
|
|
|
|
|
|
|
|
2023-12-10 05:29:48 +05:30
|
|
|
|
2023-08-17 13:18:25 -07:00
|
|
|
|
|
|
|
|
|
2023-12-10 05:29:48 +05:30
|
|
|
|
2023-08-17 13:18:25 -07:00
|
|
|
|
|
|
|
|
|
2023-12-10 05:29:48 +05:30
|
|
|
|
2023-08-17 13:18:25 -07:00
|
|
|
|
|
|
|
|
|
2023-12-10 05:29:48 +05:30
|
|
|
|
2023-08-17 13:18:25 -07:00
|
|
|
|
2023-08-17 13:18:26 -07:00
|
|
|
|
2023-12-10 05:29:48 +05:30
|
|
|
|
2023-08-17 13:18:26 -07:00
|
|
|
|
2023-08-17 13:18:25 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-03-03 14:30:41 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2026-03-03 14:30:41 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2023-03-23 12:24:59 -07:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2023-03-23 12:24:59 -07:00
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2024-02-23 15:30:43 +01:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2024-01-10 09:32:51 -08:00
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2023-08-04 11:54:23 +05:30
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2024-02-23 15:30:43 +01:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-08-04 11:54:23 +05:30
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2024-01-10 09:32:51 -08:00
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2025-01-29 09:41:32 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-11-26 10:59:52 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
drm/xe/multi_queue: Add user interface for multi queue support
Multi Queue is a new mode of execution supported by the compute and
blitter copy command streamers (CCS and BCS, respectively). It is an
enhancement of the existing hardware architecture and leverages the
same submission model. It enables support for efficient, parallel
execution of multiple queues within a single context. All the queues
of a group must use the same address space (VM).
The new DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE execution queue
property supports creating a multi queue group and adding queues to
a queue group. All queues of a multi queue group share the same
context.
A exec queue create ioctl call with above property specified with value
DRM_XE_SUPER_GROUP_CREATE will create a new multi queue group with the
queue being created as the primary queue (aka q0) of the group. To add
secondary queues to the group, they need to be created with the above
property with id of the primary queue as the value. The properties of
the primary queue (like priority, timeslice) applies to the whole group.
So, these properties can't be set for secondary queues of a group.
Once destroyed, the secondary queues of a multi queue group can't be
replaced. However, they can be dynamically added to the group up to a
total of 64 queues per group. Once the primary queue is destroyed,
secondary queues can't be added to the queue group.
v2: Remove group->lock, fix xe_exec_queue_group_add()/delete()
function semantics, add additional comments, remove unused
group->list_lock, add XE_BO_FLAG_GGTT_INVALIDATE for cgp bo,
Assert LRC is valid, update uapi kernel doc.
(Matt Brost)
v3: Use XE_BO_FLAG_PINNED_LATE_RESTORE/USER_VRAM/GGTT_INVALIDATE
flags for cgp bo (Matt)
v4: Ensure queue is not a vm_bind queue
uapi change due to rebase
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251211010249.1647839-21-niranjana.vishwanathapura@intel.com
2025-12-10 17:02:50 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-02-21 16:37:42 -08:00
|
|
|
|
drm/xe/multi_queue: Add user interface for multi queue support
Multi Queue is a new mode of execution supported by the compute and
blitter copy command streamers (CCS and BCS, respectively). It is an
enhancement of the existing hardware architecture and leverages the
same submission model. It enables support for efficient, parallel
execution of multiple queues within a single context. All the queues
of a group must use the same address space (VM).
The new DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE execution queue
property supports creating a multi queue group and adding queues to
a queue group. All queues of a multi queue group share the same
context.
A exec queue create ioctl call with above property specified with value
DRM_XE_SUPER_GROUP_CREATE will create a new multi queue group with the
queue being created as the primary queue (aka q0) of the group. To add
secondary queues to the group, they need to be created with the above
property with id of the primary queue as the value. The properties of
the primary queue (like priority, timeslice) applies to the whole group.
So, these properties can't be set for secondary queues of a group.
Once destroyed, the secondary queues of a multi queue group can't be
replaced. However, they can be dynamically added to the group up to a
total of 64 queues per group. Once the primary queue is destroyed,
secondary queues can't be added to the queue group.
v2: Remove group->lock, fix xe_exec_queue_group_add()/delete()
function semantics, add additional comments, remove unused
group->list_lock, add XE_BO_FLAG_GGTT_INVALIDATE for cgp bo,
Assert LRC is valid, update uapi kernel doc.
(Matt Brost)
v3: Use XE_BO_FLAG_PINNED_LATE_RESTORE/USER_VRAM/GGTT_INVALIDATE
flags for cgp bo (Matt)
v4: Ensure queue is not a vm_bind queue
uapi change due to rebase
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251211010249.1647839-21-niranjana.vishwanathapura@intel.com
2025-12-10 17:02:50 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-12-10 17:02:57 -08:00
|
|
|
|
drm/xe/multi_queue: Add user interface for multi queue support
Multi Queue is a new mode of execution supported by the compute and
blitter copy command streamers (CCS and BCS, respectively). It is an
enhancement of the existing hardware architecture and leverages the
same submission model. It enables support for efficient, parallel
execution of multiple queues within a single context. All the queues
of a group must use the same address space (VM).
The new DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE execution queue
property supports creating a multi queue group and adding queues to
a queue group. All queues of a multi queue group share the same
context.
A exec queue create ioctl call with above property specified with value
DRM_XE_SUPER_GROUP_CREATE will create a new multi queue group with the
queue being created as the primary queue (aka q0) of the group. To add
secondary queues to the group, they need to be created with the above
property with id of the primary queue as the value. The properties of
the primary queue (like priority, timeslice) applies to the whole group.
So, these properties can't be set for secondary queues of a group.
Once destroyed, the secondary queues of a multi queue group can't be
replaced. However, they can be dynamically added to the group up to a
total of 64 queues per group. Once the primary queue is destroyed,
secondary queues can't be added to the queue group.
v2: Remove group->lock, fix xe_exec_queue_group_add()/delete()
function semantics, add additional comments, remove unused
group->list_lock, add XE_BO_FLAG_GGTT_INVALIDATE for cgp bo,
Assert LRC is valid, update uapi kernel doc.
(Matt Brost)
v3: Use XE_BO_FLAG_PINNED_LATE_RESTORE/USER_VRAM/GGTT_INVALIDATE
flags for cgp bo (Matt)
v4: Ensure queue is not a vm_bind queue
uapi change due to rebase
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251211010249.1647839-21-niranjana.vishwanathapura@intel.com
2025-12-10 17:02:50 -08:00
|
|
|
|
2025-12-10 17:02:57 -08:00
|
|
|
|
drm/xe/multi_queue: Add user interface for multi queue support
Multi Queue is a new mode of execution supported by the compute and
blitter copy command streamers (CCS and BCS, respectively). It is an
enhancement of the existing hardware architecture and leverages the
same submission model. It enables support for efficient, parallel
execution of multiple queues within a single context. All the queues
of a group must use the same address space (VM).
The new DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE execution queue
property supports creating a multi queue group and adding queues to
a queue group. All queues of a multi queue group share the same
context.
A exec queue create ioctl call with above property specified with value
DRM_XE_SUPER_GROUP_CREATE will create a new multi queue group with the
queue being created as the primary queue (aka q0) of the group. To add
secondary queues to the group, they need to be created with the above
property with id of the primary queue as the value. The properties of
the primary queue (like priority, timeslice) applies to the whole group.
So, these properties can't be set for secondary queues of a group.
Once destroyed, the secondary queues of a multi queue group can't be
replaced. However, they can be dynamically added to the group up to a
total of 64 queues per group. Once the primary queue is destroyed,
secondary queues can't be added to the queue group.
v2: Remove group->lock, fix xe_exec_queue_group_add()/delete()
function semantics, add additional comments, remove unused
group->list_lock, add XE_BO_FLAG_GGTT_INVALIDATE for cgp bo,
Assert LRC is valid, update uapi kernel doc.
(Matt Brost)
v3: Use XE_BO_FLAG_PINNED_LATE_RESTORE/USER_VRAM/GGTT_INVALIDATE
flags for cgp bo (Matt)
v4: Ensure queue is not a vm_bind queue
uapi change due to rebase
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251211010249.1647839-21-niranjana.vishwanathapura@intel.com
2025-12-10 17:02:50 -08:00
|
|
|
|
|
|
|
|
|
2025-12-10 17:02:57 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
drm/xe/multi_queue: Add user interface for multi queue support
Multi Queue is a new mode of execution supported by the compute and
blitter copy command streamers (CCS and BCS, respectively). It is an
enhancement of the existing hardware architecture and leverages the
same submission model. It enables support for efficient, parallel
execution of multiple queues within a single context. All the queues
of a group must use the same address space (VM).
The new DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE execution queue
property supports creating a multi queue group and adding queues to
a queue group. All queues of a multi queue group share the same
context.
A exec queue create ioctl call with above property specified with value
DRM_XE_SUPER_GROUP_CREATE will create a new multi queue group with the
queue being created as the primary queue (aka q0) of the group. To add
secondary queues to the group, they need to be created with the above
property with id of the primary queue as the value. The properties of
the primary queue (like priority, timeslice) applies to the whole group.
So, these properties can't be set for secondary queues of a group.
Once destroyed, the secondary queues of a multi queue group can't be
replaced. However, they can be dynamically added to the group up to a
total of 64 queues per group. Once the primary queue is destroyed,
secondary queues can't be added to the queue group.
v2: Remove group->lock, fix xe_exec_queue_group_add()/delete()
function semantics, add additional comments, remove unused
group->list_lock, add XE_BO_FLAG_GGTT_INVALIDATE for cgp bo,
Assert LRC is valid, update uapi kernel doc.
(Matt Brost)
v3: Use XE_BO_FLAG_PINNED_LATE_RESTORE/USER_VRAM/GGTT_INVALIDATE
flags for cgp bo (Matt)
v4: Ensure queue is not a vm_bind queue
uapi change due to rebase
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251211010249.1647839-21-niranjana.vishwanathapura@intel.com
2025-12-10 17:02:50 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-05-07 09:20:22 -07:00
|
|
|
|
drm/xe/multi_queue: Add user interface for multi queue support
Multi Queue is a new mode of execution supported by the compute and
blitter copy command streamers (CCS and BCS, respectively). It is an
enhancement of the existing hardware architecture and leverages the
same submission model. It enables support for efficient, parallel
execution of multiple queues within a single context. All the queues
of a group must use the same address space (VM).
The new DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE execution queue
property supports creating a multi queue group and adding queues to
a queue group. All queues of a multi queue group share the same
context.
A exec queue create ioctl call with above property specified with value
DRM_XE_SUPER_GROUP_CREATE will create a new multi queue group with the
queue being created as the primary queue (aka q0) of the group. To add
secondary queues to the group, they need to be created with the above
property with id of the primary queue as the value. The properties of
the primary queue (like priority, timeslice) applies to the whole group.
So, these properties can't be set for secondary queues of a group.
Once destroyed, the secondary queues of a multi queue group can't be
replaced. However, they can be dynamically added to the group up to a
total of 64 queues per group. Once the primary queue is destroyed,
secondary queues can't be added to the queue group.
v2: Remove group->lock, fix xe_exec_queue_group_add()/delete()
function semantics, add additional comments, remove unused
group->list_lock, add XE_BO_FLAG_GGTT_INVALIDATE for cgp bo,
Assert LRC is valid, update uapi kernel doc.
(Matt Brost)
v3: Use XE_BO_FLAG_PINNED_LATE_RESTORE/USER_VRAM/GGTT_INVALIDATE
flags for cgp bo (Matt)
v4: Ensure queue is not a vm_bind queue
uapi change due to rebase
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251211010249.1647839-21-niranjana.vishwanathapura@intel.com
2025-12-10 17:02:50 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-05-07 09:20:21 -07:00
|
|
|
|
drm/xe/multi_queue: Add user interface for multi queue support
Multi Queue is a new mode of execution supported by the compute and
blitter copy command streamers (CCS and BCS, respectively). It is an
enhancement of the existing hardware architecture and leverages the
same submission model. It enables support for efficient, parallel
execution of multiple queues within a single context. All the queues
of a group must use the same address space (VM).
The new DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE execution queue
property supports creating a multi queue group and adding queues to
a queue group. All queues of a multi queue group share the same
context.
A exec queue create ioctl call with above property specified with value
DRM_XE_SUPER_GROUP_CREATE will create a new multi queue group with the
queue being created as the primary queue (aka q0) of the group. To add
secondary queues to the group, they need to be created with the above
property with id of the primary queue as the value. The properties of
the primary queue (like priority, timeslice) applies to the whole group.
So, these properties can't be set for secondary queues of a group.
Once destroyed, the secondary queues of a multi queue group can't be
replaced. However, they can be dynamically added to the group up to a
total of 64 queues per group. Once the primary queue is destroyed,
secondary queues can't be added to the queue group.
v2: Remove group->lock, fix xe_exec_queue_group_add()/delete()
function semantics, add additional comments, remove unused
group->list_lock, add XE_BO_FLAG_GGTT_INVALIDATE for cgp bo,
Assert LRC is valid, update uapi kernel doc.
(Matt Brost)
v3: Use XE_BO_FLAG_PINNED_LATE_RESTORE/USER_VRAM/GGTT_INVALIDATE
flags for cgp bo (Matt)
v4: Ensure queue is not a vm_bind queue
uapi change due to rebase
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251211010249.1647839-21-niranjana.vishwanathapura@intel.com
2025-12-10 17:02:50 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-01-06 11:10:50 -08:00
|
|
|
|
drm/xe/multi_queue: Add user interface for multi queue support
Multi Queue is a new mode of execution supported by the compute and
blitter copy command streamers (CCS and BCS, respectively). It is an
enhancement of the existing hardware architecture and leverages the
same submission model. It enables support for efficient, parallel
execution of multiple queues within a single context. All the queues
of a group must use the same address space (VM).
The new DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE execution queue
property supports creating a multi queue group and adding queues to
a queue group. All queues of a multi queue group share the same
context.
A exec queue create ioctl call with above property specified with value
DRM_XE_SUPER_GROUP_CREATE will create a new multi queue group with the
queue being created as the primary queue (aka q0) of the group. To add
secondary queues to the group, they need to be created with the above
property with id of the primary queue as the value. The properties of
the primary queue (like priority, timeslice) applies to the whole group.
So, these properties can't be set for secondary queues of a group.
Once destroyed, the secondary queues of a multi queue group can't be
replaced. However, they can be dynamically added to the group up to a
total of 64 queues per group. Once the primary queue is destroyed,
secondary queues can't be added to the queue group.
v2: Remove group->lock, fix xe_exec_queue_group_add()/delete()
function semantics, add additional comments, remove unused
group->list_lock, add XE_BO_FLAG_GGTT_INVALIDATE for cgp bo,
Assert LRC is valid, update uapi kernel doc.
(Matt Brost)
v3: Use XE_BO_FLAG_PINNED_LATE_RESTORE/USER_VRAM/GGTT_INVALIDATE
flags for cgp bo (Matt)
v4: Ensure queue is not a vm_bind queue
uapi change due to rebase
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251211010249.1647839-21-niranjana.vishwanathapura@intel.com
2025-12-10 17:02:50 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-12-10 17:02:52 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-12-10 17:02:55 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-12-10 17:02:52 -08:00
|
|
|
|
2025-12-10 17:02:55 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-12-10 17:02:52 -08:00
|
|
|
|
|
|
|
|
|
2026-03-06 09:55:03 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2024-02-23 15:30:43 +01:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2023-11-14 13:34:27 +00:00
|
|
|
|
|
|
|
|
|
2025-01-29 09:41:32 -08:00
|
|
|
|
2025-11-26 10:59:52 -08:00
|
|
|
|
drm/xe/multi_queue: Add user interface for multi queue support
Multi Queue is a new mode of execution supported by the compute and
blitter copy command streamers (CCS and BCS, respectively). It is an
enhancement of the existing hardware architecture and leverages the
same submission model. It enables support for efficient, parallel
execution of multiple queues within a single context. All the queues
of a group must use the same address space (VM).
The new DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE execution queue
property supports creating a multi queue group and adding queues to
a queue group. All queues of a multi queue group share the same
context.
A exec queue create ioctl call with above property specified with value
DRM_XE_SUPER_GROUP_CREATE will create a new multi queue group with the
queue being created as the primary queue (aka q0) of the group. To add
secondary queues to the group, they need to be created with the above
property with id of the primary queue as the value. The properties of
the primary queue (like priority, timeslice) applies to the whole group.
So, these properties can't be set for secondary queues of a group.
Once destroyed, the secondary queues of a multi queue group can't be
replaced. However, they can be dynamically added to the group up to a
total of 64 queues per group. Once the primary queue is destroyed,
secondary queues can't be added to the queue group.
v2: Remove group->lock, fix xe_exec_queue_group_add()/delete()
function semantics, add additional comments, remove unused
group->list_lock, add XE_BO_FLAG_GGTT_INVALIDATE for cgp bo,
Assert LRC is valid, update uapi kernel doc.
(Matt Brost)
v3: Use XE_BO_FLAG_PINNED_LATE_RESTORE/USER_VRAM/GGTT_INVALIDATE
flags for cgp bo (Matt)
v4: Ensure queue is not a vm_bind queue
uapi change due to rebase
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251211010249.1647839-21-niranjana.vishwanathapura@intel.com
2025-12-10 17:02:50 -08:00
|
|
|
|
2025-12-10 17:02:52 -08:00
|
|
|
|
|
|
|
|
|
2026-03-06 09:55:03 +02:00
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2026-03-03 14:30:41 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-12-10 17:02:54 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-12-10 17:02:53 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2025-12-10 17:02:53 -08:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2023-09-20 15:29:31 -04:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-05-01 12:14:45 -07:00
|
|
|
|
2023-07-17 10:20:18 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2023-07-17 10:20:18 +02:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2024-02-22 18:23:56 -05:00
|
|
|
|
|
|
|
|
|
2025-01-29 09:41:32 -08:00
|
|
|
|
2025-11-26 10:59:52 -08:00
|
|
|
|
drm/xe/multi_queue: Add user interface for multi queue support
Multi Queue is a new mode of execution supported by the compute and
blitter copy command streamers (CCS and BCS, respectively). It is an
enhancement of the existing hardware architecture and leverages the
same submission model. It enables support for efficient, parallel
execution of multiple queues within a single context. All the queues
of a group must use the same address space (VM).
The new DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE execution queue
property supports creating a multi queue group and adding queues to
a queue group. All queues of a multi queue group share the same
context.
A exec queue create ioctl call with above property specified with value
DRM_XE_SUPER_GROUP_CREATE will create a new multi queue group with the
queue being created as the primary queue (aka q0) of the group. To add
secondary queues to the group, they need to be created with the above
property with id of the primary queue as the value. The properties of
the primary queue (like priority, timeslice) applies to the whole group.
So, these properties can't be set for secondary queues of a group.
Once destroyed, the secondary queues of a multi queue group can't be
replaced. However, they can be dynamically added to the group up to a
total of 64 queues per group. Once the primary queue is destroyed,
secondary queues can't be added to the queue group.
v2: Remove group->lock, fix xe_exec_queue_group_add()/delete()
function semantics, add additional comments, remove unused
group->list_lock, add XE_BO_FLAG_GGTT_INVALIDATE for cgp bo,
Assert LRC is valid, update uapi kernel doc.
(Matt Brost)
v3: Use XE_BO_FLAG_PINNED_LATE_RESTORE/USER_VRAM/GGTT_INVALIDATE
flags for cgp bo (Matt)
v4: Ensure queue is not a vm_bind queue
uapi change due to rebase
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251211010249.1647839-21-niranjana.vishwanathapura@intel.com
2025-12-10 17:02:50 -08:00
|
|
|
|
2025-12-10 17:02:52 -08:00
|
|
|
|
2026-03-06 09:55:03 +02:00
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2024-02-09 12:34:44 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-12-10 17:02:53 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-02-23 15:30:43 +01:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2025-12-10 17:02:53 -08:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2024-03-19 10:49:19 -07:00
|
|
|
|
2023-11-14 13:34:27 +00:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-12-10 17:02:53 -08:00
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2023-12-15 15:45:38 +00:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-17 10:20:18 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2025-05-01 12:14:45 -07:00
|
|
|
|
2023-07-17 10:20:18 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2023-07-17 10:20:18 +02:00
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2025-12-10 17:02:53 -08:00
|
|
|
|
2023-07-17 10:20:18 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-12-10 17:02:53 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
drm/xe/multi_queue: Add user interface for multi queue support
Multi Queue is a new mode of execution supported by the compute and
blitter copy command streamers (CCS and BCS, respectively). It is an
enhancement of the existing hardware architecture and leverages the
same submission model. It enables support for efficient, parallel
execution of multiple queues within a single context. All the queues
of a group must use the same address space (VM).
The new DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE execution queue
property supports creating a multi queue group and adding queues to
a queue group. All queues of a multi queue group share the same
context.
A exec queue create ioctl call with above property specified with value
DRM_XE_SUPER_GROUP_CREATE will create a new multi queue group with the
queue being created as the primary queue (aka q0) of the group. To add
secondary queues to the group, they need to be created with the above
property with id of the primary queue as the value. The properties of
the primary queue (like priority, timeslice) applies to the whole group.
So, these properties can't be set for secondary queues of a group.
Once destroyed, the secondary queues of a multi queue group can't be
replaced. However, they can be dynamically added to the group up to a
total of 64 queues per group. Once the primary queue is destroyed,
secondary queues can't be added to the queue group.
v2: Remove group->lock, fix xe_exec_queue_group_add()/delete()
function semantics, add additional comments, remove unused
group->list_lock, add XE_BO_FLAG_GGTT_INVALIDATE for cgp bo,
Assert LRC is valid, update uapi kernel doc.
(Matt Brost)
v3: Use XE_BO_FLAG_PINNED_LATE_RESTORE/USER_VRAM/GGTT_INVALIDATE
flags for cgp bo (Matt)
v4: Ensure queue is not a vm_bind queue
uapi change due to rebase
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251211010249.1647839-21-niranjana.vishwanathapura@intel.com
2025-12-10 17:02:50 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-02-18 12:05:12 -08:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-09-13 16:28:35 -07:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-07-29 16:01:52 +03:00
|
|
|
|
2023-07-17 10:20:18 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2023-07-17 10:20:18 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2023-07-17 10:20:18 +02:00
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-17 10:20:18 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-12-18 14:38:51 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-12-18 14:38:52 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-12-18 14:38:51 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-03-03 14:30:41 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-08-15 20:40:33 -07:00
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2025-02-28 12:32:24 +05:30
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-06-26 14:22:20 -07:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2025-02-28 12:32:24 +05:30
|
|
|
|
2023-07-17 10:20:18 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-17 10:20:18 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2025-05-01 12:14:45 -07:00
|
|
|
|
|
|
|
|
|
2023-07-17 10:20:18 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2025-07-01 13:13:27 -07:00
|
|
|
|
2023-07-11 17:35:57 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2025-02-28 12:32:24 +05:30
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-12-15 15:45:39 +00:00
|
|
|
|
2024-08-15 20:40:33 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-01-20 11:06:10 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-08-15 20:40:33 -07:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2025-02-28 12:32:24 +05:30
|
|
|
|
2024-08-15 20:40:33 -07:00
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2026-01-20 11:06:10 +00:00
|
|
|
|
2024-08-15 20:40:33 -07:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2026-01-20 11:06:10 +00:00
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2023-04-10 14:26:58 -07:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2026-01-20 11:06:10 +00:00
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2025-02-18 12:05:12 -08:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2023-07-17 10:20:18 +02:00
|
|
|
|
2023-04-10 14:26:58 -07:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2024-07-29 16:01:52 +03:00
|
|
|
|
2023-07-17 10:20:18 +02:00
|
|
|
|
2023-04-10 14:26:58 -07:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2026-02-24 18:20:14 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-07-17 10:20:18 +02:00
|
|
|
|
2023-04-10 14:26:58 -07:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-06-22 12:39:48 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-17 10:20:18 +02:00
|
|
|
|
2023-06-22 12:39:48 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-12-18 14:38:51 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2025-02-28 12:32:24 +05:30
|
|
|
|
2024-01-10 09:32:51 -08:00
|
|
|
|
2023-06-22 12:39:48 -07:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2023-09-20 15:29:28 -04:00
|
|
|
|
drm/xe/multi_queue: Add user interface for multi queue support
Multi Queue is a new mode of execution supported by the compute and
blitter copy command streamers (CCS and BCS, respectively). It is an
enhancement of the existing hardware architecture and leverages the
same submission model. It enables support for efficient, parallel
execution of multiple queues within a single context. All the queues
of a group must use the same address space (VM).
The new DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE execution queue
property supports creating a multi queue group and adding queues to
a queue group. All queues of a multi queue group share the same
context.
A exec queue create ioctl call with above property specified with value
DRM_XE_SUPER_GROUP_CREATE will create a new multi queue group with the
queue being created as the primary queue (aka q0) of the group. To add
secondary queues to the group, they need to be created with the above
property with id of the primary queue as the value. The properties of
the primary queue (like priority, timeslice) applies to the whole group.
So, these properties can't be set for secondary queues of a group.
Once destroyed, the secondary queues of a multi queue group can't be
replaced. However, they can be dynamically added to the group up to a
total of 64 queues per group. Once the primary queue is destroyed,
secondary queues can't be added to the queue group.
v2: Remove group->lock, fix xe_exec_queue_group_add()/delete()
function semantics, add additional comments, remove unused
group->list_lock, add XE_BO_FLAG_GGTT_INVALIDATE for cgp bo,
Assert LRC is valid, update uapi kernel doc.
(Matt Brost)
v3: Use XE_BO_FLAG_PINNED_LATE_RESTORE/USER_VRAM/GGTT_INVALIDATE
flags for cgp bo (Matt)
v4: Ensure queue is not a vm_bind queue
uapi change due to rebase
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251211010249.1647839-21-niranjana.vishwanathapura@intel.com
2025-12-10 17:02:50 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-11-27 13:33:49 +01:00
|
|
|
|
2024-06-13 19:03:48 +02:00
|
|
|
|
2023-09-20 15:29:28 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
drm/xe/multi_queue: Add user interface for multi queue support
Multi Queue is a new mode of execution supported by the compute and
blitter copy command streamers (CCS and BCS, respectively). It is an
enhancement of the existing hardware architecture and leverages the
same submission model. It enables support for efficient, parallel
execution of multiple queues within a single context. All the queues
of a group must use the same address space (VM).
The new DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE execution queue
property supports creating a multi queue group and adding queues to
a queue group. All queues of a multi queue group share the same
context.
A exec queue create ioctl call with above property specified with value
DRM_XE_SUPER_GROUP_CREATE will create a new multi queue group with the
queue being created as the primary queue (aka q0) of the group. To add
secondary queues to the group, they need to be created with the above
property with id of the primary queue as the value. The properties of
the primary queue (like priority, timeslice) applies to the whole group.
So, these properties can't be set for secondary queues of a group.
Once destroyed, the secondary queues of a multi queue group can't be
replaced. However, they can be dynamically added to the group up to a
total of 64 queues per group. Once the primary queue is destroyed,
secondary queues can't be added to the queue group.
v2: Remove group->lock, fix xe_exec_queue_group_add()/delete()
function semantics, add additional comments, remove unused
group->list_lock, add XE_BO_FLAG_GGTT_INVALIDATE for cgp bo,
Assert LRC is valid, update uapi kernel doc.
(Matt Brost)
v3: Use XE_BO_FLAG_PINNED_LATE_RESTORE/USER_VRAM/GGTT_INVALIDATE
flags for cgp bo (Matt)
v4: Ensure queue is not a vm_bind queue
uapi change due to rebase
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251211010249.1647839-21-niranjana.vishwanathapura@intel.com
2025-12-10 17:02:50 -08:00
|
|
|
|
2023-09-20 15:29:28 -04:00
|
|
|
|
2024-08-09 17:51:28 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-08 02:06:47 +00:00
|
|
|
|
2024-08-09 17:51:28 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2024-09-25 08:14:28 +01:00
|
|
|
|
2026-01-16 14:17:25 -08:00
|
|
|
|
|
|
|
|
|
2024-09-25 08:14:28 +01:00
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2026-04-08 02:06:47 +00:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-08 02:06:47 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-09-20 15:29:28 -04:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
drm/xe/multi_queue: Add user interface for multi queue support
Multi Queue is a new mode of execution supported by the compute and
blitter copy command streamers (CCS and BCS, respectively). It is an
enhancement of the existing hardware architecture and leverages the
same submission model. It enables support for efficient, parallel
execution of multiple queues within a single context. All the queues
of a group must use the same address space (VM).
The new DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE execution queue
property supports creating a multi queue group and adding queues to
a queue group. All queues of a multi queue group share the same
context.
A exec queue create ioctl call with above property specified with value
DRM_XE_SUPER_GROUP_CREATE will create a new multi queue group with the
queue being created as the primary queue (aka q0) of the group. To add
secondary queues to the group, they need to be created with the above
property with id of the primary queue as the value. The properties of
the primary queue (like priority, timeslice) applies to the whole group.
So, these properties can't be set for secondary queues of a group.
Once destroyed, the secondary queues of a multi queue group can't be
replaced. However, they can be dynamically added to the group up to a
total of 64 queues per group. Once the primary queue is destroyed,
secondary queues can't be added to the queue group.
v2: Remove group->lock, fix xe_exec_queue_group_add()/delete()
function semantics, add additional comments, remove unused
group->list_lock, add XE_BO_FLAG_GGTT_INVALIDATE for cgp bo,
Assert LRC is valid, update uapi kernel doc.
(Matt Brost)
v3: Use XE_BO_FLAG_PINNED_LATE_RESTORE/USER_VRAM/GGTT_INVALIDATE
flags for cgp bo (Matt)
v4: Ensure queue is not a vm_bind queue
uapi change due to rebase
Signed-off-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20251211010249.1647839-21-niranjana.vishwanathapura@intel.com
2025-12-10 17:02:50 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-09-20 15:29:28 -04:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-03-03 14:30:41 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2023-01-23 09:11:32 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2023-06-02 20:27:32 +03:00
|
|
|
|
2023-01-23 09:11:32 -08:00
|
|
|
|
2023-07-17 10:20:18 +02:00
|
|
|
|
2023-05-24 18:56:07 -07:00
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2023-01-23 09:11:32 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-11-14 13:34:27 +00:00
|
|
|
|
2024-06-04 11:47:00 -07:00
|
|
|
|
2023-06-02 20:27:32 +03:00
|
|
|
|
2023-01-23 09:11:32 -08:00
|
|
|
|
|
|
|
|
|
2023-06-02 20:27:32 +03:00
|
|
|
|
2023-01-23 09:11:32 -08:00
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-06-02 20:27:32 +03:00
|
|
|
|
|
|
|
|
|
2023-01-23 09:11:32 -08:00
|
|
|
|
|
|
|
|
|
2023-05-21 18:24:20 -07:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2023-05-21 18:24:20 -07:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-05-21 18:24:20 -07:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-05-21 18:24:20 -07:00
|
|
|
|
2023-11-27 13:33:49 +01:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-05-21 18:24:20 -07:00
|
|
|
|
|
|
|
|
|
2023-03-10 12:03:47 +01:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2023-03-10 12:03:47 +01:00
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-10 12:03:47 +01:00
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-10 12:03:47 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-10 12:03:47 +01:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-10 12:03:47 +01:00
|
|
|
|
2023-09-20 15:29:27 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-05-29 20:22:10 -07:00
|
|
|
|
|
|
|
|
|
2023-09-20 15:29:27 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-03-10 12:03:47 +01:00
|
|
|
|
2024-05-29 20:22:10 -07:00
|
|
|
|
|
|
|
|
|
2023-03-10 12:03:47 +01:00
|
|
|
|
|
|
|
|
|
2024-05-17 13:43:07 -07:00
|
|
|
|
2024-05-24 16:47:43 -07:00
|
|
|
|
|
|
|
|
|
2024-05-17 13:43:07 -07:00
|
|
|
|
|
|
|
|
|
2024-05-24 16:47:43 -07:00
|
|
|
|
|
|
|
|
|
2024-05-17 13:43:07 -07:00
|
|
|
|
2024-05-24 16:47:43 -07:00
|
|
|
|
2024-05-17 13:43:07 -07:00
|
|
|
|
2024-12-17 21:31:21 -08:00
|
|
|
|
2024-05-17 13:43:07 -07:00
|
|
|
|
drm/xe: Add WA BB to capture active context utilization
Context Timestamp (CTX_TIMESTAMP) in the LRC accumulates the run ticks
of the context, but only gets updated when the context switches out. In
order to check how long a context has been active before it switches
out, two things are required:
(1) Determine if the context is running:
To do so, we program the WA BB to set an initial value for CTX_TIMESTAMP
in the LRC. The value chosen is 1 since 0 is the initial value when the
LRC is initialized. During a query, we just check for this value to
determine if the context is active. If the context switched out, it
would overwrite this location with the actual CTX_TIMESTAMP MMIO value.
Note that WA BB runs as the last part of the context restore, so reusing
this LRC location will not clobber anything.
(2) Calculate the time that the context has been active for:
The CTX_TIMESTAMP ticks only when the context is active. If a context is
active, we just use the CTX_TIMESTAMP MMIO as the new value of
utilization. While doing so, we need to read the CTX_TIMESTAMP MMIO
for the specific engine instance. Since we do not know which instance
the context is running on until it is scheduled, we also read the
ENGINE_ID MMIO in the WA BB and store it in the PPHSWP.
Using the above 2 instructions in a WA BB, capture active context
utilization.
v2: (Matt Brost)
- This breaks TDR, fix it by saving the CTX_TIMESTAMP register
"drm/xe: Save CTX_TIMESTAMP mmio value instead of LRC value"
- Drop tile from LRC if using gt
"drm/xe: Save the gt pointer in LRC and drop the tile"
v3:
- Remove helpers for bb_per_ctx_ptr (Matt)
- Add define for context active value (Matt)
- Use 64 bit CTX TIMESTAMP for platforms that support it. For platforms
that don't, live with the rare race. (Matt, Lucas)
- Convert engine id to hwe and get the MMIO value (Lucas)
- Correct commit message on when WA BB runs (Lucas)
v4:
- s/GRAPHICS_VER(...)/xe->info.has_64bit_timestamp/ (Matt)
- Drop support for active utilization on a VF (CI failure)
- In xe_lrc_init ensure the lrc value is 0 to begin with (CI regression)
v5:
- Minor checkpatch fix
- Squash into previous commit and make TDR use 32-bit time
- Update code comment to match commit msg
Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/4532
Suggested-by: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://lore.kernel.org/r/20250509161159.2173069-8-umesh.nerlige.ramappa@intel.com
2025-05-09 09:12:03 -07:00
|
|
|
|
2024-12-17 21:31:21 -08:00
|
|
|
|
2024-05-17 13:43:07 -07:00
|
|
|
|
|
|
|
|
|
2024-12-17 21:31:22 -08:00
|
|
|
|
|
|
|
|
|
2024-05-17 13:43:07 -07:00
|
|
|
|
2024-12-17 21:31:22 -08:00
|
|
|
|
2024-05-17 13:43:07 -07:00
|
|
|
|
|
|
|
|
|
2024-12-17 21:31:21 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-05-17 13:43:07 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-05-29 20:22:10 -07:00
|
|
|
|
2024-05-17 13:43:07 -07:00
|
|
|
|
2024-12-17 21:31:22 -08:00
|
|
|
|
2024-12-17 21:31:21 -08:00
|
|
|
|
|
|
|
|
|
2024-05-17 13:43:07 -07:00
|
|
|
|
|
|
|
|
|
2024-08-14 13:56:54 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-09-20 15:29:29 -04:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-09-20 15:29:29 -04:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2026-03-03 14:30:41 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-07-17 10:20:18 +02:00
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2024-11-07 21:33:16 -08:00
|
|
|
|
|
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2024-11-07 21:33:16 -08:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
2024-08-09 17:51:28 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-01-06 11:10:50 -08:00
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
2023-07-31 17:30:02 +02:00
|
|
|
|
|
|
|
|
|
2023-03-30 17:31:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-09-14 13:40:51 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-10-31 16:40:46 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-12-05 10:39:54 -08:00
|
|
|
|
2024-08-09 17:51:31 +02:00
|
|
|
|
2023-12-05 10:39:54 -08:00
|
|
|
|
2024-08-09 17:51:31 +02:00
|
|
|
|
|
|
|
|
|
2023-09-14 13:40:51 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-08-09 17:51:30 +02:00
|
|
|
|
2023-09-14 13:40:51 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-01-31 16:48:48 -08:00
|
|
|
|
2023-09-14 13:40:51 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-01-31 16:48:48 -08:00
|
|
|
|
|
|
|
|
|
2023-09-14 13:40:51 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-01-31 16:48:48 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-09-14 13:40:51 -07:00
|
|
|
|
|
|
|
|
|
2024-08-09 17:51:31 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-09-14 13:40:51 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-10-31 16:40:46 -07:00
|
|
|
|
2023-09-14 13:40:51 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-07-03 21:16:48 -07:00
|
|
|
|
2025-10-31 16:40:46 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-09 00:34:49 +00:00
|
|
|
|
2025-10-31 16:40:46 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-08-02 05:10:41 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-08-02 05:10:42 +02:00
|
|
|
|
2025-08-02 05:10:44 +02:00
|
|
|
|
|
|
|
|
|
2025-08-02 05:10:41 +02:00
|
|
|
|
2025-08-02 05:10:44 +02:00
|
|
|
|
2025-08-02 05:10:41 +02:00
|
|
|
|
|
|
|
|
|
2025-08-02 05:10:44 +02:00
|
|
|
|
2025-08-02 05:10:41 +02:00
|
|
|
|
2025-08-02 05:10:42 +02:00
|
|
|
|
2025-10-08 14:45:25 -07:00
|
|
|
|
|
|
|
|
|
2026-02-26 22:26:59 +01:00
|
|
|
|
2025-10-08 14:45:25 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-02-26 22:26:59 +01:00
|
|
|
|
2025-08-02 05:10:44 +02:00
|
|
|
|
|
|
|
|
|
2025-08-02 05:10:42 +02:00
|
|
|
|
2025-08-02 05:10:44 +02:00
|
|
|
|
|
|
|
|
|
2025-08-02 05:10:41 +02:00
|
|
|
|