drm/i915: find guilty batch buffer on ring resets
authorMika Kuoppala <mika.kuoppala@linux.intel.com>
Wed, 12 Jun 2013 12:13:20 +0000 (15:13 +0300)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 13 Jun 2013 15:42:17 +0000 (17:42 +0200)
commitaa60c664e6df502578454621c3a9b1f087ff8d25
treefec0cf5e153bd7b9169b502aa9b38f241ed2e918
parentad8beaeada276b4b2d31e1c3422346e8829a67d6
drm/i915: find guilty batch buffer on ring resets

After hang check timer has declared gpu to be hung,
rings are reset. In ring reset, when clearing
request list, do post mortem analysis to find out
the guilty batch buffer.

Select requests for further analysis by inspecting
the completed sequence number which has been updated
into the HWS page. If request was completed, it can't
be related to the hang.

For noncompleted requests mark the batch as guilty
if the ring was not waiting and the ring head was
stuck inside the buffer object or in the flush region
right after the batch. For everything else, mark
them as innocents.

v2: Fixed a typo in commit message (Ville Syrjälä)

v3: - more descriptive function parameters (Chris Wilson)
    - use masked head address when inspecting if request is in ring
    - s/hangcheck.last_action/hangcheck.action
    - added comment about unmasked head hitting batch_obj range

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
Acked-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_gem.c