diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-01-27 14:15:11 -0500 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-01-28 06:21:37 -0500 |
commit | e2f973d58e80ba00bcfaa171169c42c710e7e826 (patch) | |
tree | 2d7111c6bd84f77c995cdc624eb2a425a5bbfe76 /drivers/gpu/drm/i915/i915_irq.c | |
parent | 21dd373486956d7789ffd878347c36efad16923d (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.c | 22 |
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 | |||
648 | i915_error_state_free(struct drm_device *dev, | 648 | i915_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; |