Message ID | 20191010202418.25098-14-rrichter@marvell.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | EDAC: Rework edac_mc and ghes drivers | expand |
Em Thu, 10 Oct 2019 20:25:31 +0000 Robert Richter <rrichter@marvell.com> escreveu: > Each struct mci has its own error descriptor. Create a function > error_desc_to_mci() to determine the corresponding mci from an error > descriptor. This eases the parameter list of edac_raw_mc_handle_ > error() as the mci pointer do not need to be passed any longer. > > While at it, reorder parameters of edac_raw_mc_handle_error(). > > Signed-off-by: Robert Richter <rrichter@marvell.com> Reviewed-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> > --- > drivers/edac/edac_mc.c | 13 +++++++++---- > drivers/edac/edac_mc.h | 8 +++----- > drivers/edac/ghes_edac.c | 2 +- > 3 files changed, 13 insertions(+), 10 deletions(-) > > diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c > index ca206854b8ee..9e8c5716a8c0 100644 > --- a/drivers/edac/edac_mc.c > +++ b/drivers/edac/edac_mc.c > @@ -1040,10 +1040,15 @@ static void edac_ue_error(struct mem_ctl_info *mci, > edac_inc_ue_error(mci, dimm, error_count); > } > > -void edac_raw_mc_handle_error(struct mem_ctl_info *mci, > - struct dimm_info *dimm, > - struct edac_raw_error_desc *e) > +static struct mem_ctl_info *error_desc_to_mci(struct edac_raw_error_desc *e) > +{ > + return container_of(e, struct mem_ctl_info, error_desc); > +} > + > +void edac_raw_mc_handle_error(struct edac_raw_error_desc *e, > + struct dimm_info *dimm) > { > + struct mem_ctl_info *mci = error_desc_to_mci(e); > char detail[80]; > > /* Memory type dependent details about the error */ > @@ -1243,6 +1248,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(mci, dimm, e); > + edac_raw_mc_handle_error(e, dimm); > } > EXPORT_SYMBOL_GPL(edac_mc_handle_error); > diff --git a/drivers/edac/edac_mc.h b/drivers/edac/edac_mc.h > index a8f1b5b5e873..3b01d5d9d7bc 100644 > --- a/drivers/edac/edac_mc.h > +++ b/drivers/edac/edac_mc.h > @@ -212,17 +212,15 @@ 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. > * > - * @mci: a struct mem_ctl_info pointer > - * @dimm: a struct dimm_info pointer > * @e: error description > + * @dimm: a struct dimm_info pointer > * > * This raw function is used internally by edac_mc_handle_error(). It should > * 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(struct mem_ctl_info *mci, > - struct dimm_info *dimm, > - struct edac_raw_error_desc *e); > +void edac_raw_mc_handle_error(struct edac_raw_error_desc *e, > + struct dimm_info *dimm); > > /** > * edac_mc_handle_error() - Reports a memory event to userspace. > diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c > index 1db1c012bed9..8078d4ec9631 100644 > --- a/drivers/edac/ghes_edac.c > +++ b/drivers/edac/ghes_edac.c > @@ -439,7 +439,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(mci, dimm, e); > + edac_raw_mc_handle_error(e, dimm); > > spin_unlock_irqrestore(&ghes_lock, flags); > } Thanks, Mauro
diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c index ca206854b8ee..9e8c5716a8c0 100644 --- a/drivers/edac/edac_mc.c +++ b/drivers/edac/edac_mc.c @@ -1040,10 +1040,15 @@ static void edac_ue_error(struct mem_ctl_info *mci, edac_inc_ue_error(mci, dimm, error_count); } -void edac_raw_mc_handle_error(struct mem_ctl_info *mci, - struct dimm_info *dimm, - struct edac_raw_error_desc *e) +static struct mem_ctl_info *error_desc_to_mci(struct edac_raw_error_desc *e) +{ + return container_of(e, struct mem_ctl_info, error_desc); +} + +void edac_raw_mc_handle_error(struct edac_raw_error_desc *e, + struct dimm_info *dimm) { + struct mem_ctl_info *mci = error_desc_to_mci(e); char detail[80]; /* Memory type dependent details about the error */ @@ -1243,6 +1248,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(mci, dimm, e); + edac_raw_mc_handle_error(e, dimm); } EXPORT_SYMBOL_GPL(edac_mc_handle_error); diff --git a/drivers/edac/edac_mc.h b/drivers/edac/edac_mc.h index a8f1b5b5e873..3b01d5d9d7bc 100644 --- a/drivers/edac/edac_mc.h +++ b/drivers/edac/edac_mc.h @@ -212,17 +212,15 @@ 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. * - * @mci: a struct mem_ctl_info pointer - * @dimm: a struct dimm_info pointer * @e: error description + * @dimm: a struct dimm_info pointer * * This raw function is used internally by edac_mc_handle_error(). It should * 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(struct mem_ctl_info *mci, - struct dimm_info *dimm, - struct edac_raw_error_desc *e); +void edac_raw_mc_handle_error(struct edac_raw_error_desc *e, + struct dimm_info *dimm); /** * edac_mc_handle_error() - Reports a memory event to userspace. diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index 1db1c012bed9..8078d4ec9631 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -439,7 +439,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(mci, dimm, e); + edac_raw_mc_handle_error(e, dimm); spin_unlock_irqrestore(&ghes_lock, flags); }
Each struct mci has its own error descriptor. Create a function error_desc_to_mci() to determine the corresponding mci from an error descriptor. This eases the parameter list of edac_raw_mc_handle_ error() as the mci pointer do not need to be passed any longer. While at it, reorder parameters of edac_raw_mc_handle_error(). Signed-off-by: Robert Richter <rrichter@marvell.com> --- drivers/edac/edac_mc.c | 13 +++++++++---- drivers/edac/edac_mc.h | 8 +++----- drivers/edac/ghes_edac.c | 2 +- 3 files changed, 13 insertions(+), 10 deletions(-)