]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/gpu/drm/radeon/radeon_pm.c
radeon: Stop the ttm workqueue while reclocking
[net-next-2.6.git] / drivers / gpu / drm / radeon / radeon_pm.c
index c9390ea56f9688036b9567afdfa6c0a94bf52e0a..79d3336eede57ae399ee23127d637aadad88dadd 100644 (file)
@@ -460,9 +460,11 @@ bool radeon_pm_debug_check_in_vbl(struct radeon_device *rdev, bool finish)
 static void radeon_pm_idle_work_handler(struct work_struct *work)
 {
        struct radeon_device *rdev;
+       int resched;
        rdev = container_of(work, struct radeon_device,
                                pm.idle_work.work);
 
+       resched = ttm_bo_lock_delayed_workqueue(&rdev->mman.bdev);
        mutex_lock(&rdev->ddev->struct_mutex);
        mutex_lock(&rdev->pm.mutex);
        if (rdev->pm.state == PM_STATE_ACTIVE) {
@@ -509,6 +511,7 @@ static void radeon_pm_idle_work_handler(struct work_struct *work)
        }
        mutex_unlock(&rdev->pm.mutex);
        mutex_unlock(&rdev->ddev->struct_mutex);
+       ttm_bo_unlock_delayed_workqueue(&rdev->mman.bdev, resched);
 
        queue_delayed_work(rdev->wq, &rdev->pm.idle_work,
                                        msecs_to_jiffies(RADEON_IDLE_LOOP_MS));