All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] MIPS: Fix C0_Pagegrain[IEC] support.
@ 2014-12-20  1:15 David Daney
  2014-12-20  1:18   ` David Daney
  2014-12-20  1:21   ` Leonid Yegoshin
  0 siblings, 2 replies; 10+ messages in thread
From: David Daney @ 2014-12-20  1:15 UTC (permalink / raw)
  To: linux-mips, ralf; +Cc: David Daney, Leonid Yegoshin

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

If we are generating TLB exception expecting separate vectors, we must
enable the feature.

Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
Signed-off-by: David Daney <david.daney@cavium.com>
---

Very lightly tested, but it seems to make my XI and RI tests work on
OCTEON II CPUs, which have the C0_Pagegrain[IEC] bit.

 arch/mips/mm/tlb-r4k.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/mips/mm/tlb-r4k.c b/arch/mips/mm/tlb-r4k.c
index e90b2e8..30639a6 100644
--- a/arch/mips/mm/tlb-r4k.c
+++ b/arch/mips/mm/tlb-r4k.c
@@ -489,6 +489,8 @@ static void r4k_tlb_configure(void)
 #ifdef CONFIG_64BIT
 		pg |= PG_ELPA;
 #endif
+		if (cpu_has_rixiex)
+			pg |= PG_IEC;
 		write_c0_pagegrain(pg);
 	}
 
-- 
1.7.11.7

^ permalink raw reply related	[flat|nested] 10+ messages in thread
* [PATCH] MIPS: Fix C0_Pagegrain[IEC] support.
@ 2015-01-06 18:42 ` David Daney
  0 siblings, 0 replies; 10+ messages in thread
From: David Daney @ 2015-01-06 18:42 UTC (permalink / raw)
  To: linux-mips, ralf; +Cc: David Daney, stable, Leonid Yegoshin

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

The following commits:

  5890f70f15c52d (MIPS: Use dedicated exception handler if CPU supports RI/XI exceptions)
  6575b1d4173eae (MIPS: kernel: cpu-probe: Detect unique RI/XI exceptions)

break the kernel for *all* existing MIPS CPUs that implement the
CP0_PageGrain[IEC] bit.  They cause the TLB exception handlers to be
generated without the legacy execute-inhibit handling, but never set
the CP0_PageGrain[IEC] bit to activate the use of dedicated exception
vectors for execute-inhibit exceptions.  The result is that upon
detection of an execute-inhibit violation, we loop forever in the TLB
exception handlers instead of sending SIGSEGV to the task.

If we are generating TLB exception handlers expecting separate
vectors, we must also enable the CP0_PageGrain[IEC] feature.

The bug was introduced in kernel version 3.17.

Cc: <stable@vger.kernel.org>
Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
Signed-off-by: David Daney <david.daney@cavium.com>
---

This is the same patch sent 19/12/2014 with an improved changlog and Cc list.

 arch/mips/mm/tlb-r4k.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/mips/mm/tlb-r4k.c b/arch/mips/mm/tlb-r4k.c
index e90b2e8..30639a6 100644
--- a/arch/mips/mm/tlb-r4k.c
+++ b/arch/mips/mm/tlb-r4k.c
@@ -489,6 +489,8 @@ static void r4k_tlb_configure(void)
 #ifdef CONFIG_64BIT
 		pg |= PG_ELPA;
 #endif
+		if (cpu_has_rixiex)
+			pg |= PG_IEC;
 		write_c0_pagegrain(pg);
 	}
 
-- 
1.7.11.7

^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-01-06 18:42 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-20  1:15 [PATCH] MIPS: Fix C0_Pagegrain[IEC] support David Daney
2014-12-20  1:18 ` David Daney
2014-12-20  1:18   ` David Daney
2014-12-20  1:21 ` Leonid Yegoshin
2014-12-20  1:21   ` Leonid Yegoshin
2014-12-20  1:26   ` David Daney
2014-12-20  1:39     ` Leonid Yegoshin
2014-12-20  1:39       ` Leonid Yegoshin
  -- strict thread matches above, loose matches on Subject: below --
2015-01-06 18:42 David Daney
2015-01-06 18:42 ` David Daney

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.