From: Mauro Carvalho Chehab <mchehab@kernel.org>
To: Robert Richter <rrichter@marvell.com>
Cc: Borislav Petkov <bp@alien8.de>, Tony Luck <tony.luck@intel.com>,
James Morse <james.morse@arm.com>,
"linux-edac@vger.kernel.org" <linux-edac@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 18/20] EDAC: Store error type in struct edac_raw_error_desc
Date: Sat, 9 Nov 2019 08:30:45 +0100 [thread overview]
Message-ID: <20191109083045.0fec2064@kernel.org> (raw)
In-Reply-To: <20191106093239.25517-19-rrichter@marvell.com>
Em Wed, 6 Nov 2019 09:33:41 +0000
Robert Richter <rrichter@marvell.com> escreveu:
> Store the error type in struct edac_raw_error_desc. This makes the
> type parameter of edac_raw_mc_handle_error() obsolete.
>
> Signed-off-by: Robert Richter <rrichter@marvell.com>
Reviewed-by: Mauro Carvalho Chehab <mchehab@kernel.org>
> ---
> drivers/edac/edac_mc.c | 10 +++++-----
> drivers/edac/edac_mc.h | 4 +---
> drivers/edac/ghes_edac.c | 11 +++++------
> include/linux/edac.h | 1 +
> 4 files changed, 12 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c
> index e4a11218009b..7b4f5e98dfe8 100644
> --- a/drivers/edac/edac_mc.c
> +++ b/drivers/edac/edac_mc.c
> @@ -1040,8 +1040,7 @@ static void edac_ue_error(struct mem_ctl_info *mci,
> edac_inc_ue_error(mci, dimm, error_count);
> }
>
> -void edac_raw_mc_handle_error(const enum hw_event_mc_err_type type,
> - struct mem_ctl_info *mci,
> +void edac_raw_mc_handle_error(struct mem_ctl_info *mci,
> struct dimm_info *dimm,
> struct edac_raw_error_desc *e)
> {
> @@ -1056,14 +1055,14 @@ void edac_raw_mc_handle_error(const enum hw_event_mc_err_type type,
>
> /* Report the error via the trace interface */
> if (IS_ENABLED(CONFIG_RAS))
> - trace_mc_event(type, e->msg, e->label, e->error_count,
> + trace_mc_event(e->type, e->msg, e->label, e->error_count,
> mci->mc_idx, e->top_layer, e->mid_layer,
> e->low_layer,
> (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 (type == HW_EVENT_ERR_CORRECTED) {
> + 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,
> @@ -1109,6 +1108,7 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type,
> /* Fills the error report buffer */
> memset(e, 0, sizeof (*e));
> e->error_count = error_count;
> + e->type = type;
> e->top_layer = top_layer;
> e->mid_layer = mid_layer;
> e->low_layer = low_layer;
> @@ -1242,6 +1242,6 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type,
>
> dimm = edac_get_dimm(mci, top_layer, mid_layer, low_layer);
>
> - edac_raw_mc_handle_error(type, mci, dimm, e);
> + edac_raw_mc_handle_error(mci, dimm, e);
> }
> EXPORT_SYMBOL_GPL(edac_mc_handle_error);
> diff --git a/drivers/edac/edac_mc.h b/drivers/edac/edac_mc.h
> index 2c3e2fbcedc4..a8f1b5b5e873 100644
> --- a/drivers/edac/edac_mc.h
> +++ b/drivers/edac/edac_mc.h
> @@ -212,7 +212,6 @@ extern int edac_mc_find_csrow_by_page(struct mem_ctl_info *mci,
> * edac_raw_mc_handle_error() - Reports a memory event to userspace without
> * doing anything to discover the error location.
> *
> - * @type: severity of the error (CE/UE/Fatal)
> * @mci: a struct mem_ctl_info pointer
> * @dimm: a struct dimm_info pointer
> * @e: error description
> @@ -221,8 +220,7 @@ extern int edac_mc_find_csrow_by_page(struct mem_ctl_info *mci,
> * only be called directly when the hardware error come directly from BIOS,
> * like in the case of APEI GHES driver.
> */
> -void edac_raw_mc_handle_error(const enum hw_event_mc_err_type type,
> - struct mem_ctl_info *mci,
> +void edac_raw_mc_handle_error(struct mem_ctl_info *mci,
> struct dimm_info *dimm,
> struct edac_raw_error_desc *e);
>
> diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c
> index 6eebaf28e31c..7d325d70d6d3 100644
> --- a/drivers/edac/ghes_edac.c
> +++ b/drivers/edac/ghes_edac.c
> @@ -202,7 +202,6 @@ static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg)
> void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err)
> {
> struct dimm_info *dimm;
> - enum hw_event_mc_err_type type;
> struct edac_raw_error_desc *e;
> struct mem_ctl_info *mci;
> struct ghes_edac_pvt *pvt;
> @@ -241,17 +240,17 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err)
>
> switch (sev) {
> case GHES_SEV_CORRECTED:
> - type = HW_EVENT_ERR_CORRECTED;
> + e->type = HW_EVENT_ERR_CORRECTED;
> break;
> case GHES_SEV_RECOVERABLE:
> - type = HW_EVENT_ERR_UNCORRECTED;
> + e->type = HW_EVENT_ERR_UNCORRECTED;
> break;
> case GHES_SEV_PANIC:
> - type = HW_EVENT_ERR_FATAL;
> + e->type = HW_EVENT_ERR_FATAL;
> break;
> default:
> case GHES_SEV_NO:
> - type = HW_EVENT_ERR_INFO;
> + e->type = HW_EVENT_ERR_INFO;
> }
>
> edac_dbg(1, "error validation_bits: 0x%08llx\n",
> @@ -442,7 +441,7 @@ void ghes_edac_report_mem_error(int sev, struct cper_sec_mem_err *mem_err)
>
> dimm = edac_get_dimm_by_index(mci, e->top_layer);
>
> - edac_raw_mc_handle_error(type, mci, dimm, e);
> + edac_raw_mc_handle_error(mci, dimm, e);
>
> unlock:
> spin_unlock_irqrestore(&ghes_lock, flags);
> diff --git a/include/linux/edac.h b/include/linux/edac.h
> index 4d9673954856..587c53b87fdf 100644
> --- a/include/linux/edac.h
> +++ b/include/linux/edac.h
> @@ -463,6 +463,7 @@ struct edac_raw_error_desc {
> long grain;
>
> u16 error_count;
> + enum hw_event_mc_err_type type;
> int top_layer;
> int mid_layer;
> int low_layer;
Cheers,
Mauro
next prev parent reply other threads:[~2019-11-09 7:30 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-06 9:32 [PATCH v2 00/20] EDAC: Rework edac_mc and ghes drivers Robert Richter
2019-11-06 9:33 ` [PATCH v2 01/20] EDAC: Replace EDAC_DIMM_PTR() macro with edac_get_dimm() function Robert Richter
2019-11-09 7:23 ` Mauro Carvalho Chehab
2019-11-06 9:33 ` [PATCH v2 02/20] EDAC: Remove EDAC_DIMM_OFF() macro Robert Richter
2019-11-09 7:27 ` Mauro Carvalho Chehab
2019-11-06 9:33 ` [PATCH v2 03/20] EDAC: Introduce mci_for_each_dimm() iterator Robert Richter
2019-11-10 11:37 ` Borislav Petkov
2019-11-06 9:33 ` [PATCH v2 04/20] EDAC, mc: Do not BUG_ON() in edac_mc_alloc() Robert Richter
2019-11-06 9:33 ` [PATCH v2 05/20] EDAC, mc: Remove needless zero string termination Robert Richter
2019-11-09 7:28 ` Mauro Carvalho Chehab
2019-11-09 10:11 ` Borislav Petkov
2019-11-06 9:33 ` [PATCH v2 06/20] EDAC, mc: Reduce indentation level in edac_mc_handle_error() Robert Richter
2019-11-06 9:33 ` [PATCH v2 07/20] EDAC, mc: Rename iterator variable to idx Robert Richter
2019-11-09 10:21 ` Borislav Petkov
2019-11-06 9:33 ` [PATCH v2 08/20] EDAC: Remove misleading comment in struct edac_raw_error_desc Robert Richter
2019-11-06 9:33 ` [PATCH v2 09/20] EDAC, ghes: Use standard kernel macros for page calculations Robert Richter
2019-11-06 9:33 ` [PATCH v2 10/20] EDAC, ghes: Fix grain calculation Robert Richter
2019-11-06 9:33 ` [PATCH v2 11/20] EDAC, ghes: Remove intermediate buffer pvt->detail_location Robert Richter
2019-11-06 9:33 ` [PATCH v2 12/20] EDAC, ghes: Unify trace_mc_event() code with edac_mc driver Robert Richter
2019-11-06 9:33 ` [PATCH v2 13/20] EDAC, Documentation: Describe CPER module definition and DIMM ranks Robert Richter
2019-11-06 9:33 ` [PATCH v2 14/20] EDAC, mc: Remove per layer counters Robert Richter
2019-11-09 7:40 ` Mauro Carvalho Chehab
2019-11-18 20:30 ` Robert Richter
2019-11-06 9:33 ` [PATCH v2 15/20] EDAC, mc: Split edac_mc_alloc() into smaller functions Robert Richter
2019-11-06 9:33 ` [PATCH v2 16/20] EDAC, mc: Reorder functions edac_mc_alloc*() Robert Richter
2019-11-06 9:33 ` [PATCH v2 17/20] EDAC, mc: Rework edac_raw_mc_handle_error() to use struct dimm_info Robert Richter
2019-11-06 9:33 ` [PATCH v2 18/20] EDAC: Store error type in struct edac_raw_error_desc Robert Richter
2019-11-09 7:30 ` Mauro Carvalho Chehab [this message]
2019-11-06 9:33 ` [PATCH v2 19/20] EDAC, mc: Determine mci pointer from the error descriptor Robert Richter
2019-11-06 9:33 ` [PATCH v2 20/20] EDAC, mc: Create new function edac_inc_csrow() Robert Richter
2019-11-09 7:32 ` Mauro Carvalho Chehab
2019-11-10 14:51 ` [PATCH v2 00/20] EDAC: Rework edac_mc and ghes drivers Borislav Petkov
2019-11-11 15:49 ` Robert Richter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191109083045.0fec2064@kernel.org \
--to=mchehab@kernel.org \
--cc=bp@alien8.de \
--cc=james.morse@arm.com \
--cc=linux-edac@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rrichter@marvell.com \
--cc=tony.luck@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.