diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2016-09-09 09:11:58 -0400 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2016-09-09 09:23:07 -0400 |
commit | 80b5bdbdcbce6efd1083269616dc9efea3c63363 (patch) | |
tree | ab9dd5cb40418ef38529b6b8fa9ffda4f403eb08 /drivers/gpu/drm | |
parent | dadd481bfe559f09bc3c42e9d552149c1cb84e6a (diff) |
drm/i915: Ignore valid but unknown semaphores
If we find a ring waiting on a semaphore for another assigned but not yet
emitted request, treat it as valid and waiting.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20160909131201.16673-18-chris@chris-wilson.co.uk
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/i915/i915_irq.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index ef2d40278191..b76d45d91a84 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c | |||
@@ -2831,10 +2831,10 @@ semaphore_wait_to_signaller_ring(struct intel_engine_cs *engine, u32 ipehr, | |||
2831 | } | 2831 | } |
2832 | } | 2832 | } |
2833 | 2833 | ||
2834 | DRM_ERROR("No signaller ring found for ring %i, ipehr 0x%08x, offset 0x%016llx\n", | 2834 | DRM_DEBUG_DRIVER("No signaller ring found for ring %i, ipehr 0x%08x, offset 0x%016llx\n", |
2835 | engine->id, ipehr, offset); | 2835 | engine->id, ipehr, offset); |
2836 | 2836 | ||
2837 | return NULL; | 2837 | return ERR_PTR(-ENODEV); |
2838 | } | 2838 | } |
2839 | 2839 | ||
2840 | static struct intel_engine_cs * | 2840 | static struct intel_engine_cs * |
@@ -2922,6 +2922,9 @@ static int semaphore_passed(struct intel_engine_cs *engine) | |||
2922 | if (signaller == NULL) | 2922 | if (signaller == NULL) |
2923 | return -1; | 2923 | return -1; |
2924 | 2924 | ||
2925 | if (IS_ERR(signaller)) | ||
2926 | return 0; | ||
2927 | |||
2925 | /* Prevent pathological recursion due to driver bugs */ | 2928 | /* Prevent pathological recursion due to driver bugs */ |
2926 | if (signaller->hangcheck.deadlock >= I915_NUM_ENGINES) | 2929 | if (signaller->hangcheck.deadlock >= I915_NUM_ENGINES) |
2927 | return -1; | 2930 | return -1; |