diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2010-09-23 06:00:38 -0400 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2010-09-23 06:02:55 -0400 |
commit | 20f0cd55f68e0678909214c60b3595a22124bdb0 (patch) | |
tree | c64fb737f3047896c387b7eb0de4936d0d500ebe /drivers/gpu/drm/i915/intel_display.c | |
parent | 6ec3d0c0e9c0c605696e91048eebaca7b0c36695 (diff) |
drm/i915: Remove the broken flush_ring from page-flip
This is already performed with the pipelined flush, so by the time we
schedule the flush in the page-flip, the ring is NULL and we OOPs
instead.
Reported-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index b92385498d2c..16541ee9e1e0 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -5028,7 +5028,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc, | |||
5028 | struct intel_unpin_work *work; | 5028 | struct intel_unpin_work *work; |
5029 | unsigned long flags, offset; | 5029 | unsigned long flags, offset; |
5030 | int pipe = intel_crtc->pipe; | 5030 | int pipe = intel_crtc->pipe; |
5031 | u32 was_dirty, pf, pipesrc; | 5031 | u32 pf, pipesrc; |
5032 | int ret; | 5032 | int ret; |
5033 | 5033 | ||
5034 | work = kzalloc(sizeof *work, GFP_KERNEL); | 5034 | work = kzalloc(sizeof *work, GFP_KERNEL); |
@@ -5057,7 +5057,6 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc, | |||
5057 | obj = intel_fb->obj; | 5057 | obj = intel_fb->obj; |
5058 | 5058 | ||
5059 | mutex_lock(&dev->struct_mutex); | 5059 | mutex_lock(&dev->struct_mutex); |
5060 | was_dirty = obj->write_domain & I915_GEM_GPU_DOMAINS; | ||
5061 | ret = intel_pin_and_fence_fb_obj(dev, obj, true); | 5060 | ret = intel_pin_and_fence_fb_obj(dev, obj, true); |
5062 | if (ret) | 5061 | if (ret) |
5063 | goto cleanup_work; | 5062 | goto cleanup_work; |
@@ -5076,10 +5075,6 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc, | |||
5076 | atomic_inc(&obj_priv->pending_flip); | 5075 | atomic_inc(&obj_priv->pending_flip); |
5077 | work->pending_flip_obj = obj; | 5076 | work->pending_flip_obj = obj; |
5078 | 5077 | ||
5079 | /* Schedule the pipelined flush */ | ||
5080 | if (was_dirty) | ||
5081 | i915_gem_flush_ring(dev, NULL, obj_priv->ring, 0, was_dirty); | ||
5082 | |||
5083 | if (IS_GEN3(dev) || IS_GEN2(dev)) { | 5078 | if (IS_GEN3(dev) || IS_GEN2(dev)) { |
5084 | u32 flip_mask; | 5079 | u32 flip_mask; |
5085 | 5080 | ||