]> git.baikalelectronics.ru Git - kernel.git/commit
MIPS: Fix C0_Pagegrain[IEC] support.
authorDavid Daney <david.daney@cavium.com>
Tue, 6 Jan 2015 18:42:23 +0000 (10:42 -0800)
committerRalf Baechle <ralf@linux-mips.org>
Fri, 30 Jan 2015 23:44:08 +0000 (00:44 +0100)
commit1bbc9350fa4db954ef90e03f91d06b8e9902283e
treedb757efcf8ad45f7b2efa0a27c1886488af94946
parentc5667fc3a5f9c7633fef450c934bd4c1626d46d5
MIPS: Fix C0_Pagegrain[IEC] support.

The following commits:

  0c7a0d01d64934 (MIPS: Use dedicated exception handler if CPU supports RI/XI exceptions)
  60a063a343aeba (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.

Signed-off-by: David Daney <david.daney@cavium.com>
Cc: <stable@vger.kernel.org>
Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: http://patchwork.linux-mips.org/patch/8880/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/mm/tlb-r4k.c