diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2014-09-07 11:51:12 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-09-19 08:41:15 -0400 |
commit | f0d3dad3ad618dbe4f65453c456c781c4568de29 (patch) | |
tree | 395bf8ccb24724f2b9d4422ac4526ed6681aa7c5 /drivers/gpu | |
parent | 1d1ef21dafd13ff5cedbde840544d6e86669fe1d (diff) |
drm/i915: Wrap -EIO send-vblank event for failed pageflip in spinlock
drm_send_vblank_event() demands that we hold the event spinlock whilst
calling it, so do so.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
[danvet: Fix the double lock as requested by Chris.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index f4b8cb388dd6..c5079f2c49f3 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -10084,8 +10084,11 @@ free_work: | |||
10084 | out_hang: | 10084 | out_hang: |
10085 | intel_crtc_wait_for_pending_flips(crtc); | 10085 | intel_crtc_wait_for_pending_flips(crtc); |
10086 | ret = intel_pipe_set_base(crtc, crtc->x, crtc->y, fb); | 10086 | ret = intel_pipe_set_base(crtc, crtc->x, crtc->y, fb); |
10087 | if (ret == 0 && event) | 10087 | if (ret == 0 && event) { |
10088 | spin_lock_irqsave(&dev->event_lock, flags); | ||
10088 | drm_send_vblank_event(dev, pipe, event); | 10089 | drm_send_vblank_event(dev, pipe, event); |
10090 | spin_unlock_irqrestore(&dev->event_lock, flags); | ||
10091 | } | ||
10089 | } | 10092 | } |
10090 | return ret; | 10093 | return ret; |
10091 | } | 10094 | } |