summaryrefslogtreecommitdiff
path: root/arch/mips/dec
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/dec')
-rw-r--r--arch/mips/dec/ecc-berr.c16
-rw-r--r--arch/mips/dec/kn01-berr.c6
-rw-r--r--arch/mips/dec/kn02xa-berr.c26
-rw-r--r--arch/mips/dec/prom/init.c2
4 files changed, 31 insertions, 19 deletions
diff --git a/arch/mips/dec/ecc-berr.c b/arch/mips/dec/ecc-berr.c
index 1eb356fdd832..3d41ff07d817 100644
--- a/arch/mips/dec/ecc-berr.c
+++ b/arch/mips/dec/ecc-berr.c
@@ -5,12 +5,13 @@
* 5000/240 (KN03), 5000/260 (KN05) and DECsystem 5900 (KN03),
* 5900/260 (KN05) systems.
*
- * Copyright (c) 2003, 2005 Maciej W. Rozycki
+ * Copyright (c) 2003, 2005, 2026 Maciej W. Rozycki
*/
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
+#include <linux/ratelimit.h>
#include <linux/sched.h>
#include <linux/types.h>
@@ -51,6 +52,10 @@ static int dec_ecc_be_backend(struct pt_regs *regs, int is_fixup, int invoker)
static const char overstr[] = "overrun";
static const char eccstr[] = "ECC error";
+ static DEFINE_RATELIMIT_STATE(rs,
+ DEFAULT_RATELIMIT_INTERVAL,
+ DEFAULT_RATELIMIT_BURST);
+
const char *kind, *agent, *cycle, *event;
const char *status = "", *xbit = "", *fmt = "";
unsigned long address;
@@ -70,7 +75,7 @@ static int dec_ecc_be_backend(struct pt_regs *regs, int is_fixup, int invoker)
if (!(erraddr & KN0X_EAR_VALID)) {
/* No idea what happened. */
- printk(KERN_ALERT "Unidentified bus error %s\n", kind);
+ pr_alert_ratelimited("Unidentified bus error %s\n", kind);
return action;
}
@@ -180,12 +185,13 @@ static int dec_ecc_be_backend(struct pt_regs *regs, int is_fixup, int invoker)
}
}
- if (action != MIPS_BE_FIXUP)
+ if (action != MIPS_BE_FIXUP && __ratelimit(&rs)) {
printk(KERN_ALERT "Bus error %s: %s %s %s at %#010lx\n",
kind, agent, cycle, event, address);
- if (action != MIPS_BE_FIXUP && erraddr & KN0X_EAR_ECCERR)
- printk(fmt, " ECC syndrome ", syn, status, xbit, i);
+ if (erraddr & KN0X_EAR_ECCERR)
+ printk(fmt, " ECC syndrome ", syn, status, xbit, i);
+ }
return action;
}
diff --git a/arch/mips/dec/kn01-berr.c b/arch/mips/dec/kn01-berr.c
index 76efed7bc9f3..27addf7f31c7 100644
--- a/arch/mips/dec/kn01-berr.c
+++ b/arch/mips/dec/kn01-berr.c
@@ -4,7 +4,7 @@
* and 2100 (KN01) systems equipped with parity error detection
* logic.
*
- * Copyright (c) 2005 Maciej W. Rozycki
+ * Copyright (c) 2005, 2026 Maciej W. Rozycki
*/
#include <linux/init.h>
@@ -134,8 +134,8 @@ static int dec_kn01_be_backend(struct pt_regs *regs, int is_fixup, int invoker)
action = MIPS_BE_FIXUP;
if (action != MIPS_BE_FIXUP)
- printk(KERN_ALERT "Bus error %s: %s %s %s at %#010lx\n",
- kind, agent, cycle, event, address);
+ pr_alert_ratelimited("Bus error %s: %s %s %s at %#010lx\n",
+ kind, agent, cycle, event, address);
return action;
}
diff --git a/arch/mips/dec/kn02xa-berr.c b/arch/mips/dec/kn02xa-berr.c
index 9699fc4e6eb1..6e494db1e437 100644
--- a/arch/mips/dec/kn02xa-berr.c
+++ b/arch/mips/dec/kn02xa-berr.c
@@ -6,12 +6,13 @@
* DECstation/DECsystem 5000/20, /25, /33 (KN02-CA), 5000/50
* (KN04-CA) systems.
*
- * Copyright (c) 2005 Maciej W. Rozycki
+ * Copyright (c) 2005, 2026 Maciej W. Rozycki
*/
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
+#include <linux/ratelimit.h>
#include <linux/types.h>
#include <asm/addrspace.h>
@@ -50,6 +51,10 @@ static int dec_kn02xa_be_backend(struct pt_regs *regs, int is_fixup,
static const char paritystr[] = "parity error";
static const char lanestat[][4] = { " OK", "BAD" };
+ static DEFINE_RATELIMIT_STATE(rs,
+ DEFAULT_RATELIMIT_INTERVAL,
+ DEFAULT_RATELIMIT_BURST);
+
const char *kind, *agent, *cycle, *event;
unsigned long address;
@@ -79,18 +84,19 @@ static int dec_kn02xa_be_backend(struct pt_regs *regs, int is_fixup,
if (is_fixup)
action = MIPS_BE_FIXUP;
- if (action != MIPS_BE_FIXUP)
+ if (action != MIPS_BE_FIXUP && __ratelimit(&rs)) {
printk(KERN_ALERT "Bus error %s: %s %s %s at %#010lx\n",
kind, agent, cycle, event, address);
- if (action != MIPS_BE_FIXUP && address < 0x10000000)
- printk(KERN_ALERT " Byte lane status %#3x -- "
- "#3: %s, #2: %s, #1: %s, #0: %s\n",
- (mer & KN02XA_MER_BYTERR) >> 8,
- lanestat[(mer & KN02XA_MER_BYTERR_3) != 0],
- lanestat[(mer & KN02XA_MER_BYTERR_2) != 0],
- lanestat[(mer & KN02XA_MER_BYTERR_1) != 0],
- lanestat[(mer & KN02XA_MER_BYTERR_0) != 0]);
+ if (address < 0x10000000)
+ printk(KERN_ALERT " Byte lane status %#3x -- "
+ "#3: %s, #2: %s, #1: %s, #0: %s\n",
+ (mer & KN02XA_MER_BYTERR) >> 8,
+ lanestat[(mer & KN02XA_MER_BYTERR_3) != 0],
+ lanestat[(mer & KN02XA_MER_BYTERR_2) != 0],
+ lanestat[(mer & KN02XA_MER_BYTERR_1) != 0],
+ lanestat[(mer & KN02XA_MER_BYTERR_0) != 0]);
+ }
return action;
}
diff --git a/arch/mips/dec/prom/init.c b/arch/mips/dec/prom/init.c
index cb12eb211a49..8d74d7d6c05b 100644
--- a/arch/mips/dec/prom/init.c
+++ b/arch/mips/dec/prom/init.c
@@ -42,7 +42,7 @@ int (*__pmax_close)(int);
* Detect which PROM the DECSTATION has, and set the callback vectors
* appropriately.
*/
-void __init which_prom(s32 magic, s32 *prom_vec)
+static void __init which_prom(s32 magic, s32 *prom_vec)
{
/*
* No sign of the REX PROM's magic number means we assume a non-REX