From: Abhishek Paliwal <abhishek.pali...@aricent.com>

From: David Daney <david.da...@cavium.com>

We need to temporarily disable TLB Parity checks early in the handler
so we don't get into an endless loop.

The meaning of cvmmemctl[44] changed, 0 means enabled.

Bug #8300

Signed-off-by: David Daney <david.da...@cavium.com>
Signed-off-by: Leonid Rosenboim <lrosenb...@caviumnetworks.com>
Signed-off-by: Chandrakala Chavva <ccha...@caviumnetworks.com>
Signed-off-by: Abhishek Paliwal <abhishek.pali...@aricent.com>
---
 arch/mips/kernel/genex.S | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/arch/mips/kernel/genex.S b/arch/mips/kernel/genex.S
index d84f6a5..03a878c 100644
--- a/arch/mips/kernel/genex.S
+++ b/arch/mips/kernel/genex.S
@@ -404,6 +404,26 @@ NESTED(nmi_handler, PT_SIZE, sp)
        TRACE_IRQS_OFF
        .endm
 
+       .macro  __build_clear_mce
+#ifdef CONFIG_CPU_CAVIUM_OCTEON
+       /* Disable TLB Parity checks. */
+       mfc0    t2, $15,0
+       and     t2, 0xff00
+       dli     t0, 0x9500
+       /* In Octeon3 setting bit 44 disables TLB parity */
+       slt     t2, t2, t0
+       dmfc0   t0, $11, 7
+       dli     t1, (1 << 44)
+       or      t0, t0, t1
+       beqz    t2, 11f
+       nop
+       xor     t0, t0, t1
+11 :
+       dmtc0   t0, $11, 7
+#endif
+       __build_clear_cli
+       .endm
+
        .macro  __build_clear_fpe
        .set    push
        /* gas fails to assemble cfc1 for some archs (octeon).*/ \
-- 
1.8.1.4

-- 
_______________________________________________
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto

Reply via email to