From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kenneth Graunke Subject: [PATCH 1/2] drm/i915: Remove BLT workaround for pre-production Sandybridge systems. Date: Sun, 6 Nov 2011 09:51:37 -0800 Message-ID: <1320601898-1376-1-git-send-email-kenneth@whitecape.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from homiemail-a1.g.dreamhost.com (caiajhbdcahe.dreamhost.com [208.97.132.74]) by gabe.freedesktop.org (Postfix) with ESMTP id 0934B9E73F for ; Sun, 6 Nov 2011 09:50:31 -0800 (PST) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org This code was effectively dead, as < rev08 never shipped. With the workaround gone, blt_ring_init became just another name for init_ring_common, so delete it and just call init_ring_common directly. This patch should not change behavior on Gen6 rev >= 8, nor Gen7. Signed-off-by: Kenneth Graunke --- drivers/gpu/drm/i915/intel_ringbuffer.c | 55 ++----------------------------- 1 files changed, 3 insertions(+), 52 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c index ca70e2f..8198ab3 100644 --- a/drivers/gpu/drm/i915/intel_ringbuffer.c +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c @@ -1345,66 +1345,17 @@ blt_ring_put_irq(struct intel_ring_buffer *ring) GEN6_BLITTER_USER_INTERRUPT); } - -/* Workaround for some stepping of SNB, - * each time when BLT engine ring tail moved, - * the first command in the ring to be parsed - * should be MI_BATCH_BUFFER_START - */ -#define NEED_BLT_WORKAROUND(dev) \ - (IS_GEN6(dev) && (dev->pdev->revision < 8)) - -static inline struct drm_i915_gem_object * -to_blt_workaround(struct intel_ring_buffer *ring) -{ - return ring->private; -} - -static int blt_ring_init(struct intel_ring_buffer *ring) -{ - if (NEED_BLT_WORKAROUND(ring->dev)) { - struct drm_i915_gem_object *obj; - u32 *ptr; - int ret; - - obj = i915_gem_alloc_object(ring->dev, 4096); - if (obj == NULL) - return -ENOMEM; - - ret = i915_gem_object_pin(obj, 4096, true); - if (ret) { - drm_gem_object_unreference(&obj->base); - return ret; - } - - ptr = kmap(obj->pages[0]); - *ptr++ = MI_BATCH_BUFFER_END; - *ptr++ = MI_NOOP; - kunmap(obj->pages[0]); - - ret = i915_gem_object_set_to_gtt_domain(obj, false); - if (ret) { - i915_gem_object_unpin(obj); - drm_gem_object_unreference(&obj->base); - return ret; - } - - ring->private = obj; - } - - return init_ring_common(ring); -} - static int blt_ring_begin(struct intel_ring_buffer *ring, int num_dwords) { if (ring->private) { + struct drm_i915_gem_object *obj = ring->private; int ret = intel_ring_begin(ring, num_dwords+2); if (ret) return ret; intel_ring_emit(ring, MI_BATCH_BUFFER_START); - intel_ring_emit(ring, to_blt_workaround(ring)->gtt_offset); + intel_ring_emit(ring, obj->gtt_offset); return 0; } else @@ -1447,7 +1398,7 @@ static const struct intel_ring_buffer gen6_blt_ring = { .id = RING_BLT, .mmio_base = BLT_RING_BASE, .size = 32 * PAGE_SIZE, - .init = blt_ring_init, + .init = init_ring_common, .write_tail = ring_write_tail, .flush = blt_ring_flush, .add_request = gen6_add_request, -- 1.7.7.1