This patch series implements hardware semaphores to be on par with support of other platforms. The biggest change in the series is the removal of the mailboxes we previously had. To replace this, there is a 4k BO allocated for the semaphore communication. This could have also been done in the HWSP. Since we have per-ring HWSP, I don't see a big one, and I have a theory that the cache locality would be a win. There are two very important notes: 1. gem_ring_sync_loop is one of the best focus tests that we have for semaphores. This test is currently hanging. I still get through many sync sequences between rings (in fact, the test has even succeeded a few times), and the hang is on an unrelated instruction. I have some suspicion that the issue is actually related to the MI_FLUSH_DW and not the semaphores at all. 2. The debug/error code which reads the semaphores is not working when read back from the CPU. This is an extremely worrying thing, and I am somewhat hopeful that review will the solution. Reading the same page through the GTT works as expected. See the debugfs patch for a nice isolated example of what fails (though the error collection code contains the same problem). With that, the patches probably should not be merged completely - but maybe some of the prep patches can be merged now, making the rebase pain lessened while I finish debugging. Anyone who finds any bugs that solve my issues will be my best friend for a week. Ben Widawsky (17): drm/i915: Reorder/respace MI instruction definition drm/i915: Don't emit mbox updates without semaphores drm/i915: Move semaphore specific ring members to struct drm/i915: Virtualize the ringbuffer signal func drm/i915: Move ring_begin to signal() drm/i915: Make semaphore updates more precise drm/i915: gen specific semaphore info drm/i915: Create for_all_rings drm/i915: init ring->id early drm/i915/bdw: implement semaphore signal drm/i915/bdw: implement semaphore wait drm/i915: FORCE_RESTORE for gen8 semaphores drm/i915/bdw: poll semaphores drm/i915: Extract semaphore error collection drm/i915/bdw: collect semaphore error state drm/i915: unleash semaphores on gen8 drm/i915: semaphore debugfs drivers/gpu/drm/i915/i915_debugfs.c | 69 +++++++ drivers/gpu/drm/i915/i915_drv.c | 6 - drivers/gpu/drm/i915/i915_drv.h | 6 + drivers/gpu/drm/i915/i915_gem.c | 16 +- drivers/gpu/drm/i915/i915_gem_context.c | 9 + drivers/gpu/drm/i915/i915_gpu_error.c | 75 ++++++-- drivers/gpu/drm/i915/i915_reg.h | 58 +++--- drivers/gpu/drm/i915/intel_ringbuffer.c | 332 ++++++++++++++++++++++++-------- drivers/gpu/drm/i915/intel_ringbuffer.h | 85 +++++++- 9 files changed, 514 insertions(+), 142 deletions(-) -- 1.8.5.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx