diff mbox

drm/i915: Disable the BLT on pre-production SNB hardware

Message ID 1341518509-30562-1-git-send-email-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show

Commit Message

Chris Wilson July 5, 2012, 8:01 p.m. UTC
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(-)

Comments

Eric Anholt July 5, 2012, 9:57 p.m. UTC | #1
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.
Chris Wilson July 5, 2012, 10:27 p.m. UTC | #2
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 mbox

Patch

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;