Lines Matching refs:ctx
157 struct xgene_edac_mc_ctx *ctx = mci->pvt_info; in xgene_edac_mc_err_inject_write() local
163 ctx->mcu_csr + MCUESRRA0 + i * MCU_RANK_STRIDE); in xgene_edac_mc_err_inject_write()
188 struct xgene_edac_mc_ctx *ctx = mci->pvt_info; in xgene_edac_mc_check() local
197 xgene_edac_pcp_rd(ctx->edac, PCPHPERRINTSTS, &pcp_hp_stat); in xgene_edac_mc_check()
198 xgene_edac_pcp_rd(ctx->edac, PCPLPERRINTSTS, &pcp_lp_stat); in xgene_edac_mc_check()
205 reg = readl(ctx->mcu_csr + MCUESRR0 + rank * MCU_RANK_STRIDE); in xgene_edac_mc_check()
220 bank = readl(ctx->mcu_csr + MCUEBLRR0 + in xgene_edac_mc_check()
222 col_row = readl(ctx->mcu_csr + MCUERCRR0 + in xgene_edac_mc_check()
224 count = readl(ctx->mcu_csr + MCUSBECNT0 + in xgene_edac_mc_check()
238 writel(0x0, ctx->mcu_csr + MCUEBLRR0 + rank * MCU_RANK_STRIDE); in xgene_edac_mc_check()
239 writel(0x0, ctx->mcu_csr + MCUERCRR0 + rank * MCU_RANK_STRIDE); in xgene_edac_mc_check()
240 writel(0x0, ctx->mcu_csr + MCUSBECNT0 + in xgene_edac_mc_check()
242 writel(reg, ctx->mcu_csr + MCUESRR0 + rank * MCU_RANK_STRIDE); in xgene_edac_mc_check()
246 reg = readl(ctx->mcu_csr + MCUGESR); in xgene_edac_mc_check()
255 writel(reg, ctx->mcu_csr + MCUGESR); in xgene_edac_mc_check()
261 struct xgene_edac_mc_ctx *ctx = mci->pvt_info; in xgene_edac_mc_irq_ctl() local
267 mutex_lock(&ctx->edac->mc_lock); in xgene_edac_mc_irq_ctl()
279 ctx->edac->mc_registered_mask |= 1 << ctx->mcu_id; in xgene_edac_mc_irq_ctl()
282 if (ctx->edac->mc_registered_mask == in xgene_edac_mc_irq_ctl()
283 ctx->edac->mc_active_mask) { in xgene_edac_mc_irq_ctl()
285 xgene_edac_pcp_clrbits(ctx->edac, PCPHPERRINTMSK, in xgene_edac_mc_irq_ctl()
288 xgene_edac_pcp_clrbits(ctx->edac, PCPLPERRINTMSK, in xgene_edac_mc_irq_ctl()
293 val = readl(ctx->mcu_csr + MCUGECR); in xgene_edac_mc_irq_ctl()
298 writel(val, ctx->mcu_csr + MCUGECR); in xgene_edac_mc_irq_ctl()
301 val = readl(ctx->mcu_csr + MCUGECR); in xgene_edac_mc_irq_ctl()
306 writel(val, ctx->mcu_csr + MCUGECR); in xgene_edac_mc_irq_ctl()
309 xgene_edac_pcp_setbits(ctx->edac, PCPHPERRINTMSK, in xgene_edac_mc_irq_ctl()
311 xgene_edac_pcp_setbits(ctx->edac, PCPLPERRINTMSK, in xgene_edac_mc_irq_ctl()
315 ctx->edac->mc_registered_mask &= ~(1 << ctx->mcu_id); in xgene_edac_mc_irq_ctl()
318 mutex_unlock(&ctx->edac->mc_lock); in xgene_edac_mc_irq_ctl()
321 static int xgene_edac_mc_is_active(struct xgene_edac_mc_ctx *ctx, int mc_idx) in xgene_edac_mc_is_active() argument
326 if (regmap_read(ctx->edac->csw_map, CSW_CSWCR, ®)) in xgene_edac_mc_is_active()
334 if (regmap_read(ctx->edac->mcbb_map, MCBADDRMR, ®)) in xgene_edac_mc_is_active()
342 if (regmap_read(ctx->edac->mcba_map, MCBADDRMR, ®)) in xgene_edac_mc_is_active()
348 if (!ctx->edac->mc_active_mask) in xgene_edac_mc_is_active()
349 ctx->edac->mc_active_mask = mcu_mask; in xgene_edac_mc_is_active()
359 struct xgene_edac_mc_ctx *ctx; in xgene_edac_mc_add() local
399 sizeof(*ctx)); in xgene_edac_mc_add()
405 ctx = mci->pvt_info; in xgene_edac_mc_add()
406 *ctx = tmp_ctx; /* Copy over resource value */ in xgene_edac_mc_add()
407 ctx->name = "xgene_edac_mc_err"; in xgene_edac_mc_add()
408 ctx->mci = mci; in xgene_edac_mc_add()
410 mci->ctl_name = ctx->name; in xgene_edac_mc_add()
411 mci->dev_name = ctx->name; in xgene_edac_mc_add()
434 list_add(&ctx->next, &edac->mcus); in xgene_edac_mc_add()
535 struct xgene_edac_pmd_ctx *ctx = edac_dev->pvt_info; in xgene_edac_pmd_l1_check() local
539 pg_f = ctx->pmd_csr + cpu_idx * CPU_CSR_STRIDE + CPU_MEMERR_CPU_PAGE; in xgene_edac_pmd_l1_check()
546 ctx->pmd * MAX_CPU_PER_PMD + cpu_idx, val, in xgene_edac_pmd_l1_check()
586 ctx->pmd * MAX_CPU_PER_PMD + cpu_idx, val, in xgene_edac_pmd_l1_check()
630 ctx->pmd * MAX_CPU_PER_PMD + cpu_idx, val, in xgene_edac_pmd_l1_check()
674 struct xgene_edac_pmd_ctx *ctx = edac_dev->pvt_info; in xgene_edac_pmd_l2_check() local
682 pg_e = ctx->pmd_csr + CPU_MEMERR_L2C_PAGE; in xgene_edac_pmd_l2_check()
690 ctx->pmd, val, val_hi, val_lo); in xgene_edac_pmd_l2_check()
735 pg_d = ctx->pmd_csr + CPU_L2C_PAGE; in xgene_edac_pmd_l2_check()
742 ctx->pmd, val, val_hi, val_lo); in xgene_edac_pmd_l2_check()
749 struct xgene_edac_pmd_ctx *ctx = edac_dev->pvt_info; in xgene_edac_pmd_check() local
753 xgene_edac_pcp_rd(ctx->edac, PCPHPERRINTSTS, &pcp_hp_stat); in xgene_edac_pmd_check()
754 if (!((PMD0_MERR_MASK << ctx->pmd) & pcp_hp_stat)) in xgene_edac_pmd_check()
768 struct xgene_edac_pmd_ctx *ctx = edac_dev->pvt_info; in xgene_edac_pmd_cpu_hw_cfg() local
769 void __iomem *pg_f = ctx->pmd_csr + cpu * CPU_CSR_STRIDE + in xgene_edac_pmd_cpu_hw_cfg()
783 struct xgene_edac_pmd_ctx *ctx = edac_dev->pvt_info; in xgene_edac_pmd_hw_cfg() local
784 void __iomem *pg_d = ctx->pmd_csr + CPU_L2C_PAGE; in xgene_edac_pmd_hw_cfg()
785 void __iomem *pg_e = ctx->pmd_csr + CPU_MEMERR_L2C_PAGE; in xgene_edac_pmd_hw_cfg()
790 if (ctx->version > 1) in xgene_edac_pmd_hw_cfg()
797 struct xgene_edac_pmd_ctx *ctx = edac_dev->pvt_info; in xgene_edac_pmd_hw_ctl() local
803 xgene_edac_pcp_clrbits(ctx->edac, PCPHPERRINTMSK, in xgene_edac_pmd_hw_ctl()
804 PMD0_MERR_MASK << ctx->pmd); in xgene_edac_pmd_hw_ctl()
806 xgene_edac_pcp_setbits(ctx->edac, PCPHPERRINTMSK, in xgene_edac_pmd_hw_ctl()
807 PMD0_MERR_MASK << ctx->pmd); in xgene_edac_pmd_hw_ctl()
824 struct xgene_edac_pmd_ctx *ctx = edac_dev->pvt_info; in xgene_edac_pmd_l1_inject_ctrl_write() local
829 cpux_pg_f = ctx->pmd_csr + i * CPU_CSR_STRIDE + in xgene_edac_pmd_l1_inject_ctrl_write()
850 struct xgene_edac_pmd_ctx *ctx = edac_dev->pvt_info; in xgene_edac_pmd_l2_inject_ctrl_write() local
851 void __iomem *pg_e = ctx->pmd_csr + CPU_MEMERR_L2C_PAGE; in xgene_edac_pmd_l2_inject_ctrl_write()
876 struct xgene_edac_pmd_ctx *ctx = edac_dev->pvt_info; in xgene_edac_pmd_create_debugfs_nodes() local
880 if (!IS_ENABLED(CONFIG_EDAC_DEBUG) || !ctx->edac->dfs) in xgene_edac_pmd_create_debugfs_nodes()
883 snprintf(name, sizeof(name), "PMD%d", ctx->pmd); in xgene_edac_pmd_create_debugfs_nodes()
884 dbgfs_dir = edac_debugfs_create_dir_at(name, ctx->edac->dfs); in xgene_edac_pmd_create_debugfs_nodes()
903 struct xgene_edac_pmd_ctx *ctx; in xgene_edac_pmd_add() local
928 edac_dev = edac_device_alloc_ctl_info(sizeof(*ctx), in xgene_edac_pmd_add()
936 ctx = edac_dev->pvt_info; in xgene_edac_pmd_add()
937 ctx->name = "xgene_pmd_err"; in xgene_edac_pmd_add()
938 ctx->pmd = pmd; in xgene_edac_pmd_add()
939 ctx->edac = edac; in xgene_edac_pmd_add()
940 ctx->edac_dev = edac_dev; in xgene_edac_pmd_add()
941 ctx->ddev = *edac->dev; in xgene_edac_pmd_add()
942 ctx->version = version; in xgene_edac_pmd_add()
943 edac_dev->dev = &ctx->ddev; in xgene_edac_pmd_add()
944 edac_dev->ctl_name = ctx->name; in xgene_edac_pmd_add()
945 edac_dev->dev_name = ctx->name; in xgene_edac_pmd_add()
953 ctx->pmd_csr = devm_ioremap_resource(edac->dev, &res); in xgene_edac_pmd_add()
954 if (IS_ERR(ctx->pmd_csr)) { in xgene_edac_pmd_add()
957 rc = PTR_ERR(ctx->pmd_csr); in xgene_edac_pmd_add()
976 list_add(&ctx->next, &edac->pmds); in xgene_edac_pmd_add()
982 dev_info(edac->dev, "X-Gene EDAC PMD%d registered\n", ctx->pmd); in xgene_edac_pmd_add()
1068 struct xgene_edac_dev_ctx *ctx = edac_dev->pvt_info; in xgene_edac_l3_check() local
1074 l3cesr = readl(ctx->dev_csr + L3C_ESR); in xgene_edac_l3_check()
1083 l3celr = readl(ctx->dev_csr + L3C_ELR); in xgene_edac_l3_check()
1084 l3caelr = readl(ctx->dev_csr + L3C_AELR); in xgene_edac_l3_check()
1085 l3cbelr = readl(ctx->dev_csr + L3C_BELR); in xgene_edac_l3_check()
1113 writel(0, ctx->dev_csr + L3C_ESR); in xgene_edac_l3_check()
1115 if (ctx->version <= 1 && in xgene_edac_l3_check()
1129 struct xgene_edac_dev_ctx *ctx = edac_dev->pvt_info; in xgene_edac_l3_hw_init() local
1132 val = readl(ctx->dev_csr + L3C_ECR); in xgene_edac_l3_hw_init()
1141 writel(val, ctx->dev_csr + L3C_ECR); in xgene_edac_l3_hw_init()
1146 xgene_edac_pcp_clrbits(ctx->edac, PCPHPERRINTMSK, in xgene_edac_l3_hw_init()
1148 xgene_edac_pcp_clrbits(ctx->edac, PCPLPERRINTMSK, in xgene_edac_l3_hw_init()
1151 xgene_edac_pcp_setbits(ctx->edac, PCPHPERRINTMSK, in xgene_edac_l3_hw_init()
1153 xgene_edac_pcp_setbits(ctx->edac, PCPLPERRINTMSK, in xgene_edac_l3_hw_init()
1164 struct xgene_edac_dev_ctx *ctx = edac_dev->pvt_info; in xgene_edac_l3_inject_ctrl_write() local
1167 writel(0xFFFFFFFF, ctx->dev_csr + L3C_ESR); in xgene_edac_l3_inject_ctrl_write()
1180 struct xgene_edac_dev_ctx *ctx = edac_dev->pvt_info; in xgene_edac_l3_create_debugfs_nodes() local
1184 if (!IS_ENABLED(CONFIG_EDAC_DEBUG) || !ctx->edac->dfs) in xgene_edac_l3_create_debugfs_nodes()
1187 snprintf(name, sizeof(name), "l3c%d", ctx->edac_idx); in xgene_edac_l3_create_debugfs_nodes()
1188 dbgfs_dir = edac_debugfs_create_dir_at(name, ctx->edac->dfs); in xgene_edac_l3_create_debugfs_nodes()
1200 struct xgene_edac_dev_ctx *ctx; in xgene_edac_l3_add() local
1223 edac_dev = edac_device_alloc_ctl_info(sizeof(*ctx), in xgene_edac_l3_add()
1231 ctx = edac_dev->pvt_info; in xgene_edac_l3_add()
1232 ctx->dev_csr = dev_csr; in xgene_edac_l3_add()
1233 ctx->name = "xgene_l3_err"; in xgene_edac_l3_add()
1234 ctx->edac_idx = edac_idx; in xgene_edac_l3_add()
1235 ctx->edac = edac; in xgene_edac_l3_add()
1236 ctx->edac_dev = edac_dev; in xgene_edac_l3_add()
1237 ctx->ddev = *edac->dev; in xgene_edac_l3_add()
1238 ctx->version = version; in xgene_edac_l3_add()
1239 edac_dev->dev = &ctx->ddev; in xgene_edac_l3_add()
1240 edac_dev->ctl_name = ctx->name; in xgene_edac_l3_add()
1241 edac_dev->dev_name = ctx->name; in xgene_edac_l3_add()
1259 list_add(&ctx->next, &edac->l3s); in xgene_edac_l3_add()
1393 struct xgene_edac_dev_ctx *ctx = edac_dev->pvt_info; in xgene_edac_iob_gic_report() local
1400 reg = readl(ctx->dev_csr + XGICTRANSERRINTSTS); in xgene_edac_iob_gic_report()
1412 info = readl(ctx->dev_csr + XGICTRANSERRREQINFO); in xgene_edac_iob_gic_report()
1416 writel(reg, ctx->dev_csr + XGICTRANSERRINTSTS); in xgene_edac_iob_gic_report()
1420 reg = readl(ctx->dev_csr + GLBL_ERR_STS); in xgene_edac_iob_gic_report()
1424 err_addr_lo = readl(ctx->dev_csr + GLBL_SEC_ERRL); in xgene_edac_iob_gic_report()
1425 err_addr_hi = readl(ctx->dev_csr + GLBL_SEC_ERRH); in xgene_edac_iob_gic_report()
1429 writel(err_addr_lo, ctx->dev_csr + GLBL_SEC_ERRL); in xgene_edac_iob_gic_report()
1430 writel(err_addr_hi, ctx->dev_csr + GLBL_SEC_ERRH); in xgene_edac_iob_gic_report()
1433 err_addr_lo = readl(ctx->dev_csr + GLBL_MSEC_ERRL); in xgene_edac_iob_gic_report()
1434 err_addr_hi = readl(ctx->dev_csr + GLBL_MSEC_ERRH); in xgene_edac_iob_gic_report()
1438 writel(err_addr_lo, ctx->dev_csr + GLBL_MSEC_ERRL); in xgene_edac_iob_gic_report()
1439 writel(err_addr_hi, ctx->dev_csr + GLBL_MSEC_ERRH); in xgene_edac_iob_gic_report()
1445 err_addr_lo = readl(ctx->dev_csr + GLBL_DED_ERRL); in xgene_edac_iob_gic_report()
1446 err_addr_hi = readl(ctx->dev_csr + GLBL_DED_ERRH); in xgene_edac_iob_gic_report()
1450 writel(err_addr_lo, ctx->dev_csr + GLBL_DED_ERRL); in xgene_edac_iob_gic_report()
1451 writel(err_addr_hi, ctx->dev_csr + GLBL_DED_ERRH); in xgene_edac_iob_gic_report()
1454 err_addr_lo = readl(ctx->dev_csr + GLBL_MDED_ERRL); in xgene_edac_iob_gic_report()
1455 err_addr_hi = readl(ctx->dev_csr + GLBL_MDED_ERRH); in xgene_edac_iob_gic_report()
1459 writel(err_addr_lo, ctx->dev_csr + GLBL_MDED_ERRL); in xgene_edac_iob_gic_report()
1460 writel(err_addr_hi, ctx->dev_csr + GLBL_MDED_ERRH); in xgene_edac_iob_gic_report()
1468 struct xgene_edac_dev_ctx *ctx = edac_dev->pvt_info; in xgene_edac_rb_report() local
1474 reg = readl(ctx->dev_csr + IOBBATRANSERRINTSTS); in xgene_edac_rb_report()
1521 err_addr_lo = readl(ctx->dev_csr + IOBBATRANSERRREQINFOL); in xgene_edac_rb_report()
1522 err_addr_hi = readl(ctx->dev_csr + IOBBATRANSERRREQINFOH); in xgene_edac_rb_report()
1528 readl(ctx->dev_csr + IOBBATRANSERRCSWREQID)); in xgene_edac_rb_report()
1529 writel(reg, ctx->dev_csr + IOBBATRANSERRINTSTS); in xgene_edac_rb_report()
1534 struct xgene_edac_dev_ctx *ctx = edac_dev->pvt_info; in xgene_edac_pa_report() local
1540 reg = readl(ctx->dev_csr + IOBPATRANSERRINTSTS); in xgene_edac_pa_report()
1563 writel(reg, ctx->dev_csr + IOBPATRANSERRINTSTS); in xgene_edac_pa_report()
1567 reg = readl(ctx->dev_csr + IOBAXIS0TRANSERRINTSTS); in xgene_edac_pa_report()
1570 err_addr_lo = readl(ctx->dev_csr + IOBAXIS0TRANSERRREQINFOL); in xgene_edac_pa_report()
1571 err_addr_hi = readl(ctx->dev_csr + IOBAXIS0TRANSERRREQINFOH); in xgene_edac_pa_report()
1577 writel(reg, ctx->dev_csr + IOBAXIS0TRANSERRINTSTS); in xgene_edac_pa_report()
1581 reg = readl(ctx->dev_csr + IOBAXIS1TRANSERRINTSTS); in xgene_edac_pa_report()
1584 err_addr_lo = readl(ctx->dev_csr + IOBAXIS1TRANSERRREQINFOL); in xgene_edac_pa_report()
1585 err_addr_hi = readl(ctx->dev_csr + IOBAXIS1TRANSERRREQINFOH); in xgene_edac_pa_report()
1591 writel(reg, ctx->dev_csr + IOBAXIS1TRANSERRINTSTS); in xgene_edac_pa_report()
1596 struct xgene_edac_dev_ctx *ctx = edac_dev->pvt_info; in xgene_edac_soc_check() local
1603 xgene_edac_pcp_rd(ctx->edac, PCPHPERRINTSTS, &pcp_hp_stat); in xgene_edac_soc_check()
1604 xgene_edac_pcp_rd(ctx->edac, PCPLPERRINTSTS, &pcp_lp_stat); in xgene_edac_soc_check()
1605 xgene_edac_pcp_rd(ctx->edac, MEMERRINTSTS, ®); in xgene_edac_soc_check()
1628 if (ctx->version == 1) in xgene_edac_soc_check()
1649 struct xgene_edac_dev_ctx *ctx = edac_dev->pvt_info; in xgene_edac_soc_hw_init() local
1654 xgene_edac_pcp_clrbits(ctx->edac, PCPHPERRINTMSK, in xgene_edac_soc_hw_init()
1659 xgene_edac_pcp_clrbits(ctx->edac, PCPLPERRINTMSK, in xgene_edac_soc_hw_init()
1662 xgene_edac_pcp_setbits(ctx->edac, PCPHPERRINTMSK, in xgene_edac_soc_hw_init()
1667 xgene_edac_pcp_setbits(ctx->edac, PCPLPERRINTMSK, in xgene_edac_soc_hw_init()
1672 ctx->dev_csr + IOBAXIS0TRANSERRINTMSK); in xgene_edac_soc_hw_init()
1674 ctx->dev_csr + IOBAXIS1TRANSERRINTMSK); in xgene_edac_soc_hw_init()
1676 ctx->dev_csr + XGICTRANSERRINTMSK); in xgene_edac_soc_hw_init()
1678 xgene_edac_pcp_setbits(ctx->edac, MEMERRINTMSK, in xgene_edac_soc_hw_init()
1687 struct xgene_edac_dev_ctx *ctx; in xgene_edac_soc_add() local
1710 edac_dev = edac_device_alloc_ctl_info(sizeof(*ctx), in xgene_edac_soc_add()
1718 ctx = edac_dev->pvt_info; in xgene_edac_soc_add()
1719 ctx->dev_csr = dev_csr; in xgene_edac_soc_add()
1720 ctx->name = "xgene_soc_err"; in xgene_edac_soc_add()
1721 ctx->edac_idx = edac_idx; in xgene_edac_soc_add()
1722 ctx->edac = edac; in xgene_edac_soc_add()
1723 ctx->edac_dev = edac_dev; in xgene_edac_soc_add()
1724 ctx->ddev = *edac->dev; in xgene_edac_soc_add()
1725 ctx->version = version; in xgene_edac_soc_add()
1726 edac_dev->dev = &ctx->ddev; in xgene_edac_soc_add()
1727 edac_dev->ctl_name = ctx->name; in xgene_edac_soc_add()
1728 edac_dev->dev_name = ctx->name; in xgene_edac_soc_add()
1744 list_add(&ctx->next, &edac->socs); in xgene_edac_soc_add()
1773 struct xgene_edac *ctx = dev_id; in xgene_edac_isr() local
1779 xgene_edac_pcp_rd(ctx, PCPHPERRINTSTS, &pcp_hp_stat); in xgene_edac_isr()
1780 xgene_edac_pcp_rd(ctx, PCPLPERRINTSTS, &pcp_lp_stat); in xgene_edac_isr()
1786 list_for_each_entry(mcu, &ctx->mcus, next) in xgene_edac_isr()
1790 list_for_each_entry(pmd, &ctx->pmds, next) { in xgene_edac_isr()
1795 list_for_each_entry(node, &ctx->l3s, next) in xgene_edac_isr()
1798 list_for_each_entry(node, &ctx->socs, next) in xgene_edac_isr()