From d9932a3241cc6a9629d6586ec362583cb77d7a29 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Mon, 26 Apr 2010 16:02:26 -0400 Subject: [PATCH] radeon: Stop the ttm workqueue while reclocking The ttm bo workqueue may touch objects while we're reclocking, so make sure it's blocked until we're done. Signed-off-by: Matthew Garrett Signed-off-by: Dave Airlie --- drivers/gpu/drm/radeon/radeon_pm.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c index c9390ea..79d3336 100644 --- a/drivers/gpu/drm/radeon/radeon_pm.c +++ b/drivers/gpu/drm/radeon/radeon_pm.c @@ -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)); -- 2.7.4