[Intel-gfx] [PATCH 00/17] Broadwell HW semaphores
Ben Widawsky
benjamin.widawsky at intel.com
Sat Dec 14 05:15:48 CET 2013
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
More information about the Intel-gfx
mailing list