On Tue, Apr 18, 2017 at 03:01:02PM -0700, Michel Thierry wrote: > > > On 18/04/17 14:40, Chris Wilson wrote: > >>+ /* try engine reset first, and continue if fails; look mom, no mutex! */ > >>+ if (intel_has_reset_engine(dev_priv) && !(engine_mask & (engine_mask - 1))) { > > > >if (has_reset_engine() && is_power_of_2(engine_mask)) { > > engine = dev_priv->engine[ilog2(engine_mask)]; > > > >Not worth iterating over the engine_mask? > > > >for_each_bit() { > > if (i915_reset_engine(engine) == 0) > > dev_prv->gpu_error.reset_engine_mask &= ~intel_engine_flag() > >if (reset_engine_mask) > > DRM_WARN("per-engine reset failed, promoting to full gpu_reset\n"); > > > > Time-wise, I'm not so sure about the benefits of 2 reset_engines vs > full gpu reset. But it can be done... and thanks for the ilog2 tip. Hmm, looping isn't quite right. You would need to pass down the engine_mask so all engines were paused (in prepare), then reset, then restarted atomically. Will think a bit more about that. The immediate benefit is avoiding the struct_mutex + display futzing more often. -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx