summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/radeon/radeon_device.c
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2014-08-27 17:22:01 +0400
committerAlex Deucher <alexander.deucher@amd.com>2014-08-28 01:42:13 +0400
commit3c0363891c0fa5d17b683b758bff0d81fa6a9775 (patch)
tree337fd0eafeee1d0fcab6f3181ee28b7d2b7eb7c0 /drivers/gpu/drm/radeon/radeon_device.c
parentd6d5c5b8364bcc4d52cddc68bcb0a330d2af20f3 (diff)
downloadlinux-3c0363891c0fa5d17b683b758bff0d81fa6a9775.tar.xz
drm/radeon: drop doing resets in a work item
Blocking completely innocent processes with a GPU reset is a pretty bad idea. Just set needs_reset and let the next command submission or fence wait do the job. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@canonical.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_device.c')
-rw-r--r--drivers/gpu/drm/radeon/radeon_device.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
index 9f666370b5ac..d30f1cc1aa12 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -1673,9 +1673,6 @@ int radeon_gpu_reset(struct radeon_device *rdev)
return 0;
}
- rdev->in_reset = true;
- rdev->needs_reset = false;
-
radeon_save_bios_scratch_regs(rdev);
/* block TTM */
resched = ttm_bo_lock_delayed_workqueue(&rdev->mman.bdev);
@@ -1738,6 +1735,10 @@ int radeon_gpu_reset(struct radeon_device *rdev)
radeon_hpd_init(rdev);
ttm_bo_unlock_delayed_workqueue(&rdev->mman.bdev, resched);
+
+ rdev->in_reset = true;
+ rdev->needs_reset = false;
+
downgrade_write(&rdev->exclusive_lock);
drm_helper_resume_force_mode(rdev->ddev);