| From foo@baz Sun Jun 17 12:07:33 CEST 2018 |
| From: Sinan Kaya <okaya@codeaurora.org> |
| Date: Tue, 3 Apr 2018 08:55:03 -0400 |
| Subject: MIPS: io: Prevent compiler reordering writeX() |
| |
| From: Sinan Kaya <okaya@codeaurora.org> |
| |
| [ Upstream commit f6b7aeee8f167409195fbf1364d02988fecad1d0 ] |
| |
| writeX() has strong ordering semantics with respect to memory updates. |
| In the absence of a write barrier or a compiler barrier, the compiler |
| can reorder register and memory update instructions. This breaks the |
| writeX() API. |
| |
| Signed-off-by: Sinan Kaya <okaya@codeaurora.org> |
| Cc: Arnd Bergmann <arnd@arndb.de> |
| Cc: Ralf Baechle <ralf@linux-mips.org> |
| Cc: Paul Burton <paul.burton@mips.com> |
| Cc: linux-mips@linux-mips.org |
| Patchwork: https://patchwork.linux-mips.org/patch/18997/ |
| [jhogan@kernel.org: Tidy commit message] |
| Signed-off-by: James Hogan <jhogan@kernel.org> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/mips/include/asm/io.h | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/arch/mips/include/asm/io.h |
| +++ b/arch/mips/include/asm/io.h |
| @@ -307,7 +307,7 @@ static inline void iounmap(const volatil |
| #if defined(CONFIG_CPU_CAVIUM_OCTEON) || defined(CONFIG_LOONGSON3_ENHANCEMENT) |
| #define war_io_reorder_wmb() wmb() |
| #else |
| -#define war_io_reorder_wmb() do { } while (0) |
| +#define war_io_reorder_wmb() barrier() |
| #endif |
| |
| #define __BUILD_MEMORY_SINGLE(pfx, bwlq, type, irq) \ |