Mesa (master): radv: return VK_ERROR_DEVICE_LOST if wait-for-idle failed or expired

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sun Jul 12 11:50:14 UTC 2020


Module: Mesa
Branch: master
Commit: 55776a0ae0660d730293f11b435dc055753774fd
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=55776a0ae0660d730293f11b435dc055753774fd

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Fri Jul 10 14:45:19 2020 +0200

radv: return VK_ERROR_DEVICE_LOST if wait-for-idle failed or expired

When ctx_wait_idle failed, something really bad happened likely
a GPU hang. Make sure to return the appropriate Vulkan error code
in this case.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5843>

---

 src/amd/vulkan/radv_device.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index 7a67f31fef7..58299a0e0e4 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -5024,9 +5024,11 @@ VkResult radv_QueueWaitIdle(
 	}
 	pthread_mutex_unlock(&queue->pending_mutex);
 
-	queue->device->ws->ctx_wait_idle(queue->hw_ctx,
-	                                 radv_queue_family_to_ring(queue->queue_family_index),
-	                                 queue->queue_idx);
+	if (!queue->device->ws->ctx_wait_idle(queue->hw_ctx,
+					      radv_queue_family_to_ring(queue->queue_family_index),
+					      queue->queue_idx))
+		return VK_ERROR_DEVICE_LOST;
+
 	return VK_SUCCESS;
 }
 
@@ -5037,7 +5039,11 @@ VkResult radv_DeviceWaitIdle(
 
 	for (unsigned i = 0; i < RADV_MAX_QUEUE_FAMILIES; i++) {
 		for (unsigned q = 0; q < device->queue_count[i]; q++) {
-			radv_QueueWaitIdle(radv_queue_to_handle(&device->queues[i][q]));
+			VkResult result =
+				radv_QueueWaitIdle(radv_queue_to_handle(&device->queues[i][q]));
+
+			if (result != VK_SUCCESS)
+				return result;
 		}
 	}
 	return VK_SUCCESS;



More information about the mesa-commit mailing list