[Intel-gfx] [PATCH] drm/i915: specify the address of the semaphore register for comparison
Ben Widawsky
ben at bwidawsk.net
Wed Sep 21 18:07:01 CEST 2011
On Wed, 21 Sep 2011 15:49:07 +0100
Chris Wilson <chris at chris-wilson.co.uk> wrote:
> On Wed, 21 Sep 2011 07:25:03 -0700, Ben Widawsky <ben at bwidawsk.net>
> wrote:
> > On Wed, 21 Sep 2011 12:42:22 +0100
> > Chris Wilson <chris at chris-wilson.co.uk> wrote:
> > > ---
> > > 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.
>
> In the broken English from the spec in front of me:
>
> PointerBitFieldName/MMIO Register Address
> Project: All
> Address: GraphicsVirtualAddress[31:2]
> Surface Type: Semaphore
> if Compare Register bit[18] is set, this field if the Graphics Memory
> Address of the 32 bit value for the semaphore. If Compare Register
> bit[18] is cleared, this field is the MMIO address of the register
> for the semaphore.
>
> I'm embarrassed to have only set the field for Update and not Compare.
> -Chris
>
Reading the simulator code, that third dword has no effect. I don't
think that means that is how the HW behaves, but food for though...
Ben
More information about the Intel-gfx
mailing list