ARM: mvebu: completely disable hardware I/O coherency
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Fri, 16 Jan 2015 16:11:27 +0000 (17:11 +0100)
committerAndrew Lunn <andrew@lunn.ch>
Sat, 17 Jan 2015 17:46:55 +0000 (11:46 -0600)
The current hardware I/O coherency is known to cause problems with DMA
coherent buffers, as it still requires explicit I/O synchronization
barriers, which is not compatible with the semantics expected by the
Linux DMA coherent buffers API.

So, in order to have enough time to validate a new solution based on
automatic I/O synchronization barriers, this commit disables hardware
I/O coherency entirely. Future patches will re-enable it.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: <stable@vger.kernel.org> # v3.8+
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
arch/arm/mach-mvebu/coherency.c

index 3585cb394e9b952388e4f26bfb5e950bfd0ad9eb..caa21e9b8cd9819de5ff0c0e505a8a937940dfae 100644 (file)
@@ -246,9 +246,14 @@ static int coherency_type(void)
        return type;
 }
 
+/*
+ * As a precaution, we currently completely disable hardware I/O
+ * coherency, until enough testing is done with automatic I/O
+ * synchronization barriers to validate that it is a proper solution.
+ */
 int coherency_available(void)
 {
-       return coherency_type() != COHERENCY_FABRIC_TYPE_NONE;
+       return false;
 }
 
 int __init coherency_init(void)