Message ID | 1393540010-1582-24-git-send-email-przanoni@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, 27 Feb 2014 19:26:50 -0300 Paulo Zanoni <przanoni@gmail.com> wrote: > From: Paulo Zanoni <paulo.r.zanoni@intel.com> > > Function intel_init_runtime_pm is supposed to start allowing runtime > PM from that point, but it's called very late on the driver > initialization code, to prevent the driver from trying to suspend > while still initializing. The problem is that variables are accessed > earlier than that, so initalize them at intel_pm_setup, which is > supposed to be the correct place. > > Notice that this shouldn't fix any specific bugs because dev_priv is > zeroed when allocated, so the value is already correct right from the > start. > > v2: - Rebase. > > Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> > --- > drivers/gpu/drm/i915/intel_pm.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c > index 3bd6e8f..88b434b 100644 > --- a/drivers/gpu/drm/i915/intel_pm.c > +++ b/drivers/gpu/drm/i915/intel_pm.c > @@ -5535,8 +5535,6 @@ void intel_init_runtime_pm(struct drm_i915_private *dev_priv) > struct drm_device *dev = dev_priv->dev; > struct device *device = &dev->pdev->dev; > > - dev_priv->pm.suspended = false; > - > if (!HAS_RUNTIME_PM(dev)) > return; > > @@ -5772,5 +5770,6 @@ void intel_pm_setup(struct drm_device *dev) > INIT_DELAYED_WORK(&dev_priv->rps.delayed_resume_work, > intel_gen6_powersave_work); > > + dev_priv->pm.suspended = false; > dev_priv->pm.irqs_disabled = false; > } Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> Though my earlier comments about getting rid of the init special case still apply... I think it would be a little easier to understand in that case (though maybe not, I guess we'd have to see the patches and resulting code).
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index 3bd6e8f..88b434b 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c @@ -5535,8 +5535,6 @@ void intel_init_runtime_pm(struct drm_i915_private *dev_priv) struct drm_device *dev = dev_priv->dev; struct device *device = &dev->pdev->dev; - dev_priv->pm.suspended = false; - if (!HAS_RUNTIME_PM(dev)) return; @@ -5772,5 +5770,6 @@ void intel_pm_setup(struct drm_device *dev) INIT_DELAYED_WORK(&dev_priv->rps.delayed_resume_work, intel_gen6_powersave_work); + dev_priv->pm.suspended = false; dev_priv->pm.irqs_disabled = false; }