summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Brost <matthew.brost@intel.com>2023-03-20 23:58:36 +0300
committerRodrigo Vivi <rodrigo.vivi@intel.com>2023-12-20 02:30:21 +0300
commitb4eecedc75c1b75eee359c806fc964f70e0fc983 (patch)
tree6ee2593d7f1a6dfc16f6b27f07159e6029bf11bd
parent59ea53eecb7154a2ac8aa39f21f16a144be3eecc (diff)
downloadlinux-b4eecedc75c1b75eee359c806fc964f70e0fc983.tar.xz
drm/xe: Fix potential deadlock handling page faults
Within a class the GuC will hault scheduling if the head of the queue can't be scheduled the queue will block. This can lead to deadlock if BCS0-7 all have faults and another engine on BCS0-7 is at head of the GuC scheduling queue as the migration engine used to fix tthe fault will be blocked. To work around this set the migration engine to the highest priority when servicing page faults. v2 (Maarten): Set priority to kernel once at creation Signed-off-by: Matthew Brost <matthew.brost@intel.com> Reviewed-by: Brian Welty <brian.welty@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
-rw-r--r--drivers/gpu/drm/xe/xe_migrate.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrate.c
index 9102fa1d8759..b9b2a64447d8 100644
--- a/drivers/gpu/drm/xe/xe_migrate.c
+++ b/drivers/gpu/drm/xe/xe_migrate.c
@@ -360,6 +360,8 @@ struct xe_migrate *xe_migrate_init(struct xe_gt *gt)
xe_vm_close_and_put(vm);
return ERR_CAST(m->eng);
}
+ if (xe->info.supports_usm)
+ m->eng->priority = XE_ENGINE_PRIORITY_KERNEL;
mutex_init(&m->job_mutex);