From: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> Add some nop instructions between recursive batch buffer start calls to give system some breathing room. Without these, especially when coupled with memory pressure, false GPU hangs can be observed caused by the inability of the chip to cope. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106680 --- tests/i915/gem_exec_await.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/i915/gem_exec_await.c b/tests/i915/gem_exec_await.c index 5cfeb8ec8bfa..3ea5b5903c6b 100644 --- a/tests/i915/gem_exec_await.c +++ b/tests/i915/gem_exec_await.c @@ -63,6 +63,7 @@ static void xchg_obj(void *array, unsigned i, unsigned j) static void wide(int fd, int ring_size, int timeout, unsigned int flags) { const uint32_t bbe = MI_BATCH_BUFFER_END; + const unsigned int num_nops = 1000; const int gen = intel_gen(intel_get_drm_devid(fd)); struct { struct drm_i915_gem_exec_object2 *obj; @@ -123,7 +124,7 @@ static void wide(int fd, int ring_size, int timeout, unsigned int flags) exec[e].execbuf.buffer_count = 2; exec[e].reloc.target_handle = 1; /* recurse */ - exec[e].reloc.offset = sizeof(uint32_t); + exec[e].reloc.offset = (1 + num_nops) * sizeof(uint32_t); exec[e].reloc.read_domains = I915_GEM_DOMAIN_COMMAND; if (gen < 4) exec[e].reloc.delta = 1; @@ -162,7 +163,7 @@ static void wide(int fd, int ring_size, int timeout, unsigned int flags) gem_set_domain(fd, exec[e].exec[1].handle, I915_GEM_DOMAIN_WC, I915_GEM_DOMAIN_WC); - i = 0; + i = num_nops; exec[e].cmd[i] = MI_BATCH_BUFFER_START; if (gen >= 8) { exec[e].cmd[i] |= 1 << 8 | 1; @@ -200,7 +201,7 @@ static void wide(int fd, int ring_size, int timeout, unsigned int flags) count += nengine; for (unsigned e = 0; e < nengine; e++) - exec[e].cmd[0] = MI_BATCH_BUFFER_END; + exec[e].cmd[num_nops] = MI_BATCH_BUFFER_END; __sync_synchronize(); } -- 2.19.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx