radeonsi: Disable asynchronous DMA except for PIPE_BUFFER
authorMichel Dänzer <michel.daenzer@amd.com>
Tue, 11 Nov 2014 07:10:20 +0000 (16:10 +0900)
committerMichel Dänzer <michel@daenzer.net>
Mon, 17 Nov 2014 07:17:52 +0000 (16:17 +0900)
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" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Grigori Goronzy <greg@chown.ath.cx>
src/gallium/drivers/radeonsi/si_dma.c

index b1bd5e706c2656f4705c76ed653c9ddf840c9736..db523eef3185c5e22cd19f928e3c9acf36a488c4 100644 (file)
@@ -250,6 +250,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 ||
            rdst->cmask.size || rdst->fmask.size ||