mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-19 17:14:40 +08:00
drm/i915: kill intel_clear_scanline_wait
This is a pretty racy way to close these races, and we have much better means to cope with these races meanwhile: For non-broken userspace we correctly wait for any outstanding rendering, for broken userspace the hangcheck will save the day. Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
6d90c952cd
commit
d56b21361c
@ -2528,26 +2528,6 @@ static void ironlake_fdi_disable(struct drm_crtc *crtc)
|
||||
udelay(100);
|
||||
}
|
||||
|
||||
/*
|
||||
* When we disable a pipe, we need to clear any pending scanline wait events
|
||||
* to avoid hanging the ring, which we assume we are waiting on.
|
||||
*/
|
||||
static void intel_clear_scanline_wait(struct drm_device *dev)
|
||||
{
|
||||
struct drm_i915_private *dev_priv = dev->dev_private;
|
||||
struct intel_ring_buffer *ring;
|
||||
u32 tmp;
|
||||
|
||||
if (IS_GEN2(dev))
|
||||
/* Can't break the hang on i8xx */
|
||||
return;
|
||||
|
||||
ring = LP_RING(dev_priv);
|
||||
tmp = I915_READ_CTL(ring);
|
||||
if (tmp & RING_WAIT)
|
||||
I915_WRITE_CTL(ring, tmp);
|
||||
}
|
||||
|
||||
static void intel_crtc_wait_for_pending_flips(struct drm_crtc *crtc)
|
||||
{
|
||||
struct drm_device *dev = crtc->dev;
|
||||
@ -2931,7 +2911,6 @@ static void ironlake_crtc_disable(struct drm_crtc *crtc)
|
||||
|
||||
mutex_lock(&dev->struct_mutex);
|
||||
intel_update_fbc(dev);
|
||||
intel_clear_scanline_wait(dev);
|
||||
mutex_unlock(&dev->struct_mutex);
|
||||
}
|
||||
|
||||
@ -3036,7 +3015,6 @@ static void i9xx_crtc_disable(struct drm_crtc *crtc)
|
||||
intel_crtc->active = false;
|
||||
intel_update_fbc(dev);
|
||||
intel_update_watermarks(dev);
|
||||
intel_clear_scanline_wait(dev);
|
||||
}
|
||||
|
||||
static void i9xx_crtc_dpms(struct drm_crtc *crtc, int mode)
|
||||
|
Loading…
Reference in New Issue
Block a user