lkml.org 
[lkml]   [2019]   [Dec]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH v2 09/10] EDAC/mc: Remove detail[] string and cleanup error string generation
Date
The error descriptor is passed to the error reporting functions, so
the error details can be directly generated there. Move string
generation from edac_raw_mc_handle_error() to edac_ce_error() and
edac_ue_error(). The intermediate detail[] string can be removed then.

Also, cleanup the string generation by switching to a single variant
only using the ternary operator.

Signed-off-by: Robert Richter <rrichter@marvell.com>
---
drivers/edac/edac_mc.c | 83 +++++++++++++-----------------------------
1 file changed, 25 insertions(+), 58 deletions(-)

diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c
index 545d25c8654e..5ea834fceb50 100644
--- a/drivers/edac/edac_mc.c
+++ b/drivers/edac/edac_mc.c
@@ -993,27 +993,18 @@ static void edac_inc_ue_error(struct edac_raw_error_desc *e)
}
}

-static void edac_ce_error(struct edac_raw_error_desc *e,
- const char *detail)
+static void edac_ce_error(struct edac_raw_error_desc *e)
{
struct mem_ctl_info *mci = error_desc_to_mci(e);
unsigned long remapped_page;
- char *msg_aux = "";
-
- if (*e->msg)
- msg_aux = " ";

if (edac_mc_get_log_ce()) {
- if (e->other_detail && *e->other_detail)
- edac_mc_printk(mci, KERN_WARNING,
- "%d CE %s%son %s (%s %s - %s)\n",
- e->error_count, e->msg, msg_aux, e->label,
- e->location, detail, e->other_detail);
- else
- edac_mc_printk(mci, KERN_WARNING,
- "%d CE %s%son %s (%s %s)\n",
- e->error_count, e->msg, msg_aux, e->label,
- e->location, detail);
+ edac_mc_printk(mci, KERN_WARNING,
+ "%d CE %s%son %s (%s page:0x%lx offset:0x%lx grain:%ld syndrome:0x%lx%s%s)\n",
+ e->error_count, e->msg, *e->msg ? " " : "", e->label,
+ e->location, e->page_frame_number, e->offset_in_page,
+ e->grain, e->syndrome, *e->other_detail ? " - " : "",
+ e->other_detail);
}

edac_inc_ce_error(e);
@@ -1038,36 +1029,24 @@ static void edac_ce_error(struct edac_raw_error_desc *e,
}
}

-static void edac_ue_error(struct edac_raw_error_desc *e,
- const char *detail)
+static void edac_ue_error(struct edac_raw_error_desc *e)
{
struct mem_ctl_info *mci = error_desc_to_mci(e);
- char *msg_aux = "";
-
- if (*e->msg)
- msg_aux = " ";

if (edac_mc_get_log_ue()) {
- if (e->other_detail && *e->other_detail)
- edac_mc_printk(mci, KERN_WARNING,
- "%d UE %s%son %s (%s %s - %s)\n",
- e->error_count, e->msg, msg_aux, e->label,
- e->location, detail, e->other_detail);
- else
- edac_mc_printk(mci, KERN_WARNING,
- "%d UE %s%son %s (%s %s)\n",
- e->error_count, e->msg, msg_aux, e->label,
- e->location, detail);
+ edac_mc_printk(mci, KERN_WARNING,
+ "%d UE %s%son %s (%s page:0x%lx offset:0x%lx grain:%ld%s%s)\n",
+ e->error_count, e->msg, *e->msg ? " " : "", e->label,
+ e->location, e->page_frame_number, e->offset_in_page,
+ e->grain, *e->other_detail ? " - " : "",
+ e->other_detail);
}

if (edac_mc_get_panic_on_ue()) {
- if (e->other_detail && *e->other_detail)
- panic("UE %s%son %s (%s%s - %s)\n",
- e->msg, msg_aux, e->label, e->location, detail,
- e->other_detail);
- else
- panic("UE %s%son %s (%s%s)\n",
- e->msg, msg_aux, e->label, e->location, detail);
+ panic("UE %s%son %s (%s page:0x%lx offset:0x%lx grain:%ld%s%s)\n",
+ e->msg, *e->msg ? " " : "", e->label, e->location,
+ e->page_frame_number, e->offset_in_page, e->grain,
+ *e->other_detail ? " - " : "", e->other_detail);
}

edac_inc_ue_error(e);
@@ -1096,7 +1075,6 @@ static void edac_inc_csrow(struct edac_raw_error_desc *e, int row, int chan)
void edac_raw_mc_handle_error(struct edac_raw_error_desc *e)
{
struct mem_ctl_info *mci = error_desc_to_mci(e);
- char detail[80];
u8 grain_bits;

/* Sanity-check driver-supplied grain value. */
@@ -1113,22 +1091,10 @@ void edac_raw_mc_handle_error(struct edac_raw_error_desc *e)
(e->page_frame_number << PAGE_SHIFT) | e->offset_in_page,
grain_bits, e->syndrome, e->other_detail);

- /* Memory type dependent details about the error */
- if (e->type == HW_EVENT_ERR_CORRECTED) {
- snprintf(detail, sizeof(detail),
- "page:0x%lx offset:0x%lx grain:%ld syndrome:0x%lx",
- e->page_frame_number, e->offset_in_page,
- e->grain, e->syndrome);
- edac_ce_error(e, detail);
- } else {
- snprintf(detail, sizeof(detail),
- "page:0x%lx offset:0x%lx grain:%ld",
- e->page_frame_number, e->offset_in_page, e->grain);
-
- edac_ue_error(e, detail);
- }
-
-
+ if (e->type == HW_EVENT_ERR_CORRECTED)
+ edac_ce_error(e);
+ else
+ edac_ue_error(e);
}
EXPORT_SYMBOL_GPL(edac_raw_mc_handle_error);

@@ -1164,8 +1130,9 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type,
e->page_frame_number = page_frame_number;
e->offset_in_page = offset_in_page;
e->syndrome = syndrome;
- e->msg = msg;
- e->other_detail = other_detail;
+ /* need valid strings here for both: */
+ e->msg = msg ? msg : "";
+ e->other_detail = other_detail ? other_detail : "";

/*
* Check if the event report is consistent and if the memory
--
2.20.1
\
 
 \ /
  Last update: 2019-12-05 10:38    [W:0.178 / U:0.100 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site