[Intel-xe] [PATCH 2/6] drm/xe: Use full_gt batchbuffer allocation for media tiles.

Maarten Lankhorst maarten.lankhorst at linux.intel.com
Fri Mar 31 10:24:15 UTC 2023


This fixes an oops on media tiles, because we don't initialise the
bb pool.
---
 drivers/gpu/drm/xe/xe_gt.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
index bc821f431c45..c7a2e9baabfb 100644
--- a/drivers/gpu/drm/xe/xe_gt.c
+++ b/drivers/gpu/drm/xe/xe_gt.c
@@ -237,6 +237,10 @@ int xe_gt_record_default_lrcs(struct xe_gt *gt)
 		struct xe_engine *e, *nop_e;
 		struct xe_vm *vm;
 		void *default_lrc;
+		struct xe_gt *full_gt = gt;
+
+		if (xe_gt_is_media_type(gt))
+			full_gt = xe_find_full_gt(gt);
 
 		if (gt->default_lrc[hwe->class])
 			continue;
@@ -262,7 +266,7 @@ int xe_gt_record_default_lrcs(struct xe_gt *gt)
 		}
 
 		/* Prime golden LRC with known good state */
-		err = emit_wa_job(gt, e);
+		err = emit_wa_job(full_gt, e);
 		if (err) {
 			drm_err(&xe->drm, "gt%d, hwe %s, guc_id=%d, emit_wa_job,e failed=%d",
 				gt->info.id, hwe->name, e->guc->id, err);
@@ -279,7 +283,7 @@ int xe_gt_record_default_lrcs(struct xe_gt *gt)
 		}
 
 		/* Switch to different LRC */
-		err = emit_nop_job(gt, nop_e);
+		err = emit_nop_job(full_gt, nop_e);
 		if (err) {
 			drm_err(&xe->drm, "gt%d, hwe %s, guc_id=%d, emit_nop_job,nop_e failed=%d",
 				gt->info.id, hwe->name, nop_e->guc->id, err);
@@ -287,7 +291,7 @@ int xe_gt_record_default_lrcs(struct xe_gt *gt)
 		}
 
 		/* Reload golden LRC to record the effect of any indirect W/A */
-		err = emit_nop_job(gt, e);
+		err = emit_nop_job(full_gt, e);
 		if (err) {
 			drm_err(&xe->drm, "gt%d, hwe %s, guc_id=%d, emit_nop_job,e failed=%d",
 				gt->info.id, hwe->name, e->guc->id, err);
-- 
2.34.1



More information about the Intel-xe mailing list