]> www.infradead.org Git - users/mchehab/rasdaemon.git/commitdiff
mce-intel: simplify code and add an user_action field
authorMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 18 May 2013 08:23:48 +0000 (05:23 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 18 May 2013 08:25:17 +0000 (05:25 -0300)
While for pure print messages, the user recommended action can be
together with the error message, having it in a separate field
helps to latter handle the error. So, split it.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
mce-intel.c
ras-mce-handler.c
ras-mce-handler.h

index c5ab42ca92e73cb2024cff335d57e329b46e06d9..fc03e8b8f325ffee14a752fbc5af3d54344bd2b3 100644 (file)
 
 static decode_termal_bank(struct mce_event *e)
 {
-       if (e->status & 1)
-               sprintf(e->error_msg, "Processor %d heated above trip temperature. Throttling enabled. Please check your system cooling. Performance will be impacted", e->cpu);
-       else
+       if (e->status & 1) {
+               mce_snprintf(e->mcgstatus_msg, "Processor %d heated above trip temperature. Throttling enabled.", e->cpu);
+               mce_snprintf(e->user_action, "Please check your system cooling. Performance will be impacted");
+       } else {
                sprintf(e->error_msg, "Processor %d below trip temperature. Throttling disabled", e->cpu);
+       }
 }
 
 static void decode_mcg(struct mce_event *e)
@@ -41,23 +43,14 @@ static void decode_mcg(struct mce_event *e)
        uint64_t mcgstatus = e->mcgstatus;
        char *p = e->mcgstatus_msg;
 
-       n = snprintf(p, len, "mcgstatus= %d ", e->mcgstatus);
+       mce_snprintf(e->mcgstatus_msg, "mcgstatus= %d", e->mcgstatus);
 
-       if (mcgstatus & MCG_STATUS_RIPV) {
-               n = snprintf(p, len, " RIPV");
-               p += n;
-               len -= n;
-       }
-       if (mcgstatus & MCG_STATUS_EIPV) {
-               n = snprintf(p, len, " EIPV");
-               p += n;
-               len -= n;
-       }
-       if (mcgstatus & MCG_STATUS_MCIP) {
-               n = snprintf(p, len, " MCIP");
-               p += n;
-               len -= n;
-       }
+       if (mcgstatus & MCG_STATUS_RIPV)
+               mce_snprintf(e->mcgstatus_msg, "RIPV");
+       if (mcgstatus & MCG_STATUS_EIPV)
+               mce_snprintf(e->mcgstatus_msg, "EIPV");
+       if (mcgstatus & MCG_STATUS_MCIP)
+               mce_snprintf(e->mcgstatus_msg, "MCIP");
 }
 
 static void bank_name(struct mce_event *e)
index 5b270345718f8326447f7371edefa19bf3919e1a..a8b4379bde54fd5354e285cfd069bca9fe2a9d49 100644 (file)
@@ -272,6 +272,9 @@ static void report_mce_event(struct ras_events *ras,
        if (*e->error_msg)
                trace_seq_printf(s, ", %s", e->error_msg);
 
+       if (*e->user_action)
+               trace_seq_printf(s, " %s", e->user_action);
+
 #if 0
        /*
         * While the logic for decoding tsc is there at mcelog, why to
index e1fc51dea3715f8dac935d2c9f1d7e1b9aa605f9..2327a28950e7c4a681571dda11aff24360092d04 100644 (file)
@@ -67,6 +67,7 @@ struct mce_event {
        char            bank_name[64];
        char            error_msg[4096];
        char            mcgstatus_msg[256];
+       char            user_action[4096];
 };
 
 struct mce_priv {