From c58cff3ce42f1e2f3b76d7798a302254cc347ea9 Mon Sep 17 00:00:00 2001 From: Joshua Ashton Date: Mon, 15 Jan 2024 20:29:44 +0000 Subject: [PATCH] radv/amdgpu: Handle -ENODATA and -ETIME from cs_submit This can be sent in the event of a soft/hard recovery. Signed-off-by: Joshua Ashton Reviewed-by: Samuel Pitoiset Reviewed-by: Friedrich Vock Part-of: --- src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c index 5f753a2203a..7dd1ccddc79 100644 --- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c +++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c @@ -1767,7 +1767,16 @@ radv_amdgpu_cs_submit(struct radv_amdgpu_ctx *ctx, struct radv_amdgpu_cs_request fprintf(stderr, "radv/amdgpu: Not enough memory for command submission.\n"); result = VK_ERROR_OUT_OF_HOST_MEMORY; } else if (r == -ECANCELED) { - fprintf(stderr, "radv/amdgpu: The CS has been cancelled because the context is lost.\n"); + fprintf(stderr, + "radv/amdgpu: The CS has been cancelled because the context is lost. This context is innocent.\n"); + result = VK_ERROR_DEVICE_LOST; + } else if (r == -ENODATA) { + fprintf(stderr, "radv/amdgpu: The CS has been cancelled because the context is lost. This context is guilty " + "of a soft recovery.\n"); + result = VK_ERROR_DEVICE_LOST; + } else if (r == -ETIME) { + fprintf(stderr, "radv/amdgpu: The CS has been cancelled because the context is lost. This context is guilty " + "of a hard recovery.\n"); result = VK_ERROR_DEVICE_LOST; } else { fprintf(stderr,