From f02f0559c69daae6ca73e72d32dc329fcb2fd316 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Date: Tue, 11 Nov 2014 16:10:20 +0900 Subject: [PATCH] radeonsi: Disable asynchronous DMA except for PIPE_BUFFER MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Using the asynchronous DMA engine for multi-dimensional operations seems to cause random GPU lockups for various people. While the root cause for this might need to be fixed in the kernel, let's disable it for now. Before re-enabling this, please make sure you can hit all newly enabled paths in your testing, preferably with both piglit and real world apps, and get in touch with people on the bug reports below for stability testing. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=85647 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83500 Cc: "10.3 10.4" Reviewed-by: Marek Olšák Reviewed-by: Grigori Goronzy (cherry picked from commit ae4536b4f71cbe76230ea7edc7eb4d6041e651b4) --- src/gallium/drivers/radeonsi/si_dma.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/gallium/drivers/radeonsi/si_dma.c b/src/gallium/drivers/radeonsi/si_dma.c index a69f533c743..835225396da 100644 --- a/src/gallium/drivers/radeonsi/si_dma.c +++ b/src/gallium/drivers/radeonsi/si_dma.c @@ -270,6 +270,21 @@ void si_dma_copy(struct pipe_context *ctx, return; } + /* XXX: Using the asynchronous DMA engine for multi-dimensional + * operations seems to cause random GPU lockups for various people. + * While the root cause for this might need to be fixed in the kernel, + * let's disable it for now. + * + * Before re-enabling this, please make sure you can hit all newly + * enabled paths in your testing, preferably with both piglit and real + * world apps, and get in touch with people on the bug reports below + * for stability testing. + * + * https://bugs.freedesktop.org/show_bug.cgi?id=85647 + * https://bugs.freedesktop.org/show_bug.cgi?id=83500 + */ + goto fallback; + if (src->format != dst->format || src_box->depth > 1 || rdst->dirty_level_mask != 0) { goto fallback;