drm/i915: Record batch buffer following GPU error
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 18 Feb 2010 10:24:56 +0000 (10:24 +0000)
committerEric Anholt <eric@anholt.net>
Mon, 22 Feb 2010 17:01:39 +0000 (12:01 -0500)
commit9df30794f609d9412f14cfd0eb7b45dd64d0b14e
tree17e2658af3fe1af83c6a89ca13c3c93752bdfd13
parent7b9c5abee98c54f85bcc04bd4d7ec8d5094c73f4
drm/i915: Record batch buffer following GPU error

In order to improve our diagnostic capabilities following a GPU hang
and subsequent reset, we need to record the batch buffer that triggered
the error. We assume that the current batch buffer, plus a few details
about what else is on the active list, will be sufficient -- at the very
least an improvement over nothing.

The extra information is stored in /debug/dri/.../i915_error_state
following an error, and may be decoded using
intel_gpu_tools/tools/intel_error_decode.

v2: Avoid excessive work under spinlocks.
v3: Include ringbuffer for later analysis.
v4: Use kunmap correctly and record more buffer state.
v5: Search ringbuffer for current batch buffer
v6: Use a work fn for the impossible IRQ error case.
v7: Avoid non-atomic paths whilst in IRQ context.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Eric Anholt <eric@anholt.net>
drivers/gpu/drm/i915/i915_debugfs.c
drivers/gpu/drm/i915/i915_dma.c
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_irq.c
drivers/gpu/drm/i915/i915_reg.h