On Mon, 20 Nov 2017, Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> wrote: > I should have admitted defeat long ago as there has been a rare but > persistent error on Sandybridge where semaphore signaling did not > propagate to the waiter, leading to a GPU hang. I'm late to the party, but I think the choice of patch ordering here is a bit unfortunate. Or is it intentional that you can't backport this to stable as-is? BR, Jani. > > With the work on fence signaling for v4.9, the impact of using CPU driven > signaling was greatly reduced wrt to the latency of GPU semaphores, > though without logical rings support, the benefit of reordering work to > avoid bubbles is not realised (i.e. as it stands fence signaling is just > a slower, more costly version of HW semaphores; but works more > consistently). As a rough indicator of the difference, > > with semaphores: > Sequential (3 engines, 1 processes): average 5.470us per cycle [expected 4.988us] > w/o semaphores: > Sequential (3 engines, 1 processes): average 15.771us per cycle [expected 4.923us] > > In comparison, v3.4: > with semaphores: > Sequential (3 engines, 1 processes): average 16.066us per cycle [expected 11.842us] > w/o semaphores: > Sequential (3 engines, 1 processes): average 23.460us per cycle [expected 11.839us] > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54226 #and 100+ dupes > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> > Acked-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> > Reviewed-by: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_gem.c | 10 +--------- > 1 file changed, 1 insertion(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > index d470e10b2edd..d53bb8e872ba 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -4999,20 +4999,12 @@ int i915_gem_init_hw(struct drm_i915_private *dev_priv) > > bool intel_sanitize_semaphores(struct drm_i915_private *dev_priv, int value) > { > - if (INTEL_GEN(dev_priv) < 6) > - return false; > - > - /* TODO: make semaphores and Execlists play nicely together */ > - if (HAS_EXECLISTS(dev_priv)) > + if (!IS_GEN7(dev_priv)) > return false; > > if (value >= 0) > return value; > > - /* Enable semaphores on SNB when IO remapping is off */ > - if (IS_GEN6(dev_priv) && intel_vtd_active()) > - return false; > - > return true; > } -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx