All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/6] drm/i915/guc: use one GuC client per GPU engine
@ 2016-07-21 18:15 Dave Gordon
  2016-07-21 18:15 ` [PATCH v2 1/6] drm/i915/guc: doorbell reset should avoid used doorbells Dave Gordon
                   ` (6 more replies)
  0 siblings, 7 replies; 18+ messages in thread
From: Dave Gordon @ 2016-07-21 18:15 UTC (permalink / raw)
  To: intel-gfx

When using a single GuC client for multiple engines, the i915 driver has
to merge all work items into a single work queue, which the GuC firmware
then demultiplexes into separate submission queues per engine. In
theory, this could lead to the single queue becoming a bottleneck in
which an excess of outstanding work for one or more engines might
prevent work for an idle engine reaching the hardware.

To reduce this risk, we can create one GuC client per engine. Each will
have its own workqueue, to be used only for work targeting a single
engine, so there will be no cross-engine contention for workqueue slots.

Dave Gordon (6):
  drm/i915/guc: doorbell reset should avoid used doorbells
  drm/i915/guc: refactor guc_init_doorbell_hw()
  drm/i915/guc: use a separate GuC client for each engine
  drm/i915/guc: add engine mask to GuC client & pass to GuC
  drm/i915/guc: use for_each_engine_id() where appropriate
  drm/i915/guc: re-optimise i915_guc_client layout

 drivers/gpu/drm/i915/i915_debugfs.c        |  43 +++++++----
 drivers/gpu/drm/i915/i915_guc_submission.c | 118 ++++++++++++++++++-----------
 drivers/gpu/drm/i915/intel_guc.h           |  11 ++-
 3 files changed, 107 insertions(+), 65 deletions(-)

-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2016-07-22 21:57 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-21 18:15 [PATCH v2 0/6] drm/i915/guc: use one GuC client per GPU engine Dave Gordon
2016-07-21 18:15 ` [PATCH v2 1/6] drm/i915/guc: doorbell reset should avoid used doorbells Dave Gordon
2016-07-22 10:00   ` Tvrtko Ursulin
2016-07-21 18:15 ` [PATCH v2 2/6] drm/i915/guc: refactor guc_init_doorbell_hw() Dave Gordon
2016-07-22 10:01   ` Tvrtko Ursulin
2016-07-21 18:15 ` [PATCH v2 3/6] drm/i915/guc: use a separate GuC client for each engine Dave Gordon
2016-07-21 18:30   ` Chris Wilson
2016-07-22 10:23     ` Dave Gordon
2016-07-22 21:57       ` Chris Wilson
2016-07-21 18:15 ` [PATCH v2 4/6] drm/i915/guc: add engine mask to GuC client & pass to GuC Dave Gordon
2016-07-21 18:15 ` [PATCH v2 5/6] drm/i915/guc: use for_each_engine_id() where appropriate Dave Gordon
2016-07-22 10:04   ` Tvrtko Ursulin
2016-07-22 10:45     ` Dave Gordon
2016-07-21 18:15 ` [PATCH v2 6/6] drm/i915/guc: re-optimise i915_guc_client layout Dave Gordon
2016-07-22 10:05   ` Tvrtko Ursulin
2016-07-22  6:02 ` ✓ Ro.CI.BAT: success for drm/i915/guc: use one GuC client per GPU engine Patchwork
2016-07-22 10:06   ` Tvrtko Ursulin
2016-07-22 15:17     ` Dave Gordon

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.