[PATCH] drm/i915/gt: Disable powergating [rc6] across reset and resume
Chris Wilson
chris at chris-wilson.co.uk
Wed Apr 21 09:50:08 UTC 2021
On the resume following reset, we have to reapply various default
register settings. This requires a clean environment, such as ensuring
powergating is disabled. Before we issue the device reset, disable rc6
(and powergating) and rps/llc for symmetry. On resume, we can then bring
them back on line as soon as the GPU is ready to do so.
Reported-by: Tejas Upadhyay <tejaskumarx.surendrakumar.upadhyay at intel.com>
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
Cc: Tejas Upadhyay <tejaskumarx.surendrakumar.upadhyay at intel.com>
---
drivers/gpu/drm/i915/gt/intel_reset.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/gpu/drm/i915/gt/intel_reset.c b/drivers/gpu/drm/i915/gt/intel_reset.c
index a377c4588aaa..3f4b2ecc1d1e 100644
--- a/drivers/gpu/drm/i915/gt/intel_reset.c
+++ b/drivers/gpu/drm/i915/gt/intel_reset.c
@@ -1055,6 +1055,11 @@ void intel_gt_reset(struct intel_gt *gt,
if (INTEL_INFO(gt->i915)->gpu_reset_clobbers_display)
intel_runtime_pm_disable_interrupts(gt->i915);
+ /* Disable powergating and friends, so we can resume afresh */
+ intel_rc6_disable(>->rc6);
+ intel_rps_disable(>->rps);
+ intel_llc_disable(>->llc);
+
if (do_reset(gt, stalled_mask)) {
drm_err(>->i915->drm, "Failed to reset chip\n");
goto taint;
@@ -1081,10 +1086,15 @@ void intel_gt_reset(struct intel_gt *gt,
goto taint;
}
+ intel_rps_enable(>->rps);
+ intel_llc_enable(>->llc);
+
ret = resume(gt);
if (ret)
goto taint;
+ intel_rc6_enable(>->rc6);
+
finish:
reset_finish(gt, awake);
unlock:
--
2.20.1
More information about the Intel-gfx-trybot
mailing list