diff options
author | Scott Wood <scottwood@freescale.com> | 2015-07-18 15:24:58 -0400 |
---|---|---|
committer | Scott Wood <scottwood@freescale.com> | 2015-08-08 00:00:01 -0400 |
commit | c60232029aee84f69da0e74aa6f6d249edbbc80b (patch) | |
tree | f56c5b4928f84e47a308a8d4adf664d0d34e4839 /arch/powerpc/include/asm/pte-common.h | |
parent | 0d61f0b3e222b588480e2ad1e85bb2ea57561c4b (diff) |
powerpc/fsl: Force coherent memory on e500mc derivatives
In CoreNet systems it is not allowed to mix M and non-M mappings to the
same memory, and coherent DMA accesses are considered to be M mappings
for this purpose. Ignoring this has been observed to cause hard
lockups in non-SMP kernels on e6500.
Furthermore, e6500 implements the LRAT (logical to real address table)
which allows KVM guests to control the WIMGE bits. This means that
KVM cannot force the M bit on the way it usually does, so the guest had
better set it itself.
Signed-off-by: Scott Wood <scottwood@freescale.com>
Diffstat (limited to 'arch/powerpc/include/asm/pte-common.h')
-rw-r--r-- | arch/powerpc/include/asm/pte-common.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/powerpc/include/asm/pte-common.h b/arch/powerpc/include/asm/pte-common.h index b7c8d079c121..71537a319fc8 100644 --- a/arch/powerpc/include/asm/pte-common.h +++ b/arch/powerpc/include/asm/pte-common.h | |||
@@ -109,7 +109,8 @@ extern unsigned long bad_call_to_PMD_PAGE_SIZE(void); | |||
109 | * the processor might need it for DMA coherency. | 109 | * the processor might need it for DMA coherency. |
110 | */ | 110 | */ |
111 | #define _PAGE_BASE_NC (_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_PSIZE) | 111 | #define _PAGE_BASE_NC (_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_PSIZE) |
112 | #if defined(CONFIG_SMP) || defined(CONFIG_PPC_STD_MMU) | 112 | #if defined(CONFIG_SMP) || defined(CONFIG_PPC_STD_MMU) || \ |
113 | defined(CONFIG_PPC_E500MC) | ||
113 | #define _PAGE_BASE (_PAGE_BASE_NC | _PAGE_COHERENT) | 114 | #define _PAGE_BASE (_PAGE_BASE_NC | _PAGE_COHERENT) |
114 | #else | 115 | #else |
115 | #define _PAGE_BASE (_PAGE_BASE_NC) | 116 | #define _PAGE_BASE (_PAGE_BASE_NC) |