Hi

2012/12/4 Chris Wilson <[email protected]>:
> In a couple of places we attempt to adjust the existing watermark
> registers to update them for the new cursor watermarks. This goes
> horribly wrong as instead of clearing the cursor bits prior to or'ing in
> the new values, we clear the rest of the register with the result that
> the watermark registers contain bogus values.
>
> References: https://bugs.freedesktop.org/show_bug.cgi?id=47034
> Signed-off-by: Chris Wilson <[email protected]>

Reviewed-by: Paulo Zanoni <[email protected]>

Nice catch...

> ---
>  drivers/gpu/drm/i915/intel_pm.c |    9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 20daf58..f6b4697 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -1334,10 +1334,11 @@ static void valleyview_update_wm(struct drm_device 
> *dev)
>                    (planeb_wm << DSPFW_PLANEB_SHIFT) |
>                    planea_wm);
>         I915_WRITE(DSPFW2,
> -                  (I915_READ(DSPFW2) & DSPFW_CURSORA_MASK) |
> +                  (I915_READ(DSPFW2) & ~DSPFW_CURSORA_MASK) |
>                    (cursora_wm << DSPFW_CURSORA_SHIFT));
>         I915_WRITE(DSPFW3,
> -                  (I915_READ(DSPFW3) | (cursor_sr << 
> DSPFW_CURSOR_SR_SHIFT)));
> +                  (I915_READ(DSPFW3) & ~DSPFW_CURSOR_SR_MASK) |
> +                  (cursor_sr << DSPFW_CURSOR_SR_SHIFT));
>  }
>
>  static void g4x_update_wm(struct drm_device *dev)
> @@ -1383,11 +1384,11 @@ static void g4x_update_wm(struct drm_device *dev)
>                    (planeb_wm << DSPFW_PLANEB_SHIFT) |
>                    planea_wm);
>         I915_WRITE(DSPFW2,
> -                  (I915_READ(DSPFW2) & DSPFW_CURSORA_MASK) |
> +                  (I915_READ(DSPFW2) & ~DSPFW_CURSORA_MASK) |
>                    (cursora_wm << DSPFW_CURSORA_SHIFT));
>         /* HPLL off in SR has some issues on G4x... disable it */
>         I915_WRITE(DSPFW3,
> -                  (I915_READ(DSPFW3) & ~DSPFW_HPLL_SR_EN) |
> +                  (I915_READ(DSPFW3) & ~(DSPFW_HPLL_SR_EN | 
> DSPFW_CURSOR_SR_MASK)) |
>                    (cursor_sr << DSPFW_CURSOR_SR_SHIFT));
>  }
>
> --
> 1.7.10.4
>
> _______________________________________________
> Intel-gfx mailing list
> [email protected]
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx



-- 
Paulo Zanoni
_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to