EDAC/synopsys: Do not dump uninitialized pinf->col
authorSherry Sun <sherry.sun@nxp.com>
Mon, 16 Mar 2020 13:34:39 +0000 (21:34 +0800)
committerBorislav Petkov <bp@suse.de>
Tue, 17 Mar 2020 13:32:31 +0000 (14:32 +0100)
On the ZynqMP platform, zynqmp_get_error_info() is used to read out
error information. In this function, the pinf->col parameter is not
used (it is only used by the Zynq platform's zynq_get_error_info()). So
there's no need to print pinf->col on ZynqMP.

In order to differentiate on which platform handle_error() is executed,
use DDR_ECC_INTR_SUPPORT as the check condition to distinguish between
Zynq and ZynqMP platforms.

 [ bp: Massage. ]

Fixes: b500b4a029d57 ("EDAC, synopsys: Add ECC support for ZynqMP DDR controller")
Signed-off-by: Sherry Sun <sherry.sun@nxp.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Manish Narani <manish.narani@xilinx.com>
Link: https://lkml.kernel.org/r/1584365679-27443-1-git-send-email-sherry.sun@nxp.com
drivers/edac/synopsys_edac.c

index 880ffd83371871032513e15a94bc5719d57ef1c8..12211dc040e8f1050e59b61c420e2bff03b4a0be 100644 (file)
@@ -477,16 +477,16 @@ static void handle_error(struct mem_ctl_info *mci, struct synps_ecc_status *p)
 
        if (p->ce_cnt) {
                pinf = &p->ceinfo;
-               if (!priv->p_data->quirks) {
+               if (priv->p_data->quirks & DDR_ECC_INTR_SUPPORT) {
                        snprintf(priv->message, SYNPS_EDAC_MSG_SIZE,
-                                "DDR ECC error type:%s Row %d Bank %d Col %d Bit Position: %d Data: 0x%08x",
-                                "CE", pinf->row, pinf->bank, pinf->col,
+                                "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);
                } else {
                        snprintf(priv->message, SYNPS_EDAC_MSG_SIZE,
-                                "DDR ECC error type:%s Row %d Bank %d Col %d BankGroup Number %d Block Number %d Bit Position: %d Data: 0x%08x",
+                                "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->bankgrpnr, pinf->blknr,
                                 pinf->bitpos, pinf->data);
                }
 
@@ -497,15 +497,15 @@ static void handle_error(struct mem_ctl_info *mci, struct synps_ecc_status *p)
 
        if (p->ue_cnt) {
                pinf = &p->ueinfo;
-               if (!priv->p_data->quirks) {
+               if (priv->p_data->quirks & DDR_ECC_INTR_SUPPORT) {
                        snprintf(priv->message, SYNPS_EDAC_MSG_SIZE,
-                                "DDR ECC error type :%s Row %d Bank %d Col %d ",
-                               "UE", pinf->row, pinf->bank, pinf->col);
+                                "DDR ECC error type :%s Row %d Bank %d BankGroup Number %d Block Number %d",
+                                "UE", pinf->row, pinf->bank,
+                                pinf->bankgrpnr, pinf->blknr);
                } else {
                        snprintf(priv->message, SYNPS_EDAC_MSG_SIZE,
-                                "DDR ECC error type :%s Row %d Bank %d Col %d BankGroup Number %d Block Number %d",
-                                "UE", pinf->row, pinf->bank, pinf->col,
-                                pinf->bankgrpnr, pinf->blknr);
+                                "DDR ECC error type :%s Row %d Bank %d Col %d ",
+                                "UE", pinf->row, pinf->bank, pinf->col);
                }
 
                edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci,