ソースを参照

drm/radeon/kms: re-enable gui idle interrupts on r6xx+

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Alex Deucher 15 年 前
コミット
4f3218cbc3
1 ファイル変更13 行追加11 行削除
  1. 13 11
      drivers/gpu/drm/radeon/radeon_pm.c

+ 13 - 11
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) {