From: Chris Wilson <chris@chris-wilson.co.uk>
To: intel-gfx@lists.freedesktop.org
Subject: [PATCH 1/3] drm/i915: Check that the plane points to the pipe's framebuffer before enabling
Date: Tue, 19 Apr 2011 21:32:01 +0100 [thread overview]
Message-ID: <1303245123-27172-2-git-send-email-chris@chris-wilson.co.uk> (raw)
In-Reply-To: <1303245123-27172-1-git-send-email-chris@chris-wilson.co.uk>
Knut Petersen reported a GPU hang when he left x11perf running
overnight. The error state quite clearly indicates that plane A was
enabled without being fully setup:
PGTBL_ER: 0x00000010
Display A: Invalid GTT PTE
Plane [0]:
CNTR: c1000000
STRIDE: 00000c80
SIZE: 03ff04ff
POS: 00000000
ADDR: 00000000
[That GTT offset on his system being pinned for the ringbuffer.]
This is a simple debugging patch to assert that this cannot be so!
References: https://bugs.freedesktop.org/show_bug.cgi?id=36246
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
---
drivers/gpu/drm/i915/intel_display.c | 29 +++++++++++++++++++++++++++++
1 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 73cec21..b7d63a5 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -1560,6 +1560,34 @@ static void intel_disable_pipe(struct drm_i915_private *dev_priv,
intel_wait_for_pipe_off(dev_priv->dev, pipe);
}
+/* Check that the display plane points to the pipe's framebuffer. */
+static void assert_fb_bound_to_plane(struct drm_i915_private *dev_priv,
+ enum pipe pipe, enum plane plane)
+{
+ struct drm_crtc *crtc;
+ struct intel_framebuffer *intel_fb;
+ u32 val, base, size;
+
+ crtc = intel_get_crtc_for_pipe(dev_priv->dev, pipe);
+ if (WARN(crtc->fb == NULL,
+ "no framebuffer attached to pipe %c\n",
+ pipe_name(pipe)))
+ return;
+
+ intel_fb = to_intel_framebuffer(crtc->fb);
+ base = intel_fb->obj->gtt_offset;
+ size = intel_fb->obj->base.size;
+
+ if (dev_priv->info->gen >= 4)
+ val = I915_READ(DSPSURF(plane));
+ else
+ val = I915_READ(DSPADDR(plane));
+ WARN(val < base || val >= base + size,
+ "mismatching framebuffer for plane %c attached to pipe %c, expected %x-%x found %x\n",
+ plane_name(plane), pipe_name(pipe),
+ base, base + size, val);
+}
+
/**
* intel_enable_plane - enable a display plane on a given pipe
* @dev_priv: i915 private structure
@@ -1576,6 +1604,7 @@ static void intel_enable_plane(struct drm_i915_private *dev_priv,
/* If the pipe isn't enabled, we can't pump pixels and may hang */
assert_pipe_enabled(dev_priv, pipe);
+ assert_fb_bound_to_plane(dev_priv, pipe, plane);
reg = DSPCNTR(plane);
val = I915_READ(reg);
--
1.7.4.1
next prev parent reply other threads:[~2011-04-19 20:32 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-19 20:32 Modesetting fixes for pre-ILK, 915GM especially Chris Wilson
2011-04-19 20:32 ` Chris Wilson [this message]
2011-04-19 20:40 ` [PATCH 1/3] drm/i915: Check that the plane points to the pipe's framebuffer before enabling Jesse Barnes
2011-04-19 20:32 ` [PATCH 2/3] drm/i915: Attach a fb to the load-detect pipe Chris Wilson
2011-04-19 21:26 ` Keith Packard
2011-04-20 9:25 ` Chris Wilson
2011-04-19 20:32 ` [PATCH 3/3] drm/i915: Only enable the plane after setting the fb base (pre-ILK) Chris Wilson
2011-04-19 20:39 ` Jesse Barnes
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1303245123-27172-2-git-send-email-chris@chris-wilson.co.uk \
--to=chris@chris-wilson.co.uk \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).