When GuC is in use we need to make sure it is re-loaded before the call to gt_resume, otherwise communication from the engines to the GuC will not be processed, which blocks the engines from ctx switching and from being reset. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=112205 Cc: Andi Shyti <andi.shyti@xxxxxxxxx> Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@xxxxxxxxx> --- drivers/gpu/drm/i915/gt/selftest_gt_pm.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/gpu/drm/i915/gt/selftest_gt_pm.c b/drivers/gpu/drm/i915/gt/selftest_gt_pm.c index d1752f15702a..0bb17c806dfc 100644 --- a/drivers/gpu/drm/i915/gt/selftest_gt_pm.c +++ b/drivers/gpu/drm/i915/gt/selftest_gt_pm.c @@ -11,8 +11,11 @@ static int live_gt_resume(void *arg) { struct intel_gt *gt = arg; IGT_TIMEOUT(end_time); + intel_wakeref_t wakeref; int err; + wakeref = intel_runtime_pm_get(gt->uncore->rpm); + /* Do several suspend/resume cycles to check we don't explode! */ do { intel_gt_suspend_prepare(gt); @@ -25,6 +28,10 @@ static int live_gt_resume(void *arg) break; } + err = intel_gt_init_hw(gt); + if (err) + break; + err = intel_gt_resume(gt); if (err) break; @@ -44,6 +51,8 @@ static int live_gt_resume(void *arg) } } while (!__igt_timeout(end_time, NULL)); + intel_runtime_pm_put(gt->uncore->rpm, wakeref); + return err; } -- 2.23.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx