From: Ben Widawsky <benjamin.widawsky@intel.com>
To: Intel GFX <intel-gfx@lists.freedesktop.org>
Cc: Ben Widawsky <benjamin.widawsky@intel.com>
Subject: [PATCH 00/17] Broadwell HW semaphores
Date: Fri, 13 Dec 2013 20:15:48 -0800 [thread overview]
Message-ID: <1386994565-29395-1-git-send-email-benjamin.widawsky@intel.com> (raw)
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
next reply other threads:[~2013-12-14 4:16 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-14 4:15 Ben Widawsky [this message]
2013-12-14 4:15 ` [PATCH 01/17] drm/i915: Reorder/respace MI instruction definition Ben Widawsky
2013-12-14 4:15 ` [PATCH 02/17] drm/i915: Don't emit mbox updates without semaphores Ben Widawsky
2013-12-14 4:15 ` [PATCH 03/17] drm/i915: Move semaphore specific ring members to struct Ben Widawsky
2013-12-14 4:15 ` [PATCH 04/17] drm/i915: Virtualize the ringbuffer signal func Ben Widawsky
2013-12-14 4:15 ` [PATCH 05/17] drm/i915: Move ring_begin to signal() Ben Widawsky
2013-12-14 9:05 ` Chris Wilson
2013-12-14 18:42 ` Ben Widawsky
2013-12-14 19:27 ` [PATCH 05/17] [v2] " Ben Widawsky
2013-12-14 4:15 ` [PATCH 06/17] drm/i915: Make semaphore updates more precise Ben Widawsky
2013-12-14 4:15 ` [PATCH 07/17] drm/i915: gen specific semaphore info Ben Widawsky
2013-12-14 4:17 ` Ben Widawsky
2013-12-14 5:46 ` [PATCH 07/17] [v2] drm/i915: gen specific ring init Ben Widawsky
2013-12-14 4:15 ` [PATCH 08/17] drm/i915: Create for_all_rings Ben Widawsky
2013-12-14 4:15 ` [PATCH 09/17] drm/i915: init ring->id early Ben Widawsky
2013-12-14 21:45 ` Chris Wilson
2013-12-15 1:42 ` Ben Widawsky
2013-12-15 9:24 ` Chris Wilson
2013-12-15 20:13 ` Ben Widawsky
2013-12-14 4:15 ` [PATCH 10/17] drm/i915/bdw: implement semaphore signal Ben Widawsky
2013-12-14 4:15 ` [PATCH 11/17] drm/i915/bdw: implement semaphore wait Ben Widawsky
2013-12-14 4:16 ` [PATCH 12/17] drm/i915: FORCE_RESTORE for gen8 semaphores Ben Widawsky
2013-12-14 4:16 ` [PATCH 13/17] drm/i915/bdw: poll semaphores Ben Widawsky
2013-12-14 4:16 ` [PATCH 14/17] drm/i915: Extract semaphore error collection Ben Widawsky
2013-12-14 4:16 ` [PATCH 15/17] drm/i915/bdw: collect semaphore error state Ben Widawsky
2013-12-14 19:47 ` Ben Widawsky
2013-12-14 21:38 ` Chris Wilson
2013-12-15 1:48 ` Ben Widawsky
2013-12-15 9:18 ` Chris Wilson
2013-12-15 20:07 ` [PATCH 15/17] [v3] " Ben Widawsky
2013-12-14 4:16 ` [PATCH 16/17] drm/i915: unleash semaphores on gen8 Ben Widawsky
2013-12-14 4:16 ` [PATCH 17/17] drm/i915: semaphore debugfs Ben Widawsky
2013-12-14 9:08 ` [PATCH 00/17] Broadwell HW semaphores Chris Wilson
2013-12-14 19:39 ` Ben Widawsky
2013-12-14 21:16 ` Chris Wilson
2013-12-14 21:25 ` Ben Widawsky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1386994565-29395-1-git-send-email-benjamin.widawsky@intel.com \
--to=benjamin.widawsky@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox