[PATCH 3/9] drm/radeon/kms: re-enable gui idle interrupts on r6xx+

Alex Deucher alexdeucher at gmail.com
Fri May 7 14:16:14 PDT 2010


Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
---
 drivers/gpu/drm/radeon/radeon_pm.c |   24 +++++++++++++-----------
 1 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c
index 2eb675e..bded834 100644
--- a/drivers/gpu/drm/radeon/radeon_pm.c
+++ b/drivers/gpu/drm/radeon/radeon_pm.c
@@ -64,17 +64,19 @@ static void radeon_pm_set_clocks(struct radeon_device *rdev, int static_switch)
 	mutex_lock(&rdev->ddev->struct_mutex);
 	mutex_lock(&rdev->vram_mutex);
 	mutex_lock(&rdev->cp.mutex);
-#if 0
-	/* wait for GPU idle */
-	rdev->pm.gui_idle = false;
-	rdev->irq.gui_idle = true;
-	radeon_irq_set(rdev);
-	wait_event_interruptible_timeout(
-		rdev->irq.idle_queue, rdev->pm.gui_idle,
-		msecs_to_jiffies(RADEON_WAIT_IDLE_TIMEOUT));
-	rdev->irq.gui_idle = false;
-	radeon_irq_set(rdev);
-#endif
+
+	/* gui idle int has issues on older chips it seems */
+	if (rdev->family >= CHIP_R600) {
+		/* wait for GPU idle */
+		rdev->pm.gui_idle = false;
+		rdev->irq.gui_idle = true;
+		radeon_irq_set(rdev);
+		wait_event_interruptible_timeout(
+			rdev->irq.idle_queue, rdev->pm.gui_idle,
+			msecs_to_jiffies(RADEON_WAIT_IDLE_TIMEOUT));
+		rdev->irq.gui_idle = false;
+		radeon_irq_set(rdev);
+	}
 	radeon_unmap_vram_bos(rdev);
 
 	if (!static_switch) {
-- 
1.5.6.3



More information about the dri-devel mailing list