From c9263f192e2f85dd961bc1c4e9ca8180db874517 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Sun, 20 Jan 2013 01:39:12 +0000 Subject: [PATCH] sna: Apply DEBUG_SYNC prior to emitting error report This is handy for the case where the batch triggers a GPU hang rather than being rejected by the kernel. Signed-off-by: Chris Wilson --- src/sna/kgem.c | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/src/sna/kgem.c b/src/sna/kgem.c index 98f3ec99..89558af0 100644 --- a/src/sna/kgem.c +++ b/src/sna/kgem.c @@ -2649,6 +2649,26 @@ void _kgem_submit(struct kgem *kgem) kgem_throttle(kgem); ret = 0; } + + if (DEBUG_FLUSH_SYNC && ret == 0) { + struct drm_i915_gem_set_domain set_domain; + + DBG(("%s: debug sync, starting\n", __FUNCTION__)); + + VG_CLEAR(set_domain); + set_domain.handle = handle; + set_domain.read_domains = I915_GEM_DOMAIN_GTT; + set_domain.write_domain = I915_GEM_DOMAIN_GTT; + + ret = drmIoctl(kgem->fd, DRM_IOCTL_I915_GEM_SET_DOMAIN, &set_domain); + if (ret == -1) { + DBG(("%s: sync: GPU hang detected\n", __FUNCTION__)); + kgem_throttle(kgem); + } + + DBG(("%s: debug sync, completed\n", __FUNCTION__)); + } + #if !NDEBUG if (ret < 0) { ret = errno; @@ -2695,25 +2715,6 @@ void _kgem_submit(struct kgem *kgem) FatalError("SNA: failed to submit batchbuffer, errno=%d\n", ret); } #endif - - if (DEBUG_FLUSH_SYNC) { - struct drm_i915_gem_set_domain set_domain; - - DBG(("%s: debug sync, starting\n", __FUNCTION__)); - - VG_CLEAR(set_domain); - set_domain.handle = handle; - set_domain.read_domains = I915_GEM_DOMAIN_GTT; - set_domain.write_domain = I915_GEM_DOMAIN_GTT; - - ret = drmIoctl(kgem->fd, DRM_IOCTL_I915_GEM_SET_DOMAIN, &set_domain); - if (ret == -1) { - DBG(("%s: sync: GPU hang detected\n", __FUNCTION__)); - kgem_throttle(kgem); - } - - DBG(("%s: debug sync, completed\n", __FUNCTION__)); - } } kgem_commit(kgem);