diff mbox

drm/i915: use crtc_htotal when calculating ilk watermarks

Message ID 1387573680-2734-1-git-send-email-jbarnes@virtuousgeek.org (mailing list archive)
State New, archived
Headers show

Commit Message

Jesse Barnes Dec. 20, 2013, 9:08 p.m. UTC
This was introduced in:

commit 7c4a395ff8f441acb7876281c6777624e6410349
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Wed Oct 9 19:17:56 2013 +0300

    drm/i915: Don't re-compute pipe watermarks except for the affected pipe

and I missed fixing it in:

commit fec8cba306f974f3a4491176994de5d821273643
Author: Jesse Barnes <jbarnes@virtuousgeek.org>
Date:   Wed Nov 27 11:10:26 2013 -0800

    drm/i915: use crtc_htotal in watermark calculations to match fastboot v2

It's needed for ILK+ platforms to fastboot without crashing on a divide
by 0 after a DPMS on action.

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 drivers/gpu/drm/i915/intel_pm.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Daniel Vetter Jan. 8, 2014, 7:50 a.m. UTC | #1
On Fri, Dec 20, 2013 at 01:08:00PM -0800, Jesse Barnes wrote:
> This was introduced in:
> 
> commit 7c4a395ff8f441acb7876281c6777624e6410349
> Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Date:   Wed Oct 9 19:17:56 2013 +0300
> 
>     drm/i915: Don't re-compute pipe watermarks except for the affected pipe
> 
> and I missed fixing it in:
> 
> commit fec8cba306f974f3a4491176994de5d821273643
> Author: Jesse Barnes <jbarnes@virtuousgeek.org>
> Date:   Wed Nov 27 11:10:26 2013 -0800
> 
>     drm/i915: use crtc_htotal in watermark calculations to match fastboot v2
> 
> It's needed for ILK+ platforms to fastboot without crashing on a divide
> by 0 after a DPMS on action.
> 
> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>

Hm, ugly fallout. Double so since with 3d modes using htotal is already a
bug. I think long-term we need to clear out the crtc->config struct and
replace it with only the state we can actually read back from the hw to
catch such bugs reliably. But I think we're still missing a few pieces of
state readback to make this feasible currently :(
-Daniel

> ---
>  drivers/gpu/drm/i915/intel_pm.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 469170c..0f1efa4 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -2124,7 +2124,7 @@ static void ilk_compute_wm_parameters(struct drm_crtc *crtc,
>  
>  	p->active = intel_crtc_active(crtc);
>  	if (p->active) {
> -		p->pipe_htotal = intel_crtc->config.adjusted_mode.htotal;
> +		p->pipe_htotal = intel_crtc->config.adjusted_mode.crtc_htotal;
>  		p->pixel_rate = ilk_pipe_pixel_rate(dev, crtc);
>  		p->pri.bytes_per_pixel = crtc->fb->bits_per_pixel / 8;
>  		p->cur.bytes_per_pixel = 4;
> -- 
> 1.7.9.5
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Ville Syrjälä Jan. 8, 2014, 9:27 a.m. UTC | #2
On Fri, Dec 20, 2013 at 01:08:00PM -0800, Jesse Barnes wrote:
> This was introduced in:
> 
> commit 7c4a395ff8f441acb7876281c6777624e6410349
> Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Date:   Wed Oct 9 19:17:56 2013 +0300
> 
>     drm/i915: Don't re-compute pipe watermarks except for the affected pipe

git blame tells me the code has been like that since its introduction
in:

commit 801bcfffbb0721d7131e930f9a46103e539c43a4
Author: Paulo Zanoni <paulo.r.zanoni@intel.com>
Date:   Fri May 31 10:08:35 2013 -0300

    drm/i915: properly set HSW WM_PIPE registers

> 
> and I missed fixing it in:
> 
> commit fec8cba306f974f3a4491176994de5d821273643
> Author: Jesse Barnes <jbarnes@virtuousgeek.org>
> Date:   Wed Nov 27 11:10:26 2013 -0800
> 
>     drm/i915: use crtc_htotal in watermark calculations to match fastboot v2
> 
> It's needed for ILK+ platforms to fastboot without crashing on a divide
> by 0 after a DPMS on action.
> 
> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>

grep didn't find any more non-crtc_ values in intel_pm.c, so hopefully
we're now good.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> ---
>  drivers/gpu/drm/i915/intel_pm.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 469170c..0f1efa4 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -2124,7 +2124,7 @@ static void ilk_compute_wm_parameters(struct drm_crtc *crtc,
>  
>  	p->active = intel_crtc_active(crtc);
>  	if (p->active) {
> -		p->pipe_htotal = intel_crtc->config.adjusted_mode.htotal;
> +		p->pipe_htotal = intel_crtc->config.adjusted_mode.crtc_htotal;
>  		p->pixel_rate = ilk_pipe_pixel_rate(dev, crtc);
>  		p->pri.bytes_per_pixel = crtc->fb->bits_per_pixel / 8;
>  		p->cur.bytes_per_pixel = 4;
> -- 
> 1.7.9.5
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 469170c..0f1efa4 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -2124,7 +2124,7 @@  static void ilk_compute_wm_parameters(struct drm_crtc *crtc,
 
 	p->active = intel_crtc_active(crtc);
 	if (p->active) {
-		p->pipe_htotal = intel_crtc->config.adjusted_mode.htotal;
+		p->pipe_htotal = intel_crtc->config.adjusted_mode.crtc_htotal;
 		p->pixel_rate = ilk_pipe_pixel_rate(dev, crtc);
 		p->pri.bytes_per_pixel = crtc->fb->bits_per_pixel / 8;
 		p->cur.bytes_per_pixel = 4;