drm/xe: Fix GT "for each engine" workarounds
authorTvrtko Ursulin <tvrtko.ursulin@igalia.com>
Thu, 27 Feb 2025 10:13:00 +0000 (10:13 +0000)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Tue, 4 Mar 2025 19:45:21 +0000 (14:45 -0500)
Any rules using engine matching are currently broken due RTP processing
happening too in early init, before the list of hardware engines has been
initialised.

Fix this by moving workaround processing to later in the driver probe
sequence, to just before the processed list is used for the first time.

Looking at the debugfs gt0/workarounds on ADL-P we notice 14011060649
should be present while we see, before:

 GT Workarounds
     14011059788
     14015795083

And with the patch:

 GT Workarounds
     14011060649
     14011059788
     14015795083

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: stable@vger.kernel.org # v6.11+
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250227101304.46660-2-tvrtko.ursulin@igalia.com
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
(cherry picked from commit 25d434cef791e03cf40680f5441b576c639bfa84)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/xe_gt.c

index 5d6fb79957b638a93b6c9690c31bd43abe3e39ad..9f4f27d1ef4a95c1bef3a82c64bd7aeff7e537ea 100644 (file)
@@ -380,9 +380,7 @@ int xe_gt_init_early(struct xe_gt *gt)
        if (err)
                return err;
 
-       xe_wa_process_gt(gt);
        xe_wa_process_oob(gt);
-       xe_tuning_process_gt(gt);
 
        xe_force_wake_init_gt(gt, gt_to_fw(gt));
        spin_lock_init(&gt->global_invl_lock);
@@ -474,6 +472,8 @@ static int all_fw_domain_init(struct xe_gt *gt)
        }
 
        xe_gt_mcr_set_implicit_defaults(gt);
+       xe_wa_process_gt(gt);
+       xe_tuning_process_gt(gt);
        xe_reg_sr_apply_mmio(&gt->reg_sr, gt);
 
        err = xe_gt_clock_init(gt);