Guard rpm helpers at gt_park/unpark with is_intel_rpm_allowed to guard (gt/engine)_pm_(get/put) Signed-off-by: Tilak Tangudu <tilak.tangudu@xxxxxxxxx> --- drivers/gpu/drm/i915/gt/intel_engine_cs.c | 9 ++++++--- drivers/gpu/drm/i915/gt/intel_gt_pm.c | 10 ++++++---- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c index 136cc44c3deb..e353aa0c649b 100644 --- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c +++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c @@ -1600,9 +1600,12 @@ bool intel_engines_are_idle(struct intel_gt *gt) if (intel_gt_is_wedged(gt)) return true; - /* Already parked (and passed an idleness test); must still be idle */ - if (!READ_ONCE(gt->awake)) - return true; + /* Ignore gt->awake when rpm is not allowed as wakeref is not held at gt_unpark */ + if (is_intel_rpm_allowed(gt->uncore->rpm)) { + /* Already parked (and passed an idleness test); must still be idle */ + if (!READ_ONCE(gt->awake)) + return true; + } for_each_engine(engine, gt, id) { if (!intel_engine_is_idle(engine)) diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm.c b/drivers/gpu/drm/i915/gt/intel_gt_pm.c index 9857b91194b7..12117cf7eb94 100644 --- a/drivers/gpu/drm/i915/gt/intel_gt_pm.c +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.c @@ -81,8 +81,10 @@ static int __gt_unpark(struct intel_wakeref *wf) * Work around it by grabbing a GT IRQ power domain whilst there is any * GT activity, preventing any DC state transitions. */ - gt->awake = intel_display_power_get(i915, POWER_DOMAIN_GT_IRQ); - GEM_BUG_ON(!gt->awake); + if (is_intel_rpm_allowed(gt->uncore->rpm)) { + gt->awake = intel_display_power_get(i915, POWER_DOMAIN_GT_IRQ); + GEM_BUG_ON(!gt->awake); + } intel_rc6_unpark(>->rc6); intel_rps_unpark(>->rps); @@ -116,8 +118,8 @@ static int __gt_park(struct intel_wakeref *wf) intel_synchronize_irq(i915); /* Defer dropping the display power well for 100ms, it's slow! */ - GEM_BUG_ON(!wakeref); - intel_display_power_put_async(i915, POWER_DOMAIN_GT_IRQ, wakeref); + if (wakeref) + intel_display_power_put_async(i915, POWER_DOMAIN_GT_IRQ, wakeref); return 0; } -- 2.25.1