summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/xe/xe_exec_queue.h
diff options
context:
space:
mode:
authorTomasz Lis <tomasz.lis@intel.com>2026-02-26 22:26:59 +0100
committerMichal Wajdeczko <michal.wajdeczko@intel.com>2026-02-27 18:02:04 +0100
commitec172c7befc4a48ea7d6afe6f0fa23c533222233 (patch)
tree8528e331ac4b2c2a257fcf9fb50dc3f99d2cc2fa /drivers/gpu/drm/xe/xe_exec_queue.h
parent393e5fea6f7d7054abc2c3d97a4cfe8306cd6079 (diff)
downloadlinux-next-ec172c7befc4a48ea7d6afe6f0fa23c533222233.tar.gz
linux-next-ec172c7befc4a48ea7d6afe6f0fa23c533222233.zip
drm/xe: Wrappers for setting and getting LRC references
There is a small but non-zero chance that VF post migration fixups are running on an exec queue during teardown. The chances are decreased by starting the teardown by releasing guc_id, but remain non-zero. On the other hand the sync between fixups and EQ creation (wait_valid_ggtt) drastically increases the chance for such parallel teardown if queue creation error path is entered (err_lrc label). The exec queue itself is not going to cause an issue, but LRCs have a small chance of getting freed during the fixups. Creating a setter and a getter makes it easier to protect the fixup operations with a lock. For other driver activities, the original access method (without any protection) can still be used. v2: Separate lock, only for LRCs. Kerneldoc fixes. Subject tag fix. 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-3-tomasz.lis@intel.com
Diffstat (limited to 'drivers/gpu/drm/xe/xe_exec_queue.h')
-rw-r--r--drivers/gpu/drm/xe/xe_exec_queue.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/gpu/drm/xe/xe_exec_queue.h b/drivers/gpu/drm/xe/xe_exec_queue.h
index c9e3a7c2d249..a82d99bd77bc 100644
--- a/drivers/gpu/drm/xe/xe_exec_queue.h
+++ b/drivers/gpu/drm/xe/xe_exec_queue.h
@@ -160,6 +160,7 @@ void xe_exec_queue_update_run_ticks(struct xe_exec_queue *q);
int xe_exec_queue_contexts_hwsp_rebase(struct xe_exec_queue *q, void *scratch);
struct xe_lrc *xe_exec_queue_lrc(struct xe_exec_queue *q);
+struct xe_lrc *xe_exec_queue_get_lrc(struct xe_exec_queue *q, u16 idx);
/**
* xe_exec_queue_idle_skip_suspend() - Can exec queue skip suspend