[linux-yocto] [PATCH 12/17] misc: lsi-smmon: Add parameter panic_on_fatal

2014-07-09 Thread Charlie Paul
From: Anders Berg anders.b...@avagotech.com

Added module parameter panic_on_fatal which when set will cause the driver
to call panic() when an uncorrectable ECC error is detected.

Signed-off-by: Anders Berg anders.b...@avagotech.com
---
 drivers/misc/lsi-smmon.c |   27 ++-
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/drivers/misc/lsi-smmon.c b/drivers/misc/lsi-smmon.c
index d263df9..88f291a 100644
--- a/drivers/misc/lsi-smmon.c
+++ b/drivers/misc/lsi-smmon.c
@@ -24,6 +24,10 @@ static int log = 1;
 module_param(log, int, S_IRUGO|S_IWUSR);
 MODULE_PARM_DESC(log, Log each error to kernel log.);
 
+static int panic_on_fatal = 1;
+module_param(panic_on_fatal, int, S_IRUGO|S_IWUSR);
+MODULE_PARM_DESC(panic_on_fatal, Panic on fatal error.);
+
 /*
   AXM55xx memory controller interrupt status bits:
 
@@ -96,18 +100,19 @@ static const u32 event_mask[NR_EVENTS] = {
 };
 
 static const struct event_logging {
+   int fatal;
const char *level;
const char *name;
 } event_logging[NR_EVENTS] = {
-   [EV_ILLEGAL] = {KERN_ERR, Illegal access},
-   [EV_MULT_ILLEGAL]= {KERN_ERR, Illegal access},
-   [EV_CORR_ECC]= {KERN_NOTICE, Correctable ECC error},
-   [EV_MULT_CORR_ECC]   = {KERN_NOTICE, Correctable ECC error},
-   [EV_UNCORR_ECC]  = {KERN_CRIT, Uncorrectable ECC error},
-   [EV_MULT_UNCORR_ECC] = {KERN_CRIT, Uncorrectable ECC error},
-   [EV_PORT_ERROR]  = {KERN_CRIT, Port error},
-   [EV_WRAP_ERROR]  = {KERN_CRIT, Wrap error},
-   [EV_PARITY_ERROR]= {KERN_CRIT, Parity error},
+   [EV_ILLEGAL] = {0, KERN_ERR, Illegal access},
+   [EV_MULT_ILLEGAL]= {0, KERN_ERR, Illegal access},
+   [EV_CORR_ECC]= {0, KERN_NOTICE, Correctable ECC error},
+   [EV_MULT_CORR_ECC]   = {0, KERN_NOTICE, Correctable ECC error},
+   [EV_UNCORR_ECC]  = {1, KERN_CRIT, Uncorrectable ECC error},
+   [EV_MULT_UNCORR_ECC] = {1, KERN_CRIT, Uncorrectable ECC error},
+   [EV_PORT_ERROR]  = {0, KERN_CRIT, Port error},
+   [EV_WRAP_ERROR]  = {0, KERN_CRIT, Wrap error},
+   [EV_PARITY_ERROR]= {0, KERN_CRIT, Parity error},
 };
 
 struct smmon_attr {
@@ -181,6 +186,10 @@ static irqreturn_t smmon_isr(int interrupt, void *device)
for (i = 0; i  NR_EVENTS; ++i) {
if ((status  event_mask[i]) != 0) {
++sm-counter[i];
+   if (panic_on_fatal  event_logging[i].fatal)
+   panic(%s (%s)\n,
+ event_logging[i].name,
+ dev_name(sm-pdev-dev));
if (log)
printk_ratelimited(%s%s: %s\n,
   event_logging[i].level,
-- 
1.7.9.5

-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


[linux-yocto] [PATCH 12/17] misc: lsi-smmon: Add parameter panic_on_fatal

2014-07-08 Thread Charlie Paul
From: Anders Berg anders.b...@avagotech.com

Added module parameter panic_on_fatal which when set will cause the driver
to call panic() when an uncorrectable ECC error is detected.

Signed-off-by: Anders Berg anders.b...@avagotech.com
---
 drivers/misc/lsi-smmon.c |   27 ++-
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/drivers/misc/lsi-smmon.c b/drivers/misc/lsi-smmon.c
index d263df9..88f291a 100644
--- a/drivers/misc/lsi-smmon.c
+++ b/drivers/misc/lsi-smmon.c
@@ -24,6 +24,10 @@ static int log = 1;
 module_param(log, int, S_IRUGO|S_IWUSR);
 MODULE_PARM_DESC(log, Log each error to kernel log.);
 
+static int panic_on_fatal = 1;
+module_param(panic_on_fatal, int, S_IRUGO|S_IWUSR);
+MODULE_PARM_DESC(panic_on_fatal, Panic on fatal error.);
+
 /*
   AXM55xx memory controller interrupt status bits:
 
@@ -96,18 +100,19 @@ static const u32 event_mask[NR_EVENTS] = {
 };
 
 static const struct event_logging {
+   int fatal;
const char *level;
const char *name;
 } event_logging[NR_EVENTS] = {
-   [EV_ILLEGAL] = {KERN_ERR, Illegal access},
-   [EV_MULT_ILLEGAL]= {KERN_ERR, Illegal access},
-   [EV_CORR_ECC]= {KERN_NOTICE, Correctable ECC error},
-   [EV_MULT_CORR_ECC]   = {KERN_NOTICE, Correctable ECC error},
-   [EV_UNCORR_ECC]  = {KERN_CRIT, Uncorrectable ECC error},
-   [EV_MULT_UNCORR_ECC] = {KERN_CRIT, Uncorrectable ECC error},
-   [EV_PORT_ERROR]  = {KERN_CRIT, Port error},
-   [EV_WRAP_ERROR]  = {KERN_CRIT, Wrap error},
-   [EV_PARITY_ERROR]= {KERN_CRIT, Parity error},
+   [EV_ILLEGAL] = {0, KERN_ERR, Illegal access},
+   [EV_MULT_ILLEGAL]= {0, KERN_ERR, Illegal access},
+   [EV_CORR_ECC]= {0, KERN_NOTICE, Correctable ECC error},
+   [EV_MULT_CORR_ECC]   = {0, KERN_NOTICE, Correctable ECC error},
+   [EV_UNCORR_ECC]  = {1, KERN_CRIT, Uncorrectable ECC error},
+   [EV_MULT_UNCORR_ECC] = {1, KERN_CRIT, Uncorrectable ECC error},
+   [EV_PORT_ERROR]  = {0, KERN_CRIT, Port error},
+   [EV_WRAP_ERROR]  = {0, KERN_CRIT, Wrap error},
+   [EV_PARITY_ERROR]= {0, KERN_CRIT, Parity error},
 };
 
 struct smmon_attr {
@@ -181,6 +186,10 @@ static irqreturn_t smmon_isr(int interrupt, void *device)
for (i = 0; i  NR_EVENTS; ++i) {
if ((status  event_mask[i]) != 0) {
++sm-counter[i];
+   if (panic_on_fatal  event_logging[i].fatal)
+   panic(%s (%s)\n,
+ event_logging[i].name,
+ dev_name(sm-pdev-dev));
if (log)
printk_ratelimited(%s%s: %s\n,
   event_logging[i].level,
-- 
1.7.9.5

-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto