Message ID | 1341518509-30562-1-git-send-email-chris@chris-wilson.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Chris Wilson <chris@chris-wilson.co.uk> writes: > It never quite worked despite the numerous workarounds, yet I still see > people trying to use this hardware and filing bug reports. As we no > longer even try to implement the workarounds, since 6a233c78878 > (drm/i915/ringbuffer: kill snb blt workaround), simply disable the ring. Do we have something elsewhere that's very verbose telling them to get real hardware? Userland isn't going to do very well when the ring doesn't work.
On Thu, 05 Jul 2012 14:57:41 -0700, Eric Anholt <eric@anholt.net> wrote: > Chris Wilson <chris@chris-wilson.co.uk> writes: > > > It never quite worked despite the numerous workarounds, yet I still see > > people trying to use this hardware and filing bug reports. As we no > > longer even try to implement the workarounds, since 6a233c78878 > > (drm/i915/ringbuffer: kill snb blt workaround), simply disable the ring. > > Do we have something elsewhere that's very verbose telling them to get > real hardware? Userland isn't going to do very well when the ring > doesn't work. The DDX already checks for the pre-production hardware and forces the shadow buffer if it detects the broken blitter. We can easily add a message there to remind them to return their SDV and get themselves a real computer. So I had actually forgotten about that check. The only question is then whether that is better in the kernel so that all clients are protected from pathological users, or left in the DDX? -Chris
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 3afba9d..bcd312f 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -3739,6 +3739,19 @@ void i915_gem_init_ppgtt(struct drm_device *dev) } } +static bool +intel_enable_blt(struct drm_device *dev) +{ + if (!HAS_BLT(dev)) + return false; + + /* The blitter was dysfunctional on early prototypes */ + if (IS_GEN6(dev) && dev->pdev->revision < 8) + return false; + + return true; +} + int i915_gem_init_hw(struct drm_device *dev) { @@ -3762,7 +3775,7 @@ i915_gem_init_hw(struct drm_device *dev) goto cleanup_render_ring; } - if (HAS_BLT(dev)) { + if (intel_enable_blt(dev)) { ret = intel_init_blt_ring_buffer(dev); if (ret) goto cleanup_bsd_ring;
It never quite worked despite the numerous workarounds, yet I still see people trying to use this hardware and filing bug reports. As we no longer even try to implement the workarounds, since 6a233c78878 (drm/i915/ringbuffer: kill snb blt workaround), simply disable the ring. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> --- drivers/gpu/drm/i915/i915_gem.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-)