From 86c821af2f14d93ab3db448018f9474ca5733911 Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Tue, 19 Feb 2013 21:35:41 -0300 Subject: [PATCH] --- yaml --- r: 359989 b: refs/heads/master c: 8ae8f50ad8979bb670598ff92eebea611b799f10 h: refs/heads/master i: 359987: 9de2b7781ffdfa83519eafef623973d0aa333225 v: v3 --- [refs] | 2 +- trunk/drivers/edac/ghes_edac.c | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index d0bf5435ba75..f52979967b9f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 689c9cd8128f13bf9843a3e133423f5e3e0ce4aa +refs/heads/master: 8ae8f50ad8979bb670598ff92eebea611b799f10 diff --git a/trunk/drivers/edac/ghes_edac.c b/trunk/drivers/edac/ghes_edac.c index 1bde45141073..636dcf18d5b6 100644 --- a/trunk/drivers/edac/ghes_edac.c +++ b/trunk/drivers/edac/ghes_edac.c @@ -15,6 +15,7 @@ #include #include #include "edac_core.h" +#include #define GHES_EDAC_REVISION " Ver: 1.0.0" @@ -24,6 +25,7 @@ struct ghes_edac_pvt { struct mem_ctl_info *mci; /* Buffers for the error handling routine */ + char detail_location[240]; char other_detail[160]; char msg[80]; }; @@ -191,6 +193,7 @@ void ghes_edac_report_mem_error(struct ghes *ghes, int sev, struct mem_ctl_info *mci; struct ghes_edac_pvt *pvt = NULL; char *p; + u8 grain_bits; list_for_each_entry(pvt, &ghes_reglist, list) { if (ghes == pvt->ghes) @@ -398,6 +401,16 @@ void ghes_edac_report_mem_error(struct ghes *ghes, int sev, if (p > pvt->other_detail) *(p - 1) = '\0'; + /* Generate the trace event */ + grain_bits = fls_long(e->grain); + sprintf(pvt->detail_location, "APEI location: %s %s", + e->location, e->other_detail); + trace_mc_event(type, e->msg, e->label, e->error_count, + mci->mc_idx, e->top_layer, e->mid_layer, e->low_layer, + PAGES_TO_MiB(e->page_frame_number) | e->offset_in_page, + grain_bits, e->syndrome, pvt->detail_location); + + /* Report the error via EDAC API */ edac_raw_mc_handle_error(type, mci, e); } EXPORT_SYMBOL_GPL(ghes_edac_report_mem_error);