drm/i915: Make GEM resume all engines
authorTvrtko Ursulin <tvrtko.ursulin@intel.com>
Thu, 15 Sep 2022 23:26:52 +0000 (16:26 -0700)
committerMatt Roper <matthew.d.roper@intel.com>
Fri, 16 Sep 2022 14:57:20 +0000 (07:57 -0700)
Walk all GTs from i915_gem_resume when resuming engines.

Cc: Andi Shyti <andi.shyti@intel.com>
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220915232654.3283095-3-matthew.d.roper@intel.com
drivers/gpu/drm/i915/gem/i915_gem_pm.c

index 3428f73..2c80cc8 100644 (file)
@@ -212,7 +212,8 @@ int i915_gem_freeze_late(struct drm_i915_private *i915)
 
 void i915_gem_resume(struct drm_i915_private *i915)
 {
-       int ret;
+       struct intel_gt *gt;
+       int ret, i, j;
 
        GEM_TRACE("%s\n", dev_name(i915->drm.dev));
 
@@ -224,8 +225,25 @@ void i915_gem_resume(struct drm_i915_private *i915)
         * guarantee that the context image is complete. So let's just reset
         * it and start again.
         */
-       intel_gt_resume(to_gt(i915));
+       for_each_gt(gt, i915, i)
+               if (intel_gt_resume(gt))
+                       goto err_wedged;
 
        ret = lmem_restore(i915, I915_TTM_BACKUP_ALLOW_GPU);
        GEM_WARN_ON(ret);
+
+       return;
+
+err_wedged:
+       for_each_gt(gt, i915, j) {
+               if (!intel_gt_is_wedged(gt)) {
+                       dev_err(i915->drm.dev,
+                               "Failed to re-initialize GPU[%u], declaring it wedged!\n",
+                               j);
+                       intel_gt_set_wedged(gt);
+               }
+
+               if (j == i)
+                       break;
+       }
 }