Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Ben Widawsky <ben@bwidawsk.net>
To: Chris Wilson <chris@chris-wilson.co.uk>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH] drm/i915: specify the address of the semaphore register for comparison
Date: Wed, 21 Sep 2011 07:25:03 -0700	[thread overview]
Message-ID: <20110921072503.53550c40@bwidawsk.net> (raw)
In-Reply-To: <1316605343-611-1-git-send-email-chris@chris-wilson.co.uk>

On Wed, 21 Sep 2011 12:42:22 +0100
Chris Wilson <chris@chris-wilson.co.uk> wrote:

> In addition to telling the GPU that we are comparing with a named MMIO
> register, we also apparently have to tell the GPU the address of that
> register.
> 
> The lack of giving the GPU the duplicate information it seems to
> desire leads to such fun confusion as:
> 
> Blitter command stream:
>   seqno: 0x00001c6c
> Render command stream:
>   seqno: 0x00001c7a
> 
> Active batch on BLT (seqno 1c6e):
>   0x03b55000:      0x30222221: UNKNOWN
>   0x03b55004:      0xffb7b4b1:    UNKNOWN
>   0x03b55008:      0xffb7b4b1:    UNKNOWN
>   0x03b5500c:      0xffb7b4b1:    UNKNOWN
>   0x03b55010:      0xffb7b4b1:    UNKNOWN
>   0x03b55014:      0xffb7b4b1:    UNKNOWN
>   0x03b55018:      0xffb7b4b1:    UNKNOWN
>   0x03b5501c:      0xffb7b4b1:    UNKNOWN
>   0x03b55020:      0xffb7b4b1:    UNKNOWN
>   0x03b55024:      0xffb7b4b1:    UNKNOWN
>   0x03b55028:      0xffb7b4b1:    UNKNOWN
>   0x03b5502c:      0xffb7b4b1:    UNKNOWN
>   ... [an antialiased rgba box]
> 
> Render ringbuffer:
>   ...
>   0x00007e70:      0x0b160001: MI_SEMAPHORE_MBOX
>   0x00007e74:      0x00001c6e:    dword 1
>   0x00007e78:      0x00000000:    dword 2
>   0x00007e7c:      0x00000000: MI_NOOP
>   0x00007e80:      0x18800180: MI_BATCH_BUFFER_START
>   0x00007e84:      0x03b5b000:    dword 1
>   0x00007e88:      0x02000004: MI_FLUSH
>   0x00007e8c:      0x00000000: MI_NOOP
>   0x00007e90:      0x0b240001: MI_SEMAPHORE_MBOX
>   0x00007e94:      0x00001c70:    dword 1
>   0x00007e98:      0x00022040:    dword 2
>   0x00007e9c:      0x0b240001: MI_SEMAPHORE_MBOX
>   0x00007ea0:      0x00001c70:    dword 1
>   0x00007ea4:      0x00012044:    dword 2
>   0x00007ea8:      0x10800001: MI_STORE_DATA_INDEX
>   0x00007eac:      0x00000080:    dword 1
>   0x00007eb0:      0x00001c70:    dword 2
>   0x00007eb4:      0x01000000: MI_USER_INTERRUPT
>   0x00007eb8:      0x02000000: MI_FLUSH
>   ... [wait on results of batch 1cde from BLT, then execute 1c70 on
> RENDER]
> 
> As the RENDER ring has already completed batch 1c7a before the BLT
> began processing 1c6e, it is obvious then that the GPU did not heed
> the semaphore wait instruction. Adding the symmetric register address
> from the signal instruction to the compare instruction prevents the
> hang and also prevents visual corruption whilst running KDE.
> 
> Reported-by: Andrew Lutomirski <luto@mit.edu>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Andrew Lutomirski <luto@mit.edu>
> ---
>  drivers/gpu/drm/i915/intel_ringbuffer.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c
> b/drivers/gpu/drm/i915/intel_ringbuffer.c index 5fa3d99..6b9790e
> 100644 --- a/drivers/gpu/drm/i915/intel_ringbuffer.c
> +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
> @@ -359,7 +359,8 @@ intel_ring_sync(struct intel_ring_buffer *ring,
>  			intel_ring_sync_index(ring, to) << 17 |
>  			MI_SEMAPHORE_COMPARE);
>  	intel_ring_emit(ring, seqno);
> -	intel_ring_emit(ring, 0);
> +	intel_ring_emit(ring,
> +			RING_SYNC_0(to->mmio_base) +
> 4*intel_ring_sync_index(ring,to)); intel_ring_emit(ring, MI_NOOP);
>  	intel_ring_advance(ring);
>  

I'm sort of afraid this is just papering over the issue, ie. the mmio
access is just adding delay that happens to make it work. I think we
should follow up with devs on this one.

Ben

  parent reply	other threads:[~2011-09-21 14:24 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-21 11:42 [PATCH] drm/i915: specify the address of the semaphore register for comparison Chris Wilson
2011-09-21 12:46 ` Daniel Vetter
2011-09-21 13:16   ` Chris Wilson
2011-09-21 14:25 ` Ben Widawsky [this message]
2011-09-21 14:49   ` Chris Wilson
2011-09-21 16:07     ` Ben Widawsky

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=20110921072503.53550c40@bwidawsk.net \
    --to=ben@bwidawsk.net \
    --cc=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