History

Merge tag 'edac_urgent_for_v5.18_rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras

Pull EDAC fix from Borislav Petkov: - Read the reported error count from the proper register on synopsys_edac * tag 'edac_urgent_for_v5.18_rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras: EDAC/synopsys: Read the error count from the correct register

Linus Torvalds committed 4 years ago

Commit b877ca42 parents 9becb68 e2932d11 file · +11 −5Browse files

Unified · Split

drivers/edac/synopsys_edac.c+11−5
@@ -164,6 +164,11 @@ · 163 unmodified lines
164#define ECC_STAT_CECNT_SHIFT 8164#define ECC_STAT_CECNT_SHIFT 8
165#define ECC_STAT_BITNUM_MASK 0x7F165#define ECC_STAT_BITNUM_MASK 0x7F
166 166
167/* ECC error count register definitions */
168#define ECC_ERRCNT_UECNT_MASK 0xFFFF0000
169#define ECC_ERRCNT_UECNT_SHIFT 16
170#define ECC_ERRCNT_CECNT_MASK 0xFFFF
171
167/* DDR QOS Interrupt register definitions */172/* DDR QOS Interrupt register definitions */
168#define DDR_QOS_IRQ_STAT_OFST 0x20200173#define DDR_QOS_IRQ_STAT_OFST 0x20200
169#define DDR_QOSUE_MASK 0x4174#define DDR_QOSUE_MASK 0x4
@@ -423,15 +428,16 @@ static int zynqmp_get_error_info(struct synps_edac_priv *priv) · 253 unmodified lines
423 base = priv->baseaddr;428 base = priv->baseaddr;
424 p = &priv->stat;429 p = &priv->stat;
425 430
431 regval = readl(base + ECC_ERRCNT_OFST);
432 p->ce_cnt = regval & ECC_ERRCNT_CECNT_MASK;
433 p->ue_cnt = (regval & ECC_ERRCNT_UECNT_MASK) >> ECC_ERRCNT_UECNT_SHIFT;
434 if (!p->ce_cnt)
435 goto ue_err;
436
426 regval = readl(base + ECC_STAT_OFST);437 regval = readl(base + ECC_STAT_OFST);
427 if (!regval)438 if (!regval)
428 return 1;439 return 1;
429 440
430 p->ce_cnt = (regval & ECC_STAT_CECNT_MASK) >> ECC_STAT_CECNT_SHIFT;
431 p->ue_cnt = (regval & ECC_STAT_UECNT_MASK) >> ECC_STAT_UECNT_SHIFT;
432 if (!p->ce_cnt)
433 goto ue_err;
434
435 p->ceinfo.bitpos = (regval & ECC_STAT_BITNUM_MASK);441 p->ceinfo.bitpos = (regval & ECC_STAT_BITNUM_MASK);
436 442
437 regval = readl(base + ECC_CEADDR0_OFST);443 regval = readl(base + ECC_CEADDR0_OFST);