diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2010-05-15 04:57:03 -0400 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2010-05-26 17:11:45 -0400 |
commit | 9908ff736adf261e749b4887486a32ffa209304c (patch) | |
tree | ac2aceb5f2d598f5bbd112cbe0553edc51a9b124 | |
parent | f1befe71fa7a79ab733011b045639d8d809924ad (diff) |
drm/i915: Kill dangerous pending-flip debugging
We can, by virtue of a vblank interrupt firing in the middle of setting
up the unpin work (i.e. after we set the unpin_work field and before we
write to the ringbuffer) enter intel_finish_page_flip() prior to
receiving the pending flip notification. Therefore we can expect to hit
intel_finish_page_flip() under normal circumstances without a pending flip
and even without installing the pending_flip_obj. This is exacerbated by
aperture thrashing whilst binding the framebuffer
References:
Bug 28079 - "glresize" causes kernel panic in intel_finish_page_flip.
https://bugs.freedesktop.org/show_bug.cgi?id=28079
Reported-by: Nick Bowler <nbowler@draconx.ca>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
Cc: stable@kernel.org
Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Eric Anholt <eric@anholt.net>
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 6 |
1 files changed, 0 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index e94d1db35364..f946332612ec 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -4589,12 +4589,6 @@ void intel_finish_page_flip(struct drm_device *dev, int pipe) | |||
4589 | spin_lock_irqsave(&dev->event_lock, flags); | 4589 | spin_lock_irqsave(&dev->event_lock, flags); |
4590 | work = intel_crtc->unpin_work; | 4590 | work = intel_crtc->unpin_work; |
4591 | if (work == NULL || !work->pending) { | 4591 | if (work == NULL || !work->pending) { |
4592 | if (work && !work->pending) { | ||
4593 | obj_priv = to_intel_bo(work->pending_flip_obj); | ||
4594 | DRM_DEBUG_DRIVER("flip finish: %p (%d) not pending?\n", | ||
4595 | obj_priv, | ||
4596 | atomic_read(&obj_priv->pending_flip)); | ||
4597 | } | ||
4598 | spin_unlock_irqrestore(&dev->event_lock, flags); | 4592 | spin_unlock_irqrestore(&dev->event_lock, flags); |
4599 | return; | 4593 | return; |
4600 | } | 4594 | } |