Re: [Intel-gfx] [PATCH] drm/i915: Don't lock panel registers when downclocking
On Mon, Feb 13, 2012 at 10:13:02AM -0500, Sean Paul wrote: On Mon, Feb 13, 2012 at 5:08 AM, Daniel Vetter dan...@ffwll.ch wrote: On Wed, Feb 01, 2012 at 05:31:30PM -0500, Sean Paul wrote: This patch removes the locking from the downclock routines since we are no longer locking the registers at all. See ed10fca9 for the original commit changing this philosophy. Signed-off-by: Sean Paul seanp...@chromium.org I've thought this was due to paranoia because we don't trust our own code and because we don't trust the bios to randomly lock this again. Without any reasons to the contrary, I'll prefer to keep this. Thanks for the explanation, Daniel, however I'd ask that you reconsider this patch. The state coming into the downclock functions is unlocked and without this patch, the state coming out is locked. This causes at least one warning in the code from assert_panel_unlocked. Ah, that's a pretty important thing missing from the commit message. I've checked the code and we have indeed an issue there. Can you please: - Extend your commit message to mention that you're actually hitting the assert_panel_unlocked assert (and how this happens). Maybe explain that you need lvds downclocking, which is disabled by default. - Add an assert_panel_unlocked call instead of unlocking the panel in your patch (we do need to be paranoid about these things). Then I think your patch is good to go into -next. Yours, Daniel -- Daniel Vetter Mail: dan...@ffwll.ch Mobile: +41 (0)79 365 57 48 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH] drm/i915: Don't lock panel registers when downclocking
This patch replaces the locking from the downclock routines with an assert to ensure the registers are indeed unlocked. Without this patch, pre-SNB devices would lock the registers when downclocking which would cause a WARNING on suspend/resume with downclocking enabled. Note: To hit this bug, you need to have lvds downclocking enabled. Signed-off-by: Sean Paul seanp...@chromium.org --- drivers/gpu/drm/i915/intel_display.c | 14 ++ 1 files changed, 2 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index ebe71ed..33ef4f3 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -6968,9 +6968,7 @@ static void intel_increase_pllclock(struct drm_crtc *crtc) if (!HAS_PIPE_CXSR(dev) (dpll DISPLAY_RATE_SELECT_FPA1)) { DRM_DEBUG_DRIVER(upclocking LVDS\n); - /* Unlock panel regs */ - I915_WRITE(PP_CONTROL, - I915_READ(PP_CONTROL) | PANEL_UNLOCK_REGS); + assert_panel_unlocked(dev_priv, pipe); dpll = ~DISPLAY_RATE_SELECT_FPA1; I915_WRITE(dpll_reg, dpll); @@ -6979,9 +6977,6 @@ static void intel_increase_pllclock(struct drm_crtc *crtc) dpll = I915_READ(dpll_reg); if (dpll DISPLAY_RATE_SELECT_FPA1) DRM_DEBUG_DRIVER(failed to upclock LVDS!\n); - - /* ...and lock them again */ - I915_WRITE(PP_CONTROL, I915_READ(PP_CONTROL) 0x3); } /* Schedule downclock */ @@ -7011,9 +7006,7 @@ static void intel_decrease_pllclock(struct drm_crtc *crtc) if (!HAS_PIPE_CXSR(dev) intel_crtc-lowfreq_avail) { DRM_DEBUG_DRIVER(downclocking LVDS\n); - /* Unlock panel regs */ - I915_WRITE(PP_CONTROL, I915_READ(PP_CONTROL) | - PANEL_UNLOCK_REGS); + assert_panel_unlocked(dev_priv, pipe); dpll |= DISPLAY_RATE_SELECT_FPA1; I915_WRITE(dpll_reg, dpll); @@ -7021,9 +7014,6 @@ static void intel_decrease_pllclock(struct drm_crtc *crtc) dpll = I915_READ(dpll_reg); if (!(dpll DISPLAY_RATE_SELECT_FPA1)) DRM_DEBUG_DRIVER(failed to downclock LVDS!\n); - - /* ...and lock them again */ - I915_WRITE(PP_CONTROL, I915_READ(PP_CONTROL) 0x3); } } -- 1.7.7.3 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] drm/i915: Don't lock panel registers when downclocking
On Mon, 13 Feb 2012 13:14:51 -0500 Sean Paul seanp...@chromium.org wrote: This patch replaces the locking from the downclock routines with an assert to ensure the registers are indeed unlocked. Without this patch, pre-SNB devices would lock the registers when downclocking which would cause a WARNING on suspend/resume with downclocking enabled. Note: To hit this bug, you need to have lvds downclocking enabled. Signed-off-by: Sean Paul seanp...@chromium.org --- drivers/gpu/drm/i915/intel_display.c | 14 ++ 1 files changed, 2 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index ebe71ed..33ef4f3 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -6968,9 +6968,7 @@ static void intel_increase_pllclock(struct drm_crtc *crtc) if (!HAS_PIPE_CXSR(dev) (dpll DISPLAY_RATE_SELECT_FPA1)) { DRM_DEBUG_DRIVER(upclocking LVDS\n); - /* Unlock panel regs */ - I915_WRITE(PP_CONTROL, -I915_READ(PP_CONTROL) | PANEL_UNLOCK_REGS); + assert_panel_unlocked(dev_priv, pipe); dpll = ~DISPLAY_RATE_SELECT_FPA1; I915_WRITE(dpll_reg, dpll); @@ -6979,9 +6977,6 @@ static void intel_increase_pllclock(struct drm_crtc *crtc) dpll = I915_READ(dpll_reg); if (dpll DISPLAY_RATE_SELECT_FPA1) DRM_DEBUG_DRIVER(failed to upclock LVDS!\n); - - /* ...and lock them again */ - I915_WRITE(PP_CONTROL, I915_READ(PP_CONTROL) 0x3); } /* Schedule downclock */ @@ -7011,9 +7006,7 @@ static void intel_decrease_pllclock(struct drm_crtc *crtc) if (!HAS_PIPE_CXSR(dev) intel_crtc-lowfreq_avail) { DRM_DEBUG_DRIVER(downclocking LVDS\n); - /* Unlock panel regs */ - I915_WRITE(PP_CONTROL, I915_READ(PP_CONTROL) | -PANEL_UNLOCK_REGS); + assert_panel_unlocked(dev_priv, pipe); dpll |= DISPLAY_RATE_SELECT_FPA1; I915_WRITE(dpll_reg, dpll); @@ -7021,9 +7014,6 @@ static void intel_decrease_pllclock(struct drm_crtc *crtc) dpll = I915_READ(dpll_reg); if (!(dpll DISPLAY_RATE_SELECT_FPA1)) DRM_DEBUG_DRIVER(failed to downclock LVDS!\n); - - /* ...and lock them again */ - I915_WRITE(PP_CONTROL, I915_READ(PP_CONTROL) 0x3); } } Yeah, looks good. Acked-by: Jesse Barnes jbar...@virtuousgeek.org -- Jesse Barnes, Intel Open Source Technology Center signature.asc Description: PGP signature ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx