]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commit
drm/i915: Don't count semaphore waits towards a stuck ring
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 10 Jun 2013 10:20:21 +0000 (11:20 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 11 Jun 2013 09:49:28 +0000 (11:49 +0200)
commit6274f2126a0454d3c3df1bc9cc6f5e18302696f7
treec9a41bb9c0cf3b035ee63361e03fe90f95c13abf
parent9107e9d227e3b0893829baee4ac59feb874d4c23
drm/i915: Don't count semaphore waits towards a stuck ring

If we detect a ring is in a valid wait for another, just let it be.
Eventually it will either begin to progress again, or the entire system
will come grinding to a halt and then hangcheck will fire as soon as the
deadlock is detected.

This error was foretold by Ben in
commit 05407ff889ceebe383aa5907219f86582ef96b72
Author: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Date:   Thu May 30 09:04:29 2013 +0300

    drm/i915: detect hang using per ring hangcheck_score

"If ring B is waiting on ring A via semaphore, and ring A is making
progress, albeit slowly - the hangcheck will fire. The check will
determine that A is moving, however ring B will appear hung because
the ACTHD doesn't move. I honestly can't say if that's actually a
realistic problem to hit it probably implies the timeout value is too
low."

v2: Make sure we don't even incur the KICK cost whilst waiting.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=65394
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_irq.c
drivers/gpu/drm/i915/intel_ringbuffer.h