Skip to content

Commit

Permalink
MIPS: Print CM error reports upon bus errors
Browse files Browse the repository at this point in the history
If a bus error occurs on a system with a MIPS Coherence Manager (CM)
then the CM may hold useful diagnostic information. Printing this out
has so far been left up to boards, with the requirement that they
register a board_be_handler function & call mips_cm_error_decode() from
there.

In order to avoid boards other than Malta needing to duplicate this
code, call mips_cm_error_decode() automatically if the board registers
no board_be_handler, and remove the Malta implementation of that.

This patch results in no functional change, but removes a further piece
of platform-specific code.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/14350/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
  • Loading branch information
Paul Burton authored and Ralf Baechle committed Oct 6, 2016
1 parent 20d3306 commit dabdc18
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 21 deletions.
3 changes: 3 additions & 0 deletions arch/mips/kernel/traps.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
#include <asm/fpu.h>
#include <asm/fpu_emulator.h>
#include <asm/idle.h>
#include <asm/mips-cm.h>
#include <asm/mips-r2-to-r6-emul.h>
#include <asm/mipsregs.h>
#include <asm/mipsmtregs.h>
Expand Down Expand Up @@ -445,6 +446,8 @@ asmlinkage void do_be(struct pt_regs *regs)

if (board_be_handler)
action = board_be_handler(regs, fixup != NULL);
else
mips_cm_error_report();

switch (action) {
case MIPS_BE_DISCARD:
Expand Down
15 changes: 0 additions & 15 deletions arch/mips/mti-malta/malta-int.c
Original file line number Diff line number Diff line change
Expand Up @@ -290,18 +290,3 @@ void __init arch_init_irq(void)

setup_irq(corehi_irq, &corehi_irqaction);
}

void malta_be_init(void)
{
/* Could change CM error mask register. */
}

int malta_be_handler(struct pt_regs *regs, int is_fixup)
{
/* This duplicates the handling in do_be which seems wrong */
int retval = is_fixup ? MIPS_BE_FIXUP : MIPS_BE_FATAL;

mips_cm_error_report();

return retval;
}
6 changes: 0 additions & 6 deletions arch/mips/mti-malta/malta-setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,6 @@
#define ROCIT_CONFIG_GEN0 0x1f403000
#define ROCIT_CONFIG_GEN0_PCI_IOCU BIT(7)

extern void malta_be_init(void);
extern int malta_be_handler(struct pt_regs *regs, int is_fixup);

static struct resource standard_io_resources[] = {
{
.name = "dma1",
Expand Down Expand Up @@ -301,7 +298,4 @@ void __init plat_mem_setup(void)
#if defined(CONFIG_VT) && defined(CONFIG_VGA_CONSOLE)
screen_info_setup();
#endif

board_be_init = malta_be_init;
board_be_handler = malta_be_handler;
}

0 comments on commit dabdc18

Please sign in to comment.