diff mbox series

[3/8] drm/i915/ringbuffer: Clear semaphore sync registers on ring init

Message ID 20181203113701.12106-3-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show
Series [1/8] drm/i915/breadcrumbs: Reduce missed-breadcrumb false positive rate | expand

Commit Message

Chris Wilson Dec. 3, 2018, 11:36 a.m. UTC
Ensure that the sync registers are cleared every time we restart the
ring to avoid stale values from creeping in from random neutrinos.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/intel_ringbuffer.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Mika Kuoppala Dec. 3, 2018, 12:05 p.m. UTC | #1
Chris Wilson <chris@chris-wilson.co.uk> writes:

> Ensure that the sync registers are cleared every time we restart the
> ring to avoid stale values from creeping in from random neutrinos.
>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> ---
>  drivers/gpu/drm/i915/intel_ringbuffer.c | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
> index 992889f9e0ff..81b10d85b738 100644
> --- a/drivers/gpu/drm/i915/intel_ringbuffer.c
> +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
> @@ -529,6 +529,13 @@ static int init_ring_common(struct intel_engine_cs *engine)
>  
>  	intel_engine_reset_breadcrumbs(engine);
>  
> +	if (HAS_LEGACY_SEMAPHORES(engine->i915)) {
> +		I915_WRITE(RING_SYNC_0(engine->mmio_base), 0);
> +		I915_WRITE(RING_SYNC_1(engine->mmio_base), 0);
> +		if (HAS_VEBOX(dev_priv))

Minor nitpick: mixed i915 and dev_priv usage. 

Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>

> +			I915_WRITE(RING_SYNC_2(engine->mmio_base), 0);
> +	}
> +
>  	/* Enforce ordering by reading HEAD register back */
>  	I915_READ_HEAD(engine);
>  
> -- 
> 2.20.0.rc1
Chris Wilson Dec. 3, 2018, 12:15 p.m. UTC | #2
Quoting Mika Kuoppala (2018-12-03 12:05:25)
> Chris Wilson <chris@chris-wilson.co.uk> writes:
> 
> > Ensure that the sync registers are cleared every time we restart the
> > ring to avoid stale values from creeping in from random neutrinos.
> >
> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> > ---
> >  drivers/gpu/drm/i915/intel_ringbuffer.c | 7 +++++++
> >  1 file changed, 7 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
> > index 992889f9e0ff..81b10d85b738 100644
> > --- a/drivers/gpu/drm/i915/intel_ringbuffer.c
> > +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
> > @@ -529,6 +529,13 @@ static int init_ring_common(struct intel_engine_cs *engine)
> >  
> >       intel_engine_reset_breadcrumbs(engine);
> >  
> > +     if (HAS_LEGACY_SEMAPHORES(engine->i915)) {
> > +             I915_WRITE(RING_SYNC_0(engine->mmio_base), 0);
> > +             I915_WRITE(RING_SYNC_1(engine->mmio_base), 0);
> > +             if (HAS_VEBOX(dev_priv))
> 
> Minor nitpick: mixed i915 and dev_priv usage. 

I don't think you are ready yet for i915_write32(i915, reg, value). :-p
-Chris
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 992889f9e0ff..81b10d85b738 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -529,6 +529,13 @@  static int init_ring_common(struct intel_engine_cs *engine)
 
 	intel_engine_reset_breadcrumbs(engine);
 
+	if (HAS_LEGACY_SEMAPHORES(engine->i915)) {
+		I915_WRITE(RING_SYNC_0(engine->mmio_base), 0);
+		I915_WRITE(RING_SYNC_1(engine->mmio_base), 0);
+		if (HAS_VEBOX(dev_priv))
+			I915_WRITE(RING_SYNC_2(engine->mmio_base), 0);
+	}
+
 	/* Enforce ordering by reading HEAD register back */
 	I915_READ_HEAD(engine);