All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 01/26] drm/i915/ringbuffer: Reload PDs harder on byt/bcs
@ 2018-09-11 11:57 Chris Wilson
  2018-09-11 11:57 ` [PATCH 02/26] drm/i915: Reorder execobject[] to insert non-48b objects into the low 4G Chris Wilson
                   ` (29 more replies)
  0 siblings, 30 replies; 32+ messages in thread
From: Chris Wilson @ 2018-09-11 11:57 UTC (permalink / raw)
  To: intel-gfx

Baytrail takes a little more convincing that it needs to actually reload
its Page Directoy (ppGTT) before the context switch, so repeat it until
it gets the message. Once again the arbitrary values here are
empirically derived.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107861
Testcase: igt/gem_exec_parallel/fds
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/intel_ringbuffer.c | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 472939f5c18f..d0ef50bf930a 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -1677,9 +1677,26 @@ static int switch_context(struct i915_request *rq)
 	GEM_BUG_ON(HAS_EXECLISTS(rq->i915));
 
 	if (ppgtt) {
-		ret = load_pd_dir(rq, ppgtt);
-		if (ret)
-			goto err;
+		int loops;
+
+		/*
+		 * Baytail takes a little more convincing that it really needs
+		 * to reload the PD between contexts. It is not just a little
+		 * longer, as adding more stalls after the load_pd_dir (i.e.
+		 * adding a long loop around flush_pd_dir) is not as effective
+		 * as reloading the PD umpteen times. 32 is derived from
+		 * experimentation (gem_exec_parallel/fds) and has no good
+		 * explanation.
+		 */
+		loops = 1;
+		if (engine->id == BCS && IS_VALLEYVIEW(engine->i915))
+			loops = 32;
+
+		do {
+			ret = load_pd_dir(rq, ppgtt);
+			if (ret)
+				goto err;
+		} while (--loops);
 
 		if (intel_engine_flag(engine) & ppgtt->pd_dirty_rings) {
 			unwind_mm = intel_engine_flag(engine);
-- 
2.19.0.rc2

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

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

end of thread, other threads:[~2018-09-12  9:50 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-11 11:57 [PATCH 01/26] drm/i915/ringbuffer: Reload PDs harder on byt/bcs Chris Wilson
2018-09-11 11:57 ` [PATCH 02/26] drm/i915: Reorder execobject[] to insert non-48b objects into the low 4G Chris Wilson
2018-09-12  9:49   ` Joonas Lahtinen
2018-09-11 11:57 ` [PATCH 03/26] drm/i915: Limit number of capture objects Chris Wilson
2018-09-11 11:57 ` [PATCH 04/26] drm/i915: Handle incomplete Z_FINISH for compressed error states Chris Wilson
2018-09-11 11:57 ` [PATCH 05/26] drm/i915: Clear the error PTE just once on finish Chris Wilson
2018-09-11 11:57 ` [PATCH 06/26] drm/i915: Cache the error string Chris Wilson
2018-09-11 11:57 ` [PATCH 07/26] drm/i915/overlay: Allocate physical registers from stolen Chris Wilson
2018-09-11 11:57 ` [PATCH 08/26] drm/i915/overlay: Use the ioctl parameters directly Chris Wilson
2018-09-11 11:57 ` [PATCH 09/26] drm/i915/execlists: Reset CSB pointers on canceling requests (wedging) Chris Wilson
2018-09-11 11:57 ` [PATCH 10/26] drm/i915/execlists: Avoid kicking priority on the current context Chris Wilson
2018-09-11 11:57 ` [PATCH 11/26] drm/i915/selftests: Basic stress test for rapid context switching Chris Wilson
2018-09-11 11:57 ` [PATCH 12/26] drm/i915/execlists: Delay updating ring register state after resume Chris Wilson
2018-09-11 11:57 ` [PATCH 13/26] drm/i915/execlists: Use coherent writes into the context image Chris Wilson
2018-09-11 11:57 ` [PATCH 14/26] drm/i915/execlists: Onion unwind for logical_ring_init() failure Chris Wilson
2018-09-11 11:57 ` [PATCH 15/26] drm/i915/execlists: Assert the queue is non-empty on unsubmitting Chris Wilson
2018-09-11 11:58 ` [PATCH 16/26] drm/i915: Report the number of closed vma held by each context in debugfs Chris Wilson
2018-09-11 11:58 ` [PATCH 17/26] drm/i915: Remove debugfs/i915_ppgtt_info Chris Wilson
2018-09-11 11:58 ` [PATCH 18/26] drm/i915: Track all held rpm wakerefs Chris Wilson
2018-09-11 11:58 ` [PATCH 19/26] drm/i915: Markup paired operations on wakerefs Chris Wilson
2018-09-11 11:58 ` [PATCH 20/26] drm/i915: Syntatic sugar for using intel_runtime_pm Chris Wilson
2018-09-11 11:58 ` [PATCH 21/26] drm/i915: Markup paired operations on display power domains Chris Wilson
2018-09-11 11:58 ` [PATCH 22/26] drm/i915: Track the wakeref used to initialise " Chris Wilson
2018-09-11 11:58 ` [PATCH 23/26] drm/i915/dp: Markup pps lock power well Chris Wilson
2018-09-11 11:58 ` [PATCH 24/26] drm/i915: Complain if hsw_get_pipe_config acquires the same power well twice Chris Wilson
2018-09-11 11:58 ` [PATCH 25/26] drm/i915: Mark up Ironlake ips with rpm wakerefs Chris Wilson
2018-09-11 11:58 ` [PATCH 26/26] drm/i915: Serialise concurrent calls to i915_gem_set_wedged() Chris Wilson
2018-09-11 13:50 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [01/26] drm/i915/ringbuffer: Reload PDs harder on byt/bcs Patchwork
2018-09-11 13:57 ` ✗ Fi.CI.SPARSE: " Patchwork
2018-09-11 14:06 ` ✓ Fi.CI.BAT: success " Patchwork
2018-09-11 14:56 ` ✓ Fi.CI.IGT: " Patchwork
2018-09-12  9:44 ` [PATCH 01/26] " Joonas Lahtinen

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.