Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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: Dave Airlie <airlied@redhat.com>

From: Thomas Hellstrom <thomas.hellstrom@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/ZlisNHzgoq9nVg6g@fedora

+7 -8
+1
drivers/gpu/drm/xe/xe_guc_submit.c
··· 1240 1240 return 0; 1241 1241 1242 1242 err_entity: 1243 + mutex_unlock(&guc->submission_state.lock); 1243 1244 xe_sched_entity_fini(&ge->entity); 1244 1245 err_sched: 1245 1246 xe_sched_fini(&ge->sched);
+5 -7
drivers/gpu/drm/xe/xe_migrate.c
··· 34 34 #include "xe_sync.h" 35 35 #include "xe_trace.h" 36 36 #include "xe_vm.h" 37 - #include "xe_wa.h" 38 37 39 38 /** 40 39 * struct xe_migrate - migrate context. ··· 299 300 } 300 301 301 302 /* 302 - * Due to workaround 16017236439, odd instance hardware copy engines are 303 - * faster than even instance ones. 304 - * This function returns the mask involving all fast copy engines and the 305 - * reserved copy engine to be used as logical mask for migrate engine. 306 303 * Including the reserved copy engine is required to avoid deadlocks due to 307 304 * migrate jobs servicing the faults gets stuck behind the job that faulted. 308 305 */ ··· 312 317 if (hwe->class != XE_ENGINE_CLASS_COPY) 313 318 continue; 314 319 315 - if (!XE_WA(gt, 16017236439) || 316 - xe_gt_is_usm_hwe(gt, hwe) || hwe->instance & 1) 320 + if (xe_gt_is_usm_hwe(gt, hwe)) 317 321 logical_mask |= BIT(hwe->logical_instance); 318 322 } 319 323 ··· 363 369 if (!hwe || !logical_mask) 364 370 return ERR_PTR(-EINVAL); 365 371 372 + /* 373 + * XXX: Currently only reserving 1 (likely slow) BCS instance on 374 + * PVC, may want to revisit if performance is needed. 375 + */ 366 376 m->q = xe_exec_queue_create(xe, vm, logical_mask, 1, hwe, 367 377 EXEC_QUEUE_FLAG_KERNEL | 368 378 EXEC_QUEUE_FLAG_PERMANENT |
+1 -1
drivers/gpu/drm/xe/xe_pcode.c
··· 191 191 drm_WARN_ON_ONCE(&gt_to_xe(gt)->drm, timeout_base_ms > 1); 192 192 preempt_disable(); 193 193 ret = pcode_try_request(gt, mbox, request, reply_mask, reply, &status, 194 - true, timeout_base_ms * 1000, true); 194 + true, 50 * 1000, true); 195 195 preempt_enable(); 196 196 197 197 out: