diff options
author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2014-08-06 07:49:46 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-08-06 16:39:23 -0400 |
commit | 844b03f27739135fe1fed2fef06da0ffc4c7a081 (patch) | |
tree | 96cbbf354213b0320a9c8731a9df0cd682d3ad16 /drivers/gpu/drm/drm_irq.c | |
parent | 08c71e5e817a956389af5da5e99ab3e26d5c673d (diff) |
drm: Don't clear vblank timestamps when vblank interrupt is disabled
Clearing the timestamps causes us to send zeroed timestamps to userspace
if they get sent out in response to the drm_vblank_off(). It's better
to send the very latest timestamp and count instead.
Testcase: igt/kms_flip/modeset-vs-vblank-race
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/drm_irq.c')
-rw-r--r-- | drivers/gpu/drm/drm_irq.c | 11 |
1 files changed, 0 insertions, 11 deletions
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c index b16a63622bad..65d2da9b604b 100644 --- a/drivers/gpu/drm/drm_irq.c +++ b/drivers/gpu/drm/drm_irq.c | |||
@@ -56,14 +56,6 @@ | |||
56 | #define DRM_REDUNDANT_VBLIRQ_THRESH_NS 1000000 | 56 | #define DRM_REDUNDANT_VBLIRQ_THRESH_NS 1000000 |
57 | 57 | ||
58 | /* | 58 | /* |
59 | * Clear vblank timestamp buffer for a crtc. | ||
60 | */ | ||
61 | static void clear_vblank_timestamps(struct drm_device *dev, int crtc) | ||
62 | { | ||
63 | memset(dev->vblank[crtc].time, 0, sizeof(dev->vblank[crtc].time)); | ||
64 | } | ||
65 | |||
66 | /* | ||
67 | * Disable vblank irq's on crtc, make sure that last vblank count | 59 | * Disable vblank irq's on crtc, make sure that last vblank count |
68 | * of hardware and corresponding consistent software vblank counter | 60 | * of hardware and corresponding consistent software vblank counter |
69 | * are preserved, even if there are any spurious vblank irq's after | 61 | * are preserved, even if there are any spurious vblank irq's after |
@@ -131,9 +123,6 @@ static void vblank_disable_and_save(struct drm_device *dev, int crtc) | |||
131 | smp_mb__after_atomic(); | 123 | smp_mb__after_atomic(); |
132 | } | 124 | } |
133 | 125 | ||
134 | /* Invalidate all timestamps while vblank irq's are off. */ | ||
135 | clear_vblank_timestamps(dev, crtc); | ||
136 | |||
137 | spin_unlock_irqrestore(&dev->vblank_time_lock, irqflags); | 126 | spin_unlock_irqrestore(&dev->vblank_time_lock, irqflags); |
138 | } | 127 | } |
139 | 128 | ||