drm: Mark up accesses of vblank->enabled outside of its spinlock
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 17 Mar 2017 20:20:27 +0000 (20:20 +0000)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 29 Mar 2017 10:51:49 +0000 (13:51 +0300)
commit43dc7fe2b2118c76fbc2808dec0c57b3158e6dc0
tree7259066e9a9a9a7ea41c81f5b637484459ab0c51
parent75cff0837c14eaf632efabb8d7ab9eec6394d20d
drm: Mark up accesses of vblank->enabled outside of its spinlock

Order the update to vblank->enabled after the timestamp is primed so
that a concurrent unlocked reader will only see the vblank->enabled with
the current timestamp.

v2: vblank->enable is guarded by dev->vbl_lock not
dev->vblank_time_lock, update the READ_ONCE accordingly.

Do not add a READ_ONCE(vblank->enabled) inside the interrupt handler to
avoid missing an interrupt whilst racing with enable_vblank()

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/20170317202030.24410-1-chris@chris-wilson.co.uk
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
drivers/gpu/drm/drm_irq.c