From patchwork Thu Jun 2 00:41:23 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Anholt X-Patchwork-Id: 842452 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p520iCCp001785 for ; Thu, 2 Jun 2011 00:44:32 GMT Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9FB619EF0D for ; Wed, 1 Jun 2011 17:44:12 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from annarchy.freedesktop.org (annarchy.freedesktop.org [131.252.210.176]) by gabe.freedesktop.org (Postfix) with ESMTP id 43FE59E7CB; Wed, 1 Jun 2011 17:43:27 -0700 (PDT) Received: from pollan.anholt.net (annarchy.freedesktop.org [127.0.0.1]) by annarchy.freedesktop.org (Postfix) with ESMTP id DEC2A13004F; Wed, 1 Jun 2011 17:43:26 -0700 (PDT) Received: by pollan.anholt.net (Postfix, from userid 1000) id 703C54016DA; Wed, 1 Jun 2011 17:41:24 -0700 (PDT) From: Eric Anholt To: intel-gfx@lists.freedesktop.org Date: Wed, 1 Jun 2011 17:41:23 -0700 Message-Id: <1306975283-14238-2-git-send-email-eric@anholt.net> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1306975283-14238-1-git-send-email-eric@anholt.net> References: <1306975283-14238-1-git-send-email-eric@anholt.net> Subject: [Intel-gfx] [PATCH 2/2] drm/i915: Fix missed interrupts on gen6 blit ring by holding FORCEWAKE up. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: intel-gfx-bounces+patchwork-intel-gfx=patchwork.kernel.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+patchwork-intel-gfx=patchwork.kernel.org@lists.freedesktop.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Thu, 02 Jun 2011 00:44:32 +0000 (UTC) Before this patch, I was experiencing missed IRQs (hang, then dmesg saying IRQ missed, then continuing) when running piglit copypixels-sync about 0.5% of the time (no single run series I've done so far got beyond 400 consecutive successes). With this patch, I'm over 3200 consecutive successes with no missed IRQs. --- This patch seems like a pretty clear indication that our understanding of what requires FORCEWAKE is incorrect. The only other patch I got to succeed like this one was when I just left BLT IRQs on forever. Can anyone cite where 0x40000 came from? drivers/gpu/drm/i915/intel_ringbuffer.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c index c6c4d23..ef22e9b 100644 --- a/drivers/gpu/drm/i915/intel_ringbuffer.c +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c @@ -631,9 +631,11 @@ gen6_ring_get_irq(struct intel_ring_buffer *ring, u32 rflag) spin_lock(&ring->irq_lock); if (ring->irq_refcount++ == 0) { + gen6_gt_force_wake_get(dev_priv); ring->irq_mask &= ~rflag; I915_WRITE_IMR(ring, ring->irq_mask); POSTING_READ(RING_IMR(ring->mmio_base)); + gen6_gt_force_wake_put(dev_priv); } spin_unlock(&ring->irq_lock); @@ -648,9 +650,11 @@ gen6_ring_put_irq(struct intel_ring_buffer *ring, u32 rflag) spin_lock(&ring->irq_lock); if (--ring->irq_refcount == 0) { + gen6_gt_force_wake_get(dev_priv); ring->irq_mask |= rflag; I915_WRITE_IMR(ring, ring->irq_mask); POSTING_READ(RING_IMR(ring->mmio_base)); + gen6_gt_force_wake_put(dev_priv); } spin_unlock(&ring->irq_lock); }