2013-10-30 16:28:24

by Aristeu Rozanski

[permalink] [raw]
Subject: [PATCH 11/12] sb_edac: avoid decoding the same error multiple times

Whenever the extended error reporting is active, multiple MCEs will be
generated for the same event, which will lead to multiple repeated
errors to be reported. So check ADDRV and only decode the error if the
MCE address is valid.

Signed-off-by: Aristeu Rozanski <[email protected]>
---
drivers/edac/sb_edac.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c
index 2e977b9..3c2f52b 100644
--- a/drivers/edac/sb_edac.c
+++ b/drivers/edac/sb_edac.c
@@ -1410,6 +1410,10 @@ static void sbridge_mce_output_error(struct mem_ctl_info *mci,
}
}

+ /* Only decode errors with an valid address (ADDRV) */
+ if (!GET_BITFIELD(m->status, 58, 58))
+ return;
+
rc = get_memory_error_data(mci, m->addr, &socket,
&channel_mask, &rank, &area_type, msg);
if (rc < 0)
--
1.7.1


2013-10-30 17:21:14

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: Re: [PATCH 11/12] sb_edac: avoid decoding the same error multiple times

Em Wed, 30 Oct 2013 12:27:05 -0400
Aristeu Rozanski <[email protected]> escreveu:

> Whenever the extended error reporting is active, multiple MCEs will be
> generated for the same event, which will lead to multiple repeated
> errors to be reported. So check ADDRV and only decode the error if the
> MCE address is valid.
>
> Signed-off-by: Aristeu Rozanski <[email protected]>

For patches 2 to 11 on this series:

Reviewed-by: Mauro Carvalho Chehab <[email protected]>

> ---
> drivers/edac/sb_edac.c | 4 ++++
> 1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c
> index 2e977b9..3c2f52b 100644
> --- a/drivers/edac/sb_edac.c
> +++ b/drivers/edac/sb_edac.c
> @@ -1410,6 +1410,10 @@ static void sbridge_mce_output_error(struct mem_ctl_info *mci,
> }
> }
>
> + /* Only decode errors with an valid address (ADDRV) */
> + if (!GET_BITFIELD(m->status, 58, 58))
> + return;
> +
> rc = get_memory_error_data(mci, m->addr, &socket,
> &channel_mask, &rank, &area_type, msg);
> if (rc < 0)


--

Cheers,
Mauro