Message ID | 1403265576-25478-1-git-send-email-deepak.s@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Jun 20, 2014 at 1:59 PM, <deepak.s@linux.intel.com> wrote: > > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c > index 2043c4b..6bbb90b 100644 > --- a/drivers/gpu/drm/i915/intel_pm.c > +++ b/drivers/gpu/drm/i915/intel_pm.c > @@ -4881,6 +4881,9 @@ void intel_suspend_gt_powersave(struct drm_device *dev) > /* Interrupts should be disabled already to avoid re-arming. */ > WARN_ON(dev->irq_enabled); > > + /* Force GPU to min freq during suspend */ > + gen6_rps_idle(dev_priv); > + Shouldn't this be _after_ we've cancelled the rps works? Otherwise the work item might sneak in and undo the idling between the idle and work cancelling. -Daniel
On Thursday 19 June 2014 06:04 PM, Daniel Vetter wrote: > On Fri, Jun 20, 2014 at 1:59 PM, <deepak.s@linux.intel.com> wrote: >> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c >> index 2043c4b..6bbb90b 100644 >> --- a/drivers/gpu/drm/i915/intel_pm.c >> +++ b/drivers/gpu/drm/i915/intel_pm.c >> @@ -4881,6 +4881,9 @@ void intel_suspend_gt_powersave(struct drm_device *dev) >> /* Interrupts should be disabled already to avoid re-arming. */ >> WARN_ON(dev->irq_enabled); >> >> + /* Force GPU to min freq during suspend */ >> + gen6_rps_idle(dev_priv); >> + > Shouldn't this be _after_ we've cancelled the rps works? Otherwise the > work item might sneak in and undo the idling between the idle and work > cancelling. > -Daniel My mistake sending updated patch, -Deepak
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index 2043c4b..6bbb90b 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c @@ -4881,6 +4881,9 @@ void intel_suspend_gt_powersave(struct drm_device *dev) /* Interrupts should be disabled already to avoid re-arming. */ WARN_ON(dev->irq_enabled); + /* Force GPU to min freq during suspend */ + gen6_rps_idle(dev_priv); + flush_delayed_work(&dev_priv->rps.delayed_resume_work); cancel_work_sync(&dev_priv->rps.work);