[Intel-gfx] [PATCH v2] drm/i915: Ignore -EIO from __i915_wait_request() during flips
ville.syrjala at linux.intel.com
ville.syrjala at linux.intel.com
Thu Jun 11 10:05:58 PDT 2015
From: Ville Syrjälä <ville.syrjala at linux.intel.com>
When the GPU gets reset __i915_wait_request() returns -EIO to the
mmio flip worker. Currently we WARN whenever we get anything other
than 0. Ignore the -EIO too since it's a perfectly normal thing
to get during a GPU reset.
Also give intel_finish_fb() the same treatment, which triggers now at
least with CS flips on my gen4.
The intel_finish_fb() warning got added in
commit 2e2f351dbf29681d54a3a0f1003c5bb9bc832072
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Mon Apr 27 13:41:14 2015 +0100
drm/i915: Remove domain flubbing from i915_gem_object_finish_gpu()
The mmio flip one in
commit 536f5b5e86b225dab94c7ff8061ae482b6077387
Author: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira at intel.com>
Date: Thu Nov 6 11:03:40 2014 +0200
drm/i915: Make mmio flip wait for seqno in the work function
v2: Ignore -EIO in intel_finish_fb() too
Cc: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira at intel.com>
Cc: Chris Wilson <chris at chris-wilson.co.uk>
Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
---
drivers/gpu/drm/i915/intel_display.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 9bf759c..0e4720e 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -3279,7 +3279,7 @@ intel_finish_fb(struct drm_framebuffer *old_fb)
ret = i915_gem_object_wait_rendering(obj, true);
dev_priv->mm.interruptible = was_interruptible;
- WARN_ON(ret);
+ WARN_ON(ret != 0 && ret != -EIO);
}
static bool intel_crtc_has_pending_flip(struct drm_crtc *crtc)
@@ -11327,11 +11327,13 @@ static void intel_mmio_flip_work_func(struct work_struct *work)
struct intel_mmio_flip *mmio_flip =
container_of(work, struct intel_mmio_flip, work);
- if (mmio_flip->req)
- WARN_ON(__i915_wait_request(mmio_flip->req,
- mmio_flip->crtc->reset_counter,
- false, NULL,
- &mmio_flip->i915->rps.mmioflips));
+ if (mmio_flip->req) {
+ int ret = __i915_wait_request(mmio_flip->req,
+ mmio_flip->crtc->reset_counter,
+ false, NULL,
+ &mmio_flip->i915->rps.mmioflips);
+ WARN_ON(ret != 0 && ret != -EIO);
+ }
intel_do_mmio_flip(mmio_flip->crtc);
--
2.3.6
More information about the Intel-gfx
mailing list