summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/radeon/cik.c
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2014-07-23 11:47:58 +0400
committerAlex Deucher <alexander.deucher@amd.com>2014-07-23 19:35:36 +0400
commite8c214d22e76dd0ead38f97f8d2dc09aac70d651 (patch)
tree3cb74e68e44c75a0d2231bda9ca6634397f3773e /drivers/gpu/drm/radeon/cik.c
parent5b7532756382cb31748f73df6a0af0138390c04f (diff)
downloadlinux-e8c214d22e76dd0ead38f97f8d2dc09aac70d651.tar.xz
drm/radeon: fix irq ring buffer overflow handling
We must mask out the overflow bit as well, otherwise the wptr will never match the rptr again and the interrupt handler will loop forever. Signed-off-by: Christian König <christian.koenig@amd.com> Cc: stable@vger.kernel.org Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/cik.c')
-rw-r--r--drivers/gpu/drm/radeon/cik.c1
1 files changed, 1 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)
tmp = RREG32(IH_RB_CNTL);
tmp |= IH_WPTR_OVERFLOW_CLEAR;
WREG32(IH_RB_CNTL, tmp);
+ wptr &= ~RB_OVERFLOW;
}
return (wptr & rdev->ih.ptr_mask);
}