aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_irq.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-01-27 14:15:11 -0500
committerChris Wilson <chris@chris-wilson.co.uk>2011-01-28 06:21:37 -0500
commite2f973d58e80ba00bcfaa171169c42c710e7e826 (patch)
tree2d7111c6bd84f77c995cdc624eb2a425a5bbfe76 /drivers/gpu/drm/i915/i915_irq.c
parent21dd373486956d7789ffd878347c36efad16923d (diff)
drm/i915: Record all error ringbuffers
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_irq.c')
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index a98fb026d388..d388bbbe8c4a 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -648,9 +648,14 @@ static void
648i915_error_state_free(struct drm_device *dev, 648i915_error_state_free(struct drm_device *dev,
649 struct drm_i915_error_state *error) 649 struct drm_i915_error_state *error)
650{ 650{
651 i915_error_object_free(error->batchbuffer[0]); 651 int i;
652 i915_error_object_free(error->batchbuffer[1]); 652
653 i915_error_object_free(error->ringbuffer); 653 for (i = 0; i < ARRAY_SIZE(error->batchbuffer); i++)
654 i915_error_object_free(error->batchbuffer[i]);
655
656 for (i = 0; i < ARRAY_SIZE(error->ringbuffer); i++)
657 i915_error_object_free(error->ringbuffer[i]);
658
654 kfree(error->active_bo); 659 kfree(error->active_bo);
655 kfree(error->overlay); 660 kfree(error->overlay);
656 kfree(error); 661 kfree(error);
@@ -824,15 +829,16 @@ static void i915_capture_error_state(struct drm_device *dev)
824 } 829 }
825 i915_gem_record_fences(dev, error); 830 i915_gem_record_fences(dev, error);
826 831
827 /* Record the active batchbuffers */ 832 /* Record the active batch and ring buffers */
828 for (i = 0; i < I915_NUM_RINGS; i++) 833 for (i = 0; i < I915_NUM_RINGS; i++) {
829 error->batchbuffer[i] = 834 error->batchbuffer[i] =
830 i915_error_first_batchbuffer(dev_priv, 835 i915_error_first_batchbuffer(dev_priv,
831 &dev_priv->ring[i]); 836 &dev_priv->ring[i]);
832 837
833 /* Record the ringbuffer */ 838 error->ringbuffer[i] =
834 error->ringbuffer = i915_error_object_create(dev_priv, 839 i915_error_object_create(dev_priv,
835 dev_priv->ring[RCS].obj); 840 dev_priv->ring[i].obj);
841 }
836 842
837 /* Record buffers on the active and pinned lists. */ 843 /* Record buffers on the active and pinned lists. */
838 error->active_bo = NULL; 844 error->active_bo = NULL;