[PATCH] drm/xe: Unlink client during vm close

Tejas Upadhyay tejas.upadhyay at intel.com
Thu Jul 18 13:17:52 UTC 2024


We have async call which does not know if client
unlinked from vm by the time it is accessed. Set
client unlink early during xe_vm_close() so that
async API do not touch closed client info.

Also, debugs related to job timeout is not useful
when its "no process" or client already unlinked.

Fixes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/2273
Signed-off-by: Tejas Upadhyay <tejas.upadhyay at intel.com>
---
 drivers/gpu/drm/xe/xe_guc_submit.c | 7 ++++---
 drivers/gpu/drm/xe/xe_vm.c         | 1 +
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
index 860405527115..1de141cb84c6 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@ -1166,10 +1166,11 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
 			process_name = task->comm;
 			pid = task->pid;
 		}
+		xe_gt_notice(guc_to_gt(guc), "Timedout job: seqno=%u, lrc_seqno=%u, guc_id=%d, flags=0x%lx in %s [%d]",
+			     xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
+			     q->guc->id, q->flags, process_name, pid);
 	}
-	xe_gt_notice(guc_to_gt(guc), "Timedout job: seqno=%u, lrc_seqno=%u, guc_id=%d, flags=0x%lx in %s [%d]",
-		     xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
-		     q->guc->id, q->flags, process_name, pid);
+
 	if (task)
 		put_task_struct(task);
 
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index cf3aea5d8cdc..660b20e0e207 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -1537,6 +1537,7 @@ static void xe_vm_close(struct xe_vm *vm)
 {
 	down_write(&vm->lock);
 	vm->size = 0;
+	vm->xef = NULL;
 	up_write(&vm->lock);
 }
 
-- 
2.25.1



More information about the Intel-xe mailing list