diff mbox

drm/i915/vlv: Prevent enabling hpd polling in late suspend

Message ID 1477499769-1966-1-git-send-email-lyude@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Lyude Paul Oct. 26, 2016, 4:36 p.m. UTC
One of the CI machines began to run into issues with the hpd poller
suddenly waking up in the midst of the late suspend phase. It looks like
this is getting caused by the fact we now deinitialize power wells in
late suspend, which means that intel_hpd_poll_init() gets called in late
suspend causing polling to get re-enabled. So, when deinitializing power
wells on valleyview we now refrain from enabling polling in the midst of
suspend.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98040
Fixes: 19625e85c6ec ("drm/i915: Enable polling when we don't have hpd")
Signed-off-by: Lyude <lyude@redhat.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Jani Saarinen <jani.saarinen@intel.com>
Cc: Petry Latvala <petri.latvala@intel.com>
---
 drivers/gpu/drm/i915/intel_runtime_pm.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Jani Nikula Oct. 29, 2016, 12:14 p.m. UTC | #1
On Wed, 26 Oct 2016, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> On Wed, Oct 26, 2016 at 12:36:09PM -0400, Lyude wrote:
>> One of the CI machines began to run into issues with the hpd poller
>> suddenly waking up in the midst of the late suspend phase. It looks like
>> this is getting caused by the fact we now deinitialize power wells in
>> late suspend, which means that intel_hpd_poll_init() gets called in late
>> suspend causing polling to get re-enabled. So, when deinitializing power
>> wells on valleyview we now refrain from enabling polling in the midst of
>> suspend.
>> 
>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98040
>> Fixes: 19625e85c6ec ("drm/i915: Enable polling when we don't have hpd")
>> Signed-off-by: Lyude <lyude@redhat.com>
>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> Cc: Jani Saarinen <jani.saarinen@intel.com>
>> Cc: Petry Latvala <petri.latvala@intel.com>
>> ---
>>  drivers/gpu/drm/i915/intel_runtime_pm.c | 4 +++-
>>  1 file changed, 3 insertions(+), 1 deletion(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915/intel_runtime_pm.c
>> index 82edba2..ac85482 100644
>> --- a/drivers/gpu/drm/i915/intel_runtime_pm.c
>> +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c
>> @@ -1138,7 +1138,9 @@ static void vlv_display_power_well_deinit(struct drm_i915_private *dev_priv)
>>  
>>  	intel_power_sequencer_reset(dev_priv);
>>  
>> -	intel_hpd_poll_init(dev_priv);
>> +	/* Prevent us from re-enabling polling on accident in late suspend */
>> +	if (!dev_priv->drm.dev->power.is_suspended)
>> +		intel_hpd_poll_init(dev_priv);
>
> The flag would appear to get set between suspend and suspend_late, so
> looks like this should be sufficient for our purposes.
>
> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Pushed to drm-intel-next-queued, thanks for the patch and review.

BR,
Jani.

>
>>  }
>>  
>>  static void vlv_display_power_well_enable(struct drm_i915_private *dev_priv,
>> -- 
>> 2.7.4
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915/intel_runtime_pm.c
index 82edba2..ac85482 100644
--- a/drivers/gpu/drm/i915/intel_runtime_pm.c
+++ b/drivers/gpu/drm/i915/intel_runtime_pm.c
@@ -1138,7 +1138,9 @@  static void vlv_display_power_well_deinit(struct drm_i915_private *dev_priv)
 
 	intel_power_sequencer_reset(dev_priv);
 
-	intel_hpd_poll_init(dev_priv);
+	/* Prevent us from re-enabling polling on accident in late suspend */
+	if (!dev_priv->drm.dev->power.is_suspended)
+		intel_hpd_poll_init(dev_priv);
 }
 
 static void vlv_display_power_well_enable(struct drm_i915_private *dev_priv,