From a186e28476ba3af09fca9f3e25a5fdef48e62345 Mon Sep 17 00:00:00 2001 From: Frank Binns Date: Wed, 24 Jul 2024 13:42:44 +0100 Subject: [PATCH] pvr: add handling for retry error in pvr_srv_rgx_submit_transfer2() The caller of pvr_srv_rgx_submit_transfer2() handles VK_NOT_READY, but pvr_srv_rgx_submit_transfer2() would never return this error as it was missing handling for retry errors returned by the PVR_SRV_BRIDGE_RGXTQ_RGXSUBMITTRANSFER2 bridge call. This resulted in pvr_srv_rgx_submit_transfer2() returning VK_ERROR_OUT_OF_DEVICE_MEMORY, which was treated as a device lost error by callers further up the stack. Fixes a hang seen with a release/debugoptimized build when running KHR-GLES3.copy_tex_image_conversions.required.cubemap_negy_cubemap_negy as part of a batch of tests. Signed-off-by: Frank Binns Acked-by: Alyssa Rosenzweig Part-of: --- src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bridge.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bridge.c b/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bridge.c index 8d1d82594b2..7b549ddecb4 100644 --- a/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bridge.c +++ b/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bridge.c @@ -1028,6 +1028,10 @@ VkResult pvr_srv_rgx_submit_transfer2(int fd, &ret, sizeof(ret)); if (result || ret.error != PVR_SRV_OK) { + /* There is no 'retry' VkResult, so treat it as VK_NOT_READY instead. */ + if (result == PVR_SRV_ERROR_RETRY || ret.error == PVR_SRV_ERROR_RETRY) + return VK_NOT_READY; + return vk_bridge_err(VK_ERROR_OUT_OF_DEVICE_MEMORY, "PVR_SRV_BRIDGE_RGXTQ_RGXSUBMITTRANSFER2", ret);