From: Ben Widawsky <benjamin.widawsky@intel.com>
To: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH] drm/i915: Fix possible overflow when recording semaphore states.
Date: Thu, 17 Jul 2014 14:31:14 -0700 [thread overview]
Message-ID: <20140717213114.GA3488@intel.com> (raw)
In-Reply-To: <1405600520-31173-1-git-send-email-rodrigo.vivi@intel.com>
On Thu, Jul 17, 2014 at 05:35:20AM -0700, Rodrigo Vivi wrote:
> semaphore _sync_seqno, _seqno and _mbox are smaller than number of rings.
> This optimization is to remove the ring itself from the list and the logic to do that
> is at intel_ring_sync_index as below:
>
> /*
> * rcs -> 0 = vcs, 1 = bcs, 2 = vecs, 3 = vcs2;
> * vcs -> 0 = bcs, 1 = vecs, 2 = vcs2, 3 = rcs;
> * bcs -> 0 = vecs, 1 = vcs2. 2 = rcs, 3 = vcs;
> * vecs -> 0 = vcs2, 1 = rcs, 2 = vcs, 3 = bcs;
> * vcs2 -> 0 = rcs, 1 = vcs, 2 = bcs, 3 = vecs;
> */
>
> Cc: Ben Widawsky <benjamin.widawsky@intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/i915/i915_gpu_error.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
> index 9faebbc..36a7960 100644
> --- a/drivers/gpu/drm/i915/i915_gpu_error.c
> +++ b/drivers/gpu/drm/i915/i915_gpu_error.c
> @@ -764,7 +764,7 @@ static void gen8_record_semaphore_state(struct drm_i915_private *dev_priv,
> struct intel_engine_cs *ring,
> struct drm_i915_error_ring *ering)
> {
> - struct intel_engine_cs *useless;
> + struct intel_engine_cs *to;
> int i;
>
> if (!i915_semaphore_is_enabled(dev_priv->dev))
> @@ -776,13 +776,14 @@ static void gen8_record_semaphore_state(struct drm_i915_private *dev_priv,
> dev_priv->semaphore_obj,
> &dev_priv->gtt.base);
>
> - for_each_ring(useless, dev_priv, i) {
> + for_each_ring(to, dev_priv, i) {
> u16 signal_offset =
> (GEN8_SIGNAL_OFFSET(ring, i) & PAGE_MASK) / 4;
> u32 *tmp = error->semaphore_obj->pages[0];
> + int idx = intel_ring_sync_index(ring, to);
>
> - ering->semaphore_mboxes[i] = tmp[signal_offset];
> - ering->semaphore_seqno[i] = ring->semaphore.sync_seqno[i];
> + ering->semaphore_mboxes[idx] = tmp[signal_offset];
> + ering->semaphore_seqno[idx] = ring->semaphore.sync_seqno[idx];
> }
> }
>
Actually, this patch does the opposite of my original intent. Since the
semaphore object should have the proper spacing, my original intent was
what your first patch was: Fix semaphore_seqno and semaphore_mboxes
sizes (with probably a comment in the error state why we do this).
That patch is simpler and gives potentially more useful information
(like if we write to the wrong offset in the semaphore page, we won't
see it here). UNFORTUNATELY it does not seem to correspond with how we
actually print out the error state. So I think unless you want to fix up
the other spots, your other patch is incorrect.
This patch looks correct to me, and should fix the bug with the least
amount of churn. In addition, assuming we have no bugs, it shows things
more concisely in the error state. Perhaps just add my concern about
missing capture certain offsets within the semaphore object in the
commit message and call it good.
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
--
Ben Widawsky, Intel Open Source Technology Center
next prev parent reply other threads:[~2014-07-17 21:31 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-17 12:35 [PATCH] drm/i915: Fix possible overflow when recording semaphore states Rodrigo Vivi
2014-07-17 21:31 ` Ben Widawsky [this message]
2014-07-18 10:29 ` Damien Lespiau
2014-07-18 8:39 ` Rodrigo Vivi
2014-07-18 15:47 ` Damien Lespiau
2014-07-18 9:05 ` Rodrigo Vivi
2014-07-18 16:12 ` Damien Lespiau
2014-07-18 9:19 ` Rodrigo Vivi
2014-07-19 2:00 ` Ben Widawsky
2014-07-21 9:20 ` 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=20140717213114.GA3488@intel.com \
--to=benjamin.widawsky@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=rodrigo.vivi@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox