diff options
| -rw-r--r-- | drivers/gpu/drm/radeon/r100.c | 15 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/r600.c | 12 |
2 files changed, 15 insertions, 12 deletions
diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c index f3892efcf7f4..b41237bf884b 100644 --- a/drivers/gpu/drm/radeon/r100.c +++ b/drivers/gpu/drm/radeon/r100.c | |||
| @@ -3758,7 +3758,8 @@ int r100_ib_test(struct radeon_device *rdev, struct radeon_ring *ring) | |||
| 3758 | WREG32(scratch, 0xCAFEDEAD); | 3758 | WREG32(scratch, 0xCAFEDEAD); |
| 3759 | r = radeon_ib_get(rdev, RADEON_RING_TYPE_GFX_INDEX, &ib, NULL, 256); | 3759 | r = radeon_ib_get(rdev, RADEON_RING_TYPE_GFX_INDEX, &ib, NULL, 256); |
| 3760 | if (r) { | 3760 | if (r) { |
| 3761 | return r; | 3761 | DRM_ERROR("radeon: failed to get ib (%d).\n", r); |
| 3762 | goto free_scratch; | ||
| 3762 | } | 3763 | } |
| 3763 | ib.ptr[0] = PACKET0(scratch, 0); | 3764 | ib.ptr[0] = PACKET0(scratch, 0); |
| 3764 | ib.ptr[1] = 0xDEADBEEF; | 3765 | ib.ptr[1] = 0xDEADBEEF; |
| @@ -3771,13 +3772,13 @@ int r100_ib_test(struct radeon_device *rdev, struct radeon_ring *ring) | |||
| 3771 | ib.length_dw = 8; | 3772 | ib.length_dw = 8; |
| 3772 | r = radeon_ib_schedule(rdev, &ib, NULL); | 3773 | r = radeon_ib_schedule(rdev, &ib, NULL); |
| 3773 | if (r) { | 3774 | if (r) { |
| 3774 | radeon_scratch_free(rdev, scratch); | 3775 | DRM_ERROR("radeon: failed to schedule ib (%d).\n", r); |
| 3775 | radeon_ib_free(rdev, &ib); | 3776 | goto free_ib; |
| 3776 | return r; | ||
| 3777 | } | 3777 | } |
| 3778 | r = radeon_fence_wait(ib.fence, false); | 3778 | r = radeon_fence_wait(ib.fence, false); |
| 3779 | if (r) { | 3779 | if (r) { |
| 3780 | return r; | 3780 | DRM_ERROR("radeon: fence wait failed (%d).\n", r); |
| 3781 | goto free_ib; | ||
| 3781 | } | 3782 | } |
| 3782 | for (i = 0; i < rdev->usec_timeout; i++) { | 3783 | for (i = 0; i < rdev->usec_timeout; i++) { |
| 3783 | tmp = RREG32(scratch); | 3784 | tmp = RREG32(scratch); |
| @@ -3793,8 +3794,10 @@ int r100_ib_test(struct radeon_device *rdev, struct radeon_ring *ring) | |||
| 3793 | scratch, tmp); | 3794 | scratch, tmp); |
| 3794 | r = -EINVAL; | 3795 | r = -EINVAL; |
| 3795 | } | 3796 | } |
| 3796 | radeon_scratch_free(rdev, scratch); | 3797 | free_ib: |
| 3797 | radeon_ib_free(rdev, &ib); | 3798 | radeon_ib_free(rdev, &ib); |
| 3799 | free_scratch: | ||
| 3800 | radeon_scratch_free(rdev, scratch); | ||
| 3798 | return r; | 3801 | return r; |
| 3799 | } | 3802 | } |
| 3800 | 3803 | ||
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c index 48460b4b3e2e..39b743fff791 100644 --- a/drivers/gpu/drm/radeon/r600.c +++ b/drivers/gpu/drm/radeon/r600.c | |||
| @@ -2638,7 +2638,7 @@ int r600_ib_test(struct radeon_device *rdev, struct radeon_ring *ring) | |||
| 2638 | r = radeon_ib_get(rdev, ring->idx, &ib, NULL, 256); | 2638 | r = radeon_ib_get(rdev, ring->idx, &ib, NULL, 256); |
| 2639 | if (r) { | 2639 | if (r) { |
| 2640 | DRM_ERROR("radeon: failed to get ib (%d).\n", r); | 2640 | DRM_ERROR("radeon: failed to get ib (%d).\n", r); |
| 2641 | return r; | 2641 | goto free_scratch; |
| 2642 | } | 2642 | } |
| 2643 | ib.ptr[0] = PACKET3(PACKET3_SET_CONFIG_REG, 1); | 2643 | ib.ptr[0] = PACKET3(PACKET3_SET_CONFIG_REG, 1); |
| 2644 | ib.ptr[1] = ((scratch - PACKET3_SET_CONFIG_REG_OFFSET) >> 2); | 2644 | ib.ptr[1] = ((scratch - PACKET3_SET_CONFIG_REG_OFFSET) >> 2); |
| @@ -2646,15 +2646,13 @@ int r600_ib_test(struct radeon_device *rdev, struct radeon_ring *ring) | |||
| 2646 | ib.length_dw = 3; | 2646 | ib.length_dw = 3; |
| 2647 | r = radeon_ib_schedule(rdev, &ib, NULL); | 2647 | r = radeon_ib_schedule(rdev, &ib, NULL); |
| 2648 | if (r) { | 2648 | if (r) { |
| 2649 | radeon_scratch_free(rdev, scratch); | ||
| 2650 | radeon_ib_free(rdev, &ib); | ||
| 2651 | DRM_ERROR("radeon: failed to schedule ib (%d).\n", r); | 2649 | DRM_ERROR("radeon: failed to schedule ib (%d).\n", r); |
| 2652 | return r; | 2650 | goto free_ib; |
| 2653 | } | 2651 | } |
| 2654 | r = radeon_fence_wait(ib.fence, false); | 2652 | r = radeon_fence_wait(ib.fence, false); |
| 2655 | if (r) { | 2653 | if (r) { |
| 2656 | DRM_ERROR("radeon: fence wait failed (%d).\n", r); | 2654 | DRM_ERROR("radeon: fence wait failed (%d).\n", r); |
| 2657 | return r; | 2655 | goto free_ib; |
| 2658 | } | 2656 | } |
| 2659 | for (i = 0; i < rdev->usec_timeout; i++) { | 2657 | for (i = 0; i < rdev->usec_timeout; i++) { |
| 2660 | tmp = RREG32(scratch); | 2658 | tmp = RREG32(scratch); |
| @@ -2669,8 +2667,10 @@ int r600_ib_test(struct radeon_device *rdev, struct radeon_ring *ring) | |||
| 2669 | scratch, tmp); | 2667 | scratch, tmp); |
| 2670 | r = -EINVAL; | 2668 | r = -EINVAL; |
| 2671 | } | 2669 | } |
| 2672 | radeon_scratch_free(rdev, scratch); | 2670 | free_ib: |
| 2673 | radeon_ib_free(rdev, &ib); | 2671 | radeon_ib_free(rdev, &ib); |
| 2672 | free_scratch: | ||
| 2673 | radeon_scratch_free(rdev, scratch); | ||
| 2674 | return r; | 2674 | return r; |
| 2675 | } | 2675 | } |
| 2676 | 2676 | ||
