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
Unified · Split
| @@ -164,6 +164,11 @@ · 163 unmodified lines | |||
| 164 | #define ECC_STAT_CECNT_SHIFT 8 | 164 | #define ECC_STAT_CECNT_SHIFT 8 |
| 165 | #define ECC_STAT_BITNUM_MASK 0x7F | 165 | #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 0x20200 | 173 | #define DDR_QOS_IRQ_STAT_OFST 0x20200 |
| 169 | #define DDR_QOSUE_MASK 0x4 | 174 | #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); |