summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2010-03-31 13:38:56 +1000
committerDave Airlie <airlied@redhat.com>2010-04-01 12:50:19 +1000
commit9e5786bd14cb9ffe29ebe66d41cedf03311b0d30 (patch)
tree18a1bec350a97117f4540e96323eb0efad3f9b36
parentfb668c2fed628179c7aa409a0de39a2b96bed18c (diff)
downloadlinux-3.10-9e5786bd14cb9ffe29ebe66d41cedf03311b0d30.tar.gz
linux-3.10-9e5786bd14cb9ffe29ebe66d41cedf03311b0d30.tar.bz2
linux-3.10-9e5786bd14cb9ffe29ebe66d41cedf03311b0d30.zip
drm/radeon/kms: add sanity check to wptr.
If we resume in a bad way, we'll get 0xffffffff in wptr, and then oops with no console. This just adds a sanity check so that we can avoid the oops and hopefully get more details out of people's systems. Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--drivers/gpu/drm/radeon/r100.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c
index 138ddd49dfc..c8f4b0300b7 100644
--- a/drivers/gpu/drm/radeon/r100.c
+++ b/drivers/gpu/drm/radeon/r100.c
@@ -744,6 +744,8 @@ int r100_cp_init(struct radeon_device *rdev, unsigned ring_size)
udelay(10);
rdev->cp.rptr = RREG32(RADEON_CP_RB_RPTR);
rdev->cp.wptr = RREG32(RADEON_CP_RB_WPTR);
+ /* protect against crazy HW on resume */
+ rdev->cp.wptr &= rdev->cp.ptr_mask;
/* Set cp mode to bus mastering & enable cp*/
WREG32(RADEON_CP_CSQ_MODE,
REG_SET(RADEON_INDIRECT2_START, indirect2_start) |