Re: [PATCH 3/5] drm/i915: Fix gen3/4 vblank counter wraparound

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2013-11-06 at 13:56 -0200, Rodrigo Vivi wrote:
> From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
> 
> When the hardware frame counter reads 0xffffff and we're already past
> vblank start, we'd return 0x1000000 as the vblank counter value. Once
> we'd cross into the next frame's active portion, the vblank counter
> would wrap to 0. So we're reporting two different vblank counter values
> for the same frame.
> 
> Fix the problem by masking the cooked value by 0xffffff to make sure
> the counter wraps already after vblank start.
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx>

Reviewed-by: Imre Deak <imre.deak@xxxxxxxxx>

> ---
>  drivers/gpu/drm/i915/i915_irq.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index 2a44816..c474dac 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -583,7 +583,7 @@ static u32 i915_get_vblank_counter(struct drm_device *dev, int pipe)
>  	 * Cook up a vblank counter by also checking the pixel
>  	 * counter against vblank start.
>  	 */
> -	return ((high1 << 8) | low) + (pixel >= vbl_start);
> +	return (((high1 << 8) | low) + (pixel >= vbl_start)) & 0xffffff;
>  }
>  
>  static u32 gm45_get_vblank_counter(struct drm_device *dev, int pipe)


_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/intel-gfx





[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux