From e248390e93d025472d55b89252216895bc895a74 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Thu, 19 Jan 2017 20:44:49 +0100 Subject: [PATCH] winsys/amdgpu: drop all IBs if at least one was rejected within the context MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The corruption is inevitable and hangs are possible too. Reviewed-by: Nicolai Hähnle --- src/gallium/winsys/amdgpu/drm/amdgpu_cs.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c index d63ff362a00..0bc4ce941b0 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c @@ -1039,11 +1039,17 @@ void amdgpu_cs_submit_ib(void *job, int thread_index) goto cleanup; } - r = amdgpu_cs_submit(acs->ctx->ctx, 0, &cs->request, 1); + if (acs->ctx->num_rejected_cs) + r = -ECANCELED; + else + r = amdgpu_cs_submit(acs->ctx->ctx, 0, &cs->request, 1); + cs->error_code = r; if (r) { if (r == -ENOMEM) fprintf(stderr, "amdgpu: Not enough memory for command submission.\n"); + else if (r == -ECANCELED) + fprintf(stderr, "amdgpu: The CS has been cancelled because the context is lost.\n"); else fprintf(stderr, "amdgpu: The CS has been rejected, " "see dmesg for more information (%i).\n", r); -- 2.30.2