• David Daney's avatar
    MIPS: Fix C0_Pagegrain[IEC] support. · 9ead8632
    David Daney authored
    The following commits:
    
      5890f70f (MIPS: Use dedicated exception handler if CPU supports RI/XI exceptions)
      6575b1d4 (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: default avatarDavid 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: default avatarRalf Baechle <ralf@linux-mips.org>
    9ead8632
tlb-r4k.c 12.1 KB