aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2014-03-12 16:20:44 -0400
committerAlex Deucher <alexander.deucher@amd.com>2014-03-12 16:20:44 -0400
commitb2b3d8d952e4f8d6ac2ce80be96b937f29f6e42e (patch)
tree5e46d90d0a5181d3c1c92413299ee1b7b5627b4a
parentdrm/radeon/cik: stop the sdma engines in the enable() function (diff)
downloadlinux-dev-b2b3d8d952e4f8d6ac2ce80be96b937f29f6e42e.tar.xz
linux-dev-b2b3d8d952e4f8d6ac2ce80be96b937f29f6e42e.zip
drm/radeon/cik: properly set compute ring status on disable
When we disable the rings, set the status properly. If not other code pathes may try and use the rings which are not functional at this point. Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org
Diffstat (limited to '')
-rw-r--r--drivers/gpu/drm/radeon/cik.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c
index e22be8458d92..bbb17841a9e5 100644
--- a/drivers/gpu/drm/radeon/cik.c
+++ b/drivers/gpu/drm/radeon/cik.c
@@ -4134,8 +4134,11 @@ static void cik_cp_compute_enable(struct radeon_device *rdev, bool enable)
{
if (enable)
WREG32(CP_MEC_CNTL, 0);
- else
+ else {
WREG32(CP_MEC_CNTL, (MEC_ME1_HALT | MEC_ME2_HALT));
+ rdev->ring[CAYMAN_RING_TYPE_CP1_INDEX].ready = false;
+ rdev->ring[CAYMAN_RING_TYPE_CP2_INDEX].ready = false;
+ }
udelay(50);
}