Commit c301c3d2 authored by Dave Airlie's avatar Dave Airlie

Merge tag 'drm-xe-fixes-2024-05-30' of https://gitlab.freedesktop.org/drm/xe/kernel into drm-fixes

Driver Changes:
- One pcode polling timeout change
- One fix for deadlocks for faulting VMs
- One error-path lock imbalance fix
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>

From: Thomas Hellstrom <thomas.hellstrom@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/ZlisNHzgoq9nVg6g@fedora
parents cfd36ae3 6c5cd080
...@@ -1240,6 +1240,7 @@ static int guc_exec_queue_init(struct xe_exec_queue *q) ...@@ -1240,6 +1240,7 @@ static int guc_exec_queue_init(struct xe_exec_queue *q)
return 0; return 0;
err_entity: err_entity:
mutex_unlock(&guc->submission_state.lock);
xe_sched_entity_fini(&ge->entity); xe_sched_entity_fini(&ge->entity);
err_sched: err_sched:
xe_sched_fini(&ge->sched); xe_sched_fini(&ge->sched);
......
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
#include "xe_sync.h" #include "xe_sync.h"
#include "xe_trace.h" #include "xe_trace.h"
#include "xe_vm.h" #include "xe_vm.h"
#include "xe_wa.h"
/** /**
* struct xe_migrate - migrate context. * struct xe_migrate - migrate context.
...@@ -300,10 +299,6 @@ static int xe_migrate_prepare_vm(struct xe_tile *tile, struct xe_migrate *m, ...@@ -300,10 +299,6 @@ static int xe_migrate_prepare_vm(struct xe_tile *tile, struct xe_migrate *m,
} }
/* /*
* Due to workaround 16017236439, odd instance hardware copy engines are
* faster than even instance ones.
* This function returns the mask involving all fast copy engines and the
* reserved copy engine to be used as logical mask for migrate engine.
* Including the reserved copy engine is required to avoid deadlocks due to * Including the reserved copy engine is required to avoid deadlocks due to
* migrate jobs servicing the faults gets stuck behind the job that faulted. * migrate jobs servicing the faults gets stuck behind the job that faulted.
*/ */
...@@ -317,8 +312,7 @@ static u32 xe_migrate_usm_logical_mask(struct xe_gt *gt) ...@@ -317,8 +312,7 @@ static u32 xe_migrate_usm_logical_mask(struct xe_gt *gt)
if (hwe->class != XE_ENGINE_CLASS_COPY) if (hwe->class != XE_ENGINE_CLASS_COPY)
continue; continue;
if (!XE_WA(gt, 16017236439) || if (xe_gt_is_usm_hwe(gt, hwe))
xe_gt_is_usm_hwe(gt, hwe) || hwe->instance & 1)
logical_mask |= BIT(hwe->logical_instance); logical_mask |= BIT(hwe->logical_instance);
} }
...@@ -369,6 +363,10 @@ struct xe_migrate *xe_migrate_init(struct xe_tile *tile) ...@@ -369,6 +363,10 @@ struct xe_migrate *xe_migrate_init(struct xe_tile *tile)
if (!hwe || !logical_mask) if (!hwe || !logical_mask)
return ERR_PTR(-EINVAL); return ERR_PTR(-EINVAL);
/*
* XXX: Currently only reserving 1 (likely slow) BCS instance on
* PVC, may want to revisit if performance is needed.
*/
m->q = xe_exec_queue_create(xe, vm, logical_mask, 1, hwe, m->q = xe_exec_queue_create(xe, vm, logical_mask, 1, hwe,
EXEC_QUEUE_FLAG_KERNEL | EXEC_QUEUE_FLAG_KERNEL |
EXEC_QUEUE_FLAG_PERMANENT | EXEC_QUEUE_FLAG_PERMANENT |
......
...@@ -191,7 +191,7 @@ int xe_pcode_request(struct xe_gt *gt, u32 mbox, u32 request, ...@@ -191,7 +191,7 @@ int xe_pcode_request(struct xe_gt *gt, u32 mbox, u32 request,
drm_WARN_ON_ONCE(&gt_to_xe(gt)->drm, timeout_base_ms > 1); drm_WARN_ON_ONCE(&gt_to_xe(gt)->drm, timeout_base_ms > 1);
preempt_disable(); preempt_disable();
ret = pcode_try_request(gt, mbox, request, reply_mask, reply, &status, ret = pcode_try_request(gt, mbox, request, reply_mask, reply, &status,
true, timeout_base_ms * 1000, true); true, 50 * 1000, true);
preempt_enable(); preempt_enable();
out: out:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment