OSDN Git Service

drm/i915: Convert hangcheck from a timer into a delayed work item
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 26 Jan 2015 16:03:03 +0000 (18:03 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 28 Jan 2015 16:22:12 +0000 (17:22 +0100)
commit737b1506037788f1e01b2a4c5795d4180b2e2e00
tree6c8c2fd71c7726e7725535c3e935edf1369e01f6
parent983d308cb8f602d1920a8c40196eb2ab6cc07bd2
drm/i915: Convert hangcheck from a timer into a delayed work item

When run as a timer, i915_hangcheck_elapsed() must adhere to all the
rules of running in a softirq context. This is advantageous to us as we
want to minimise the risk that a driver bug will prevent us from
detecting a hung GPU. However, that is irrelevant if the driver bug
prevents us from resetting and recovering. Still it is prudent not to
rely on mutexes inside the checker, but given the coarseness of
dev->struct_mutex doing so is extremely hard.

Give in and run from a work queue, i.e. outside of softirq.

v2: Use own workqueue to avoid deadlocks (Daniel)
    Cleanup commit msg and add comment to i915_queue_hangcheck() (Chris)

Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Daniel Vetter <dnaiel.vetter@ffwll.chm>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> (v1)
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
[danvet: Remove accidental kerneldoc comment starter, to appease the 0
day builder.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_dma.c
drivers/gpu/drm/i915/i915_drv.c
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/i915_irq.c