aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/radeon/radeon_pm.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c
index 7ae606600107..2c2c901226f4 100644
--- a/drivers/gpu/drm/radeon/radeon_pm.c
+++ b/drivers/gpu/drm/radeon/radeon_pm.c
@@ -253,18 +253,13 @@ static void radeon_pm_set_clocks(struct radeon_device *rdev)
253 down_write(&rdev->pm.mclk_lock); 253 down_write(&rdev->pm.mclk_lock);
254 mutex_lock(&rdev->ring_lock); 254 mutex_lock(&rdev->ring_lock);
255 255
256 /* gui idle int has issues on older chips it seems */ 256 /* wait for the rings to drain */
257 if (rdev->family >= CHIP_R600) { 257 for (i = 0; i < RADEON_NUM_RINGS; i++) {
258 if (rdev->irq.installed) { 258 struct radeon_ring *ring = &rdev->ring[i];
259 /* wait for GPU to become idle */ 259 if (ring->ready)
260 radeon_irq_kms_wait_gui_idle(rdev); 260 radeon_fence_wait_empty_locked(rdev, i);
261 }
262 } else {
263 struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
264 if (ring->ready) {
265 radeon_fence_wait_empty_locked(rdev, RADEON_RING_TYPE_GFX_INDEX);
266 }
267 } 261 }
262
268 radeon_unmap_vram_bos(rdev); 263 radeon_unmap_vram_bos(rdev);
269 264
270 if (rdev->irq.installed) { 265 if (rdev->irq.installed) {