RE: [PATCH 2/3] EDAC: synopsys: Reorganizing the output message for CE/UE

From: Sherry Sun
Date: Thu Feb 27 2020 - 02:09:45 EST


Hi James,

> -----Original Message-----
> From: linux-edac-owner@xxxxxxxxxxxxxxx <linux-edac-
> owner@xxxxxxxxxxxxxxx> On Behalf Of James Morse
> Sent: 2020å2æ27æ 1:49
> To: Sherry Sun <sherry.sun@xxxxxxx>
> Cc: bp@xxxxxxxxx; mchehab@xxxxxxxxxx; tony.luck@xxxxxxxxx;
> rrichter@xxxxxxxxxxx; michal.simek@xxxxxxxxxx; linux-
> edac@xxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; linux-
> kernel@xxxxxxxxxxxxxxx; dl-linux-imx <linux-imx@xxxxxxx>; Frank Li
> <frank.li@xxxxxxx>
> Subject: Re: [PATCH 2/3] EDAC: synopsys: Reorganizing the output message
> for CE/UE
>
> Hi Sherry,
>
> On 24/02/2020 09:42, Sherry Sun wrote:
> > The origin way which call sprintf() function two or three times to
>
> (original? 'The current way' may be better)
>

Sorry for that, I will correct it to 'The current way'.

>
> > output message for CE/UE is incorrect, because it won't output all the
> > message needed, instead it will only output the last message in
> > sprintf().
>
> Nice!
>
>
> > So the simplest and most effective way to fix this problem is
> > reorganizing all the output message needed for CE/UE into one
> > sprintf() function.
>
> This is a bug, but its in the middle of a series doing some cleanup, meaning
> the maintainer can't easily pick it up in isolation. Could you post it separately?
>
> 'Reorganize' in the subject makes this sound like cleanup. Would "EDAC:
> synopsys: Fix back to back snprintf() messages for CE/UE" be better?
>

Sure, I will send this patch separately, and will correct the subject as you suggested.

>
> Please add:
> Fixes: b500b4a029d57 ("EDAC, synopsys: Add ECC support for ZynqMP DDR
> controller")
>
> in the signed-off-by area so that stable trees pick this up.
>
> and for what its worth:
> Reviewed-by: James Morse <james.morse@xxxxxxx>
>
>

Thanks, I will add it.

Best regards
Sherry Sun

> Thanks!
>
> James
>
>
>
> > diff --git a/drivers/edac/synopsys_edac.c
> > b/drivers/edac/synopsys_edac.c index 7046b8929522..ef7e907c7956
> 100644
> > --- a/drivers/edac/synopsys_edac.c
> > +++ b/drivers/edac/synopsys_edac.c
> > @@ -485,20 +485,14 @@ static void handle_error(struct mem_ctl_info
> *mci, struct synps_ecc_status *p)
> > pinf = &p->ceinfo;
> > if (!priv->p_data->quirks) {
> > snprintf(priv->message, SYNPS_EDAC_MSG_SIZE,
> > - "DDR ECC error type:%s Row %d Bank %d
> Col %d ",
> > - "CE", pinf->row, pinf->bank, pinf->col);
> > - snprintf(priv->message, SYNPS_EDAC_MSG_SIZE,
> > - "Bit Position: %d Data: 0x%08x\n",
> > + "DDR ECC error type:%s Row %d Bank %d
> Col %d Bit Position: %d Data: 0x%08x",
> > + "CE", pinf->row, pinf->bank, pinf->col,
> > pinf->bitpos, pinf->data);
> > } else {
> > snprintf(priv->message, SYNPS_EDAC_MSG_SIZE,
> > - "DDR ECC error type:%s Row %d Bank %d ",
> > - "CE", pinf->row, pinf->bank);
> > - snprintf(priv->message, SYNPS_EDAC_MSG_SIZE,
> > - "BankGroup Number %d Block Number %d ",
> > - pinf->bankgrpnr, pinf->blknr);
> > - snprintf(priv->message, SYNPS_EDAC_MSG_SIZE,
> > - "Bit Position: %d Data: 0x%08x\n",
> > + "DDR ECC error type:%s Row %d Bank %d
> BankGroup Number %d Block Number %d Bit Position: %d Data: 0x%08x",
> > + "CE", pinf->row, pinf->bank,
> > + pinf->bankgrpnr, pinf->blknr,
> > pinf->bitpos, pinf->data);
> > }
> >
> > @@ -515,10 +509,8 @@ static void handle_error(struct mem_ctl_info *mci,
> struct synps_ecc_status *p)
> > "UE", pinf->row, pinf->bank, pinf->col);
> > } else {
> > snprintf(priv->message, SYNPS_EDAC_MSG_SIZE,
> > - "DDR ECC error type :%s Row %d Bank %d ",
> > - "UE", pinf->row, pinf->bank);
> > - snprintf(priv->message, SYNPS_EDAC_MSG_SIZE,
> > - "BankGroup Number %d Block Number %d",
> > + "DDR ECC error type :%s Row %d Bank %d
> BankGroup Number %d Block Number %d",
> > + "UE", pinf->row, pinf->bank,
> > pinf->bankgrpnr, pinf->blknr);
> > }
> >
> >