diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_fence.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_fence.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_fence.c b/drivers/gpu/drm/radeon/radeon_fence.c index 410a975a8eec..a9b0fa5608eb 100644 --- a/drivers/gpu/drm/radeon/radeon_fence.c +++ b/drivers/gpu/drm/radeon/radeon_fence.c | |||
@@ -868,6 +868,25 @@ void radeon_fence_driver_fini(struct radeon_device *rdev) | |||
868 | mutex_unlock(&rdev->ring_lock); | 868 | mutex_unlock(&rdev->ring_lock); |
869 | } | 869 | } |
870 | 870 | ||
871 | /** | ||
872 | * radeon_fence_driver_force_completion - force all fence waiter to complete | ||
873 | * | ||
874 | * @rdev: radeon device pointer | ||
875 | * | ||
876 | * In case of GPU reset failure make sure no process keep waiting on fence | ||
877 | * that will never complete. | ||
878 | */ | ||
879 | void radeon_fence_driver_force_completion(struct radeon_device *rdev) | ||
880 | { | ||
881 | int ring; | ||
882 | |||
883 | for (ring = 0; ring < RADEON_NUM_RINGS; ring++) { | ||
884 | if (!rdev->fence_drv[ring].initialized) | ||
885 | continue; | ||
886 | radeon_fence_write(rdev, rdev->fence_drv[ring].sync_seq[ring], ring); | ||
887 | } | ||
888 | } | ||
889 | |||
871 | 890 | ||
872 | /* | 891 | /* |
873 | * Fence debugfs | 892 | * Fence debugfs |