* [PATCH] drm/i915: Cancel vdd off work before suspend
@ 2014-11-25 13:43 ville.syrjala
2014-11-25 14:38 ` Imre Deak
2014-11-26 11:29 ` shuang.he
0 siblings, 2 replies; 4+ messages in thread
From: ville.syrjala @ 2014-11-25 13:43 UTC (permalink / raw)
To: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Currently we just make sure vdd is off before suspending, but we don't
cancel the vdd off work. The work wil not touch vdd if
want_panel_vdd==false so in theory this is fine.
In the past that was perfectly fine since the vdd off work didn't do
anything when want_panel_vdd==false, so even if the work would have been
run during system resume before i915 has resumed, nothing would happen.
However since pps_lock() will now grab the power domain references before
it can check want_panel_vdd, we may end up toggling the power wells on/off
already before the driver has resumed. That is not really acceptable, so
cancel the vdd off work when suspending the encoder.
The problem appeared when pps_lock() was introduced in:
commit 773538e86081d146e0020435d614f4b96996c1f9
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date: Thu Sep 4 14:54:56 2014 +0300
drm/i915: Reset power sequencer pipe tracking when disp2d is off
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/intel_dp.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 46731da..d2529ec 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4335,6 +4335,7 @@ static void intel_dp_encoder_suspend(struct intel_encoder *intel_encoder)
* vdd might still be enabled do to the delayed vdd off.
* Make sure vdd is actually turned off here.
*/
+ cancel_delayed_work_sync(&intel_dp->panel_vdd_work);
pps_lock(intel_dp);
edp_panel_vdd_off_sync(intel_dp);
pps_unlock(intel_dp);
--
2.0.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH] drm/i915: Cancel vdd off work before suspend 2014-11-25 13:43 [PATCH] drm/i915: Cancel vdd off work before suspend ville.syrjala @ 2014-11-25 14:38 ` Imre Deak 2014-11-26 15:01 ` Jani Nikula 2014-11-26 11:29 ` shuang.he 1 sibling, 1 reply; 4+ messages in thread From: Imre Deak @ 2014-11-25 14:38 UTC (permalink / raw) To: ville.syrjala; +Cc: intel-gfx On Tue, 2014-11-25 at 15:43 +0200, ville.syrjala@linux.intel.com wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Currently we just make sure vdd is off before suspending, but we don't > cancel the vdd off work. The work wil not touch vdd if > want_panel_vdd==false so in theory this is fine. > > In the past that was perfectly fine since the vdd off work didn't do > anything when want_panel_vdd==false, so even if the work would have been > run during system resume before i915 has resumed, nothing would happen. > > However since pps_lock() will now grab the power domain references before > it can check want_panel_vdd, we may end up toggling the power wells on/off > already before the driver has resumed. That is not really acceptable, so > cancel the vdd off work when suspending the encoder. > > The problem appeared when pps_lock() was introduced in: > commit 773538e86081d146e0020435d614f4b96996c1f9 > Author: Ville Syrjälä <ville.syrjala@linux.intel.com> > Date: Thu Sep 4 14:54:56 2014 +0300 > > drm/i915: Reset power sequencer pipe tracking when disp2d is off > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Imre Deak <imre.deak@intel.com> > --- > drivers/gpu/drm/i915/intel_dp.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > index 46731da..d2529ec 100644 > --- a/drivers/gpu/drm/i915/intel_dp.c > +++ b/drivers/gpu/drm/i915/intel_dp.c > @@ -4335,6 +4335,7 @@ static void intel_dp_encoder_suspend(struct intel_encoder *intel_encoder) > * vdd might still be enabled do to the delayed vdd off. > * Make sure vdd is actually turned off here. > */ > + cancel_delayed_work_sync(&intel_dp->panel_vdd_work); > pps_lock(intel_dp); > edp_panel_vdd_off_sync(intel_dp); > pps_unlock(intel_dp); _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] drm/i915: Cancel vdd off work before suspend 2014-11-25 14:38 ` Imre Deak @ 2014-11-26 15:01 ` Jani Nikula 0 siblings, 0 replies; 4+ messages in thread From: Jani Nikula @ 2014-11-26 15:01 UTC (permalink / raw) To: imre.deak, ville.syrjala; +Cc: intel-gfx On Tue, 25 Nov 2014, Imre Deak <imre.deak@intel.com> wrote: > On Tue, 2014-11-25 at 15:43 +0200, ville.syrjala@linux.intel.com wrote: >> From: Ville Syrjälä <ville.syrjala@linux.intel.com> >> >> Currently we just make sure vdd is off before suspending, but we don't >> cancel the vdd off work. The work wil not touch vdd if >> want_panel_vdd==false so in theory this is fine. >> >> In the past that was perfectly fine since the vdd off work didn't do >> anything when want_panel_vdd==false, so even if the work would have been >> run during system resume before i915 has resumed, nothing would happen. >> >> However since pps_lock() will now grab the power domain references before >> it can check want_panel_vdd, we may end up toggling the power wells on/off >> already before the driver has resumed. That is not really acceptable, so >> cancel the vdd off work when suspending the encoder. >> >> The problem appeared when pps_lock() was introduced in: >> commit 773538e86081d146e0020435d614f4b96996c1f9 >> Author: Ville Syrjälä <ville.syrjala@linux.intel.com> >> Date: Thu Sep 4 14:54:56 2014 +0300 >> >> drm/i915: Reset power sequencer pipe tracking when disp2d is off >> >> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Reviewed-by: Imre Deak <imre.deak@intel.com> Pushed to drm-intel-fixes, thanks for the patch and review. BR, Jani. > >> --- >> drivers/gpu/drm/i915/intel_dp.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c >> index 46731da..d2529ec 100644 >> --- a/drivers/gpu/drm/i915/intel_dp.c >> +++ b/drivers/gpu/drm/i915/intel_dp.c >> @@ -4335,6 +4335,7 @@ static void intel_dp_encoder_suspend(struct intel_encoder *intel_encoder) >> * vdd might still be enabled do to the delayed vdd off. >> * Make sure vdd is actually turned off here. >> */ >> + cancel_delayed_work_sync(&intel_dp->panel_vdd_work); >> pps_lock(intel_dp); >> edp_panel_vdd_off_sync(intel_dp); >> pps_unlock(intel_dp); > > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] drm/i915: Cancel vdd off work before suspend 2014-11-25 13:43 [PATCH] drm/i915: Cancel vdd off work before suspend ville.syrjala 2014-11-25 14:38 ` Imre Deak @ 2014-11-26 11:29 ` shuang.he 1 sibling, 0 replies; 4+ messages in thread From: shuang.he @ 2014-11-26 11:29 UTC (permalink / raw) To: shuang.he, intel-gfx, ville.syrjala Tested-By: PRC QA PRTS (Patch Regression Test System Contact: shuang.he@intel.com) -------------------------------------Summary------------------------------------- Platform Delta drm-intel-nightly Series Applied PNV 366/366 366/366 ILK -8 371/371 363/371 SNB 450/450 450/450 IVB -4 498/498 494/498 BYT 289/289 289/289 HSW -1 564/564 563/564 BDW 417/417 417/417 -------------------------------------Detailed------------------------------------- Platform Test drm-intel-nightly Series Applied ILK igt_gem_reset_stats_close-pending-fork-render TIMEOUT(20, M37M26)PASS(1, M26) TIMEOUT(1, M26) ILK igt_kms_3d DMESG_WARN(2, M26)PASS(5, M37M26) DMESG_WARN(1, M26) ILK igt_kms_flip_flip-vs-dpms-off-vs-modeset DMESG_WARN(1, M26)PASS(3, M37M26) DMESG_WARN(1, M26) ILK igt_kms_flip_rcs-flip-vs-panning-interruptible DMESG_WARN(1, M26)PASS(3, M37M26) DMESG_WARN(1, M26) ILK igt_kms_flip_rcs-wf_vblank-vs-modeset DMESG_WARN(1, M26)PASS(4, M37M26) DMESG_WARN(1, M26) *ILK igt_kms_flip_flip-vs-dpms-interruptible PASS(4, M37M26) DMESG_WARN(1, M26) ILK igt_kms_flip_plain-flip DMESG_WARN(2, M26)PASS(4, M37M26) DMESG_WARN(1, M26) ILK igt_kms_flip_vblank-vs-hang TIMEOUT(19, M37M26)PASS(1, M26) TIMEOUT(1, M26) *IVB igt_kms_plane_plane-panning-bottom-right-pipe-C-plane-2 PASS(4, M21M34) DMESG_WARN(1, M34) *IVB igt_kms_plane_plane-panning-top-left-pipe-C-plane-2 PASS(2, M21M34) DMESG_WARN(1, M34) *IVB igt_kms_plane_plane-position-covered-pipe-C-plane-2 PASS(2, M21M34) DMESG_WARN(1, M34) *IVB igt_kms_plane_plane-position-hole-pipe-C-plane-1 PASS(5, M21M34) DMESG_WARN(1, M34) *HSW igt_kms_fence_pin_leak PASS(6, M20M19) DMESG_WARN(1, M19) Note: You need to pay more attention to line start with '*' _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-11-26 15:01 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-11-25 13:43 [PATCH] drm/i915: Cancel vdd off work before suspend ville.syrjala 2014-11-25 14:38 ` Imre Deak 2014-11-26 15:01 ` Jani Nikula 2014-11-26 11:29 ` shuang.he
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox