From: Daniel Vetter <daniel@ffwll.ch>
To: oscar.mateo@intel.com
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH] drm/i915: Gracefully handle obj not bound to GGTT in is_pin_display
Date: Thu, 3 Apr 2014 11:34:50 +0200 [thread overview]
Message-ID: <20140403093450.GC7225@phenom.ffwll.local> (raw)
In-Reply-To: <1396462861-16396-1-git-send-email-oscar.mateo@intel.com>
On Wed, Apr 02, 2014 at 07:21:01PM +0100, oscar.mateo@intel.com wrote:
> From: Oscar Mateo <oscar.mateo@intel.com>
>
> Otherwise, we do a NULL pointer dereference.
>
> I've seen this happen while handling an error in
> i915_gem_object_pin_to_display_plane():
>
> If i915_gem_object_set_cache_level() fails, we call is_pin_display() to
> handle the error. At this point, the object is still not pinned to GGTT
> and maybe not even bound, so we have to check before we dereference its
> GGTT vma.
>
> Issue: VIZ-3772
> Signed-off-by: Oscar Mateo <oscar.mateo@intel.com>
Have you looked into provoking this with an igt testcase? On a hunch a
busy load (to extend the race window) plus the usual interruptor trick to
jump out of wait_seqno calls should be able to make this go kaboom on
command. But I haven't analyzed the bug in detail.
Thanks, Daniel
> ---
> drivers/gpu/drm/i915/i915_gem.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index c70121d..1d161c7 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -3619,6 +3619,10 @@ unlock:
>
> static bool is_pin_display(struct drm_i915_gem_object *obj)
> {
> + struct i915_vma *vma = i915_gem_obj_to_ggtt(obj);
> + if (!vma)
> + return false;
> +
> /* There are 3 sources that pin objects:
> * 1. The display engine (scanouts, sprites, cursors);
> * 2. Reservations for execbuffer;
> @@ -3630,7 +3634,7 @@ static bool is_pin_display(struct drm_i915_gem_object *obj)
> * subtracting the potential reference by the user, any pin_count
> * remains, it must be due to another use by the display engine.
> */
> - return i915_gem_obj_to_ggtt(obj)->pin_count - !!obj->user_pin_count;
> + return vma->pin_count - !!obj->user_pin_count;
> }
>
> /*
> --
> 1.9.0
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
next prev parent reply other threads:[~2014-04-03 9:34 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-02 18:21 [PATCH] drm/i915: Gracefully handle obj not bound to GGTT in is_pin_display oscar.mateo
2014-04-02 17:59 ` Chris Wilson
2014-04-03 9:34 ` Daniel Vetter [this message]
2014-05-12 9:05 ` Mateo Lozano, Oscar
2014-05-12 10:09 ` Chris Wilson
2014-05-12 10:30 ` Mateo Lozano, Oscar
2014-05-12 10:37 ` Chris Wilson
2014-05-12 16:11 ` Daniel Vetter
2014-05-12 16:14 ` Daniel Vetter
2014-05-12 17:10 ` Mateo Lozano, Oscar
2014-05-15 13:14 ` Mateo Lozano, Oscar
2014-05-15 13:33 ` Ville Syrjälä
2014-05-16 10:43 ` Mateo Lozano, Oscar
2014-05-15 13:45 ` Daniel Vetter
2014-05-16 11:08 ` [PATCH v2] " oscar.mateo
2014-05-16 11:26 ` Chris Wilson
2014-05-16 13:20 ` [PATCH v3] " oscar.mateo
2014-05-16 14:25 ` Daniel Vetter
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=20140403093450.GC7225@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=intel-gfx@lists.freedesktop.org \
--cc=oscar.mateo@intel.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.