diff options
author | Christian König <deathsimple@vodafone.de> | 2012-05-02 15:11:19 +0200 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2012-05-03 09:16:31 +0100 |
commit | 6c6f478370eccfbfafbdc6fc55c0def03e58f124 (patch) | |
tree | 3fee8223bea4d761b50a146e8b55c666e81ab9e1 /drivers/gpu/drm/radeon/radeon_device.c | |
parent | 8f676c4c6f0f500616560f13c0276ab6b4e39a6a (diff) | |
download | op-kernel-dev-6c6f478370eccfbfafbdc6fc55c0def03e58f124.zip op-kernel-dev-6c6f478370eccfbfafbdc6fc55c0def03e58f124.tar.gz |
drm/radeon: rework recursive gpu reset handling
Instead of all this humpy pumpy with recursive
mutex (which also fixes only halve of the problem)
move the actual gpu reset out of the fence code,
return -EDEADLK and then reset the gpu in the
calling ioctl function.
v2: Split removal of radeon_mutex into separate patch.
Return -EAGAIN if reset is successful.
Signed-off-by: Christian König <deathsimple@vodafone.de>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_device.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_device.c | 5 |
1 files changed, 0 insertions, 5 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c index 89be94b..d18f0c4 100644 --- a/drivers/gpu/drm/radeon/radeon_device.c +++ b/drivers/gpu/drm/radeon/radeon_device.c @@ -986,9 +986,6 @@ int radeon_gpu_reset(struct radeon_device *rdev) int r; int resched; - /* Prevent CS ioctl from interfering */ - radeon_mutex_lock(&rdev->cs_mutex); - radeon_save_bios_scratch_regs(rdev); /* block TTM */ resched = ttm_bo_lock_delayed_workqueue(&rdev->mman.bdev); @@ -1003,8 +1000,6 @@ int radeon_gpu_reset(struct radeon_device *rdev) ttm_bo_unlock_delayed_workqueue(&rdev->mman.bdev, resched); } - radeon_mutex_unlock(&rdev->cs_mutex); - if (r) { /* bad news, how to tell it to userspace ? */ dev_info(rdev->dev, "GPU reset failed\n"); |