Quoting Tvrtko Ursulin (2018-03-19 13:56:05) > @@ -443,15 +501,12 @@ most_busy_check_all(int gem_fd, const struct intel_execution_engine2 *e, > if (!gem_has_engine(gem_fd, e_->class, e_->instance)) > continue; > > - if (e == e_) { > + if (e == e_) > idle_idx = i; > - } else if (spin) { > - __submit_spin_batch(gem_fd, &obj, e_); > - } else { > - spin = igt_spin_batch_new(gem_fd, 0, > - e2ring(gem_fd, e_), 0); > - obj.handle = spin->handle; > - } > + else if (spin) > + __submit_spin_batch(gem_fd, spin, e_); > + else > + spin = __spin_poll(gem_fd, 0, e2ring(gem_fd, e_)); So this is what is killing snb. We resubmit the spin-batch, with its MI_STORE_DWORD_IMM intact, onto each ring. Instant machine death for snb when we reach vcs. If we tweak the spinner to jump to a location 64bytes past the start, we can opt out of the MI_STORE_DW when not required. Let me go an cook up a delta. -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx