aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2014-07-24 19:17:08 -0400
committerDave Airlie <airlied@redhat.com>2014-07-24 19:17:08 -0400
commit97cefc3e94a863c1bd21f04387976b2840bd951e (patch)
treedd9c701bd7750e18bf2e75c2c6036633c6999c88
parent9d6ed3c695ddf66f7ff89565d843d95c420046d0 (diff)
parente8c214d22e76dd0ead38f97f8d2dc09aac70d651 (diff)
Merge branch 'drm-fixes-3.16' of git://people.freedesktop.org/~agd5f/linux into drm-fixes
two more radeon fixes. * 'drm-fixes-3.16' of git://people.freedesktop.org/~agd5f/linux: drm/radeon: fix irq ring buffer overflow handling drm/radeon: fix error handling in radeon_vm_bo_set_addr
-rw-r--r--drivers/gpu/drm/radeon/cik.c1
-rw-r--r--drivers/gpu/drm/radeon/evergreen.c1
-rw-r--r--drivers/gpu/drm/radeon/r600.c1
-rw-r--r--drivers/gpu/drm/radeon/radeon_vm.c4
-rw-r--r--drivers/gpu/drm/radeon/si.c1
5 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c
index 0b2471107137..cc1f02f6817d 100644
--- a/drivers/gpu/drm/radeon/cik.c
+++ b/drivers/gpu/drm/radeon/cik.c
@@ -7376,6 +7376,7 @@ static inline u32 cik_get_ih_wptr(struct radeon_device *rdev)
7376 tmp = RREG32(IH_RB_CNTL); 7376 tmp = RREG32(IH_RB_CNTL);
7377 tmp |= IH_WPTR_OVERFLOW_CLEAR; 7377 tmp |= IH_WPTR_OVERFLOW_CLEAR;
7378 WREG32(IH_RB_CNTL, tmp); 7378 WREG32(IH_RB_CNTL, tmp);
7379 wptr &= ~RB_OVERFLOW;
7379 } 7380 }
7380 return (wptr & rdev->ih.ptr_mask); 7381 return (wptr & rdev->ih.ptr_mask);
7381} 7382}
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
index 250bac3935a4..15e4f28015e1 100644
--- a/drivers/gpu/drm/radeon/evergreen.c
+++ b/drivers/gpu/drm/radeon/evergreen.c
@@ -4756,6 +4756,7 @@ static u32 evergreen_get_ih_wptr(struct radeon_device *rdev)
4756 tmp = RREG32(IH_RB_CNTL); 4756 tmp = RREG32(IH_RB_CNTL);
4757 tmp |= IH_WPTR_OVERFLOW_CLEAR; 4757 tmp |= IH_WPTR_OVERFLOW_CLEAR;
4758 WREG32(IH_RB_CNTL, tmp); 4758 WREG32(IH_RB_CNTL, tmp);
4759 wptr &= ~RB_OVERFLOW;
4759 } 4760 }
4760 return (wptr & rdev->ih.ptr_mask); 4761 return (wptr & rdev->ih.ptr_mask);
4761} 4762}
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
index c66952d4b00c..3c69f58e46ef 100644
--- a/drivers/gpu/drm/radeon/r600.c
+++ b/drivers/gpu/drm/radeon/r600.c
@@ -3795,6 +3795,7 @@ static u32 r600_get_ih_wptr(struct radeon_device *rdev)
3795 tmp = RREG32(IH_RB_CNTL); 3795 tmp = RREG32(IH_RB_CNTL);
3796 tmp |= IH_WPTR_OVERFLOW_CLEAR; 3796 tmp |= IH_WPTR_OVERFLOW_CLEAR;
3797 WREG32(IH_RB_CNTL, tmp); 3797 WREG32(IH_RB_CNTL, tmp);
3798 wptr &= ~RB_OVERFLOW;
3798 } 3799 }
3799 return (wptr & rdev->ih.ptr_mask); 3800 return (wptr & rdev->ih.ptr_mask);
3800} 3801}
diff --git a/drivers/gpu/drm/radeon/radeon_vm.c b/drivers/gpu/drm/radeon/radeon_vm.c
index fa41e0d7d17d..725d3669014f 100644
--- a/drivers/gpu/drm/radeon/radeon_vm.c
+++ b/drivers/gpu/drm/radeon/radeon_vm.c
@@ -472,6 +472,10 @@ int radeon_vm_bo_set_addr(struct radeon_device *rdev,
472 if (bo_va->soffset) { 472 if (bo_va->soffset) {
473 /* add a clone of the bo_va to clear the old address */ 473 /* add a clone of the bo_va to clear the old address */
474 tmp = kzalloc(sizeof(struct radeon_bo_va), GFP_KERNEL); 474 tmp = kzalloc(sizeof(struct radeon_bo_va), GFP_KERNEL);
475 if (!tmp) {
476 mutex_unlock(&vm->mutex);
477 return -ENOMEM;
478 }
475 tmp->soffset = bo_va->soffset; 479 tmp->soffset = bo_va->soffset;
476 tmp->eoffset = bo_va->eoffset; 480 tmp->eoffset = bo_va->eoffset;
477 tmp->vm = vm; 481 tmp->vm = vm;
diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c
index eba0225259a4..9e854fd016da 100644
--- a/drivers/gpu/drm/radeon/si.c
+++ b/drivers/gpu/drm/radeon/si.c
@@ -6103,6 +6103,7 @@ static inline u32 si_get_ih_wptr(struct radeon_device *rdev)
6103 tmp = RREG32(IH_RB_CNTL); 6103 tmp = RREG32(IH_RB_CNTL);
6104 tmp |= IH_WPTR_OVERFLOW_CLEAR; 6104 tmp |= IH_WPTR_OVERFLOW_CLEAR;
6105 WREG32(IH_RB_CNTL, tmp); 6105 WREG32(IH_RB_CNTL, tmp);
6106 wptr &= ~RB_OVERFLOW;
6106 } 6107 }
6107 return (wptr & rdev->ih.ptr_mask); 6108 return (wptr & rdev->ih.ptr_mask);
6108} 6109}