Loading drivers/edac/i7core_edac.c +12 −21 Original line number Diff line number Diff line Loading @@ -1536,18 +1536,6 @@ static int mci_bind_devs(struct mem_ctl_info *mci, /**************************************************************************** Error check routines ****************************************************************************/ static void i7core_rdimm_update_errcount(struct mem_ctl_info *mci, const int chan, const int dimm, const int add) { int i; for (i = 0; i < add; i++) { edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1, 0, 0, 0, chan, dimm, -1, "error", ""); } } static void i7core_rdimm_update_ce_count(struct mem_ctl_info *mci, const int chan, Loading Loading @@ -1586,12 +1574,17 @@ static void i7core_rdimm_update_ce_count(struct mem_ctl_info *mci, /*updated the edac core */ if (add0 != 0) i7core_rdimm_update_errcount(mci, chan, 0, add0); edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, add0, 0, 0, 0, chan, 0, -1, "error", ""); if (add1 != 0) i7core_rdimm_update_errcount(mci, chan, 1, add1); edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, add1, 0, 0, 0, chan, 1, -1, "error", ""); if (add2 != 0) i7core_rdimm_update_errcount(mci, chan, 2, add2); edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, add2, 0, 0, 0, chan, 2, -1, "error", ""); } static void i7core_rdimm_check_mc_ecc_err(struct mem_ctl_info *mci) Loading Loading @@ -1710,7 +1703,7 @@ static void i7core_mce_output_error(struct mem_ctl_info *mci, const struct mce *m) { struct i7core_pvt *pvt = mci->pvt_info; char *type, *optype, *err, msg[80]; char *type, *optype, *err; enum hw_event_mc_err_type tp_event; unsigned long error = m->status & 0x1ff0000l; bool uncorrected_error = m->mcgstatus & 1ll << 61; Loading Loading @@ -1788,20 +1781,18 @@ static void i7core_mce_output_error(struct mem_ctl_info *mci, err = "unknown"; } snprintf(msg, sizeof(msg), "count=%d %s", core_err_cnt, optype); /* * Call the helper to output message * FIXME: what to do if core_err_cnt > 1? Currently, it generates * only one event */ if (uncorrected_error || !pvt->is_registered) edac_mc_handle_error(tp_event, mci, 1, edac_mc_handle_error(tp_event, mci, core_err_cnt, m->addr >> PAGE_SHIFT, m->addr & ~PAGE_MASK, syndrome, channel, dimm, -1, err, msg); err, optype); } /* Loading Loading
drivers/edac/i7core_edac.c +12 −21 Original line number Diff line number Diff line Loading @@ -1536,18 +1536,6 @@ static int mci_bind_devs(struct mem_ctl_info *mci, /**************************************************************************** Error check routines ****************************************************************************/ static void i7core_rdimm_update_errcount(struct mem_ctl_info *mci, const int chan, const int dimm, const int add) { int i; for (i = 0; i < add; i++) { edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1, 0, 0, 0, chan, dimm, -1, "error", ""); } } static void i7core_rdimm_update_ce_count(struct mem_ctl_info *mci, const int chan, Loading Loading @@ -1586,12 +1574,17 @@ static void i7core_rdimm_update_ce_count(struct mem_ctl_info *mci, /*updated the edac core */ if (add0 != 0) i7core_rdimm_update_errcount(mci, chan, 0, add0); edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, add0, 0, 0, 0, chan, 0, -1, "error", ""); if (add1 != 0) i7core_rdimm_update_errcount(mci, chan, 1, add1); edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, add1, 0, 0, 0, chan, 1, -1, "error", ""); if (add2 != 0) i7core_rdimm_update_errcount(mci, chan, 2, add2); edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, add2, 0, 0, 0, chan, 2, -1, "error", ""); } static void i7core_rdimm_check_mc_ecc_err(struct mem_ctl_info *mci) Loading Loading @@ -1710,7 +1703,7 @@ static void i7core_mce_output_error(struct mem_ctl_info *mci, const struct mce *m) { struct i7core_pvt *pvt = mci->pvt_info; char *type, *optype, *err, msg[80]; char *type, *optype, *err; enum hw_event_mc_err_type tp_event; unsigned long error = m->status & 0x1ff0000l; bool uncorrected_error = m->mcgstatus & 1ll << 61; Loading Loading @@ -1788,20 +1781,18 @@ static void i7core_mce_output_error(struct mem_ctl_info *mci, err = "unknown"; } snprintf(msg, sizeof(msg), "count=%d %s", core_err_cnt, optype); /* * Call the helper to output message * FIXME: what to do if core_err_cnt > 1? Currently, it generates * only one event */ if (uncorrected_error || !pvt->is_registered) edac_mc_handle_error(tp_event, mci, 1, edac_mc_handle_error(tp_event, mci, core_err_cnt, m->addr >> PAGE_SHIFT, m->addr & ~PAGE_MASK, syndrome, channel, dimm, -1, err, msg); err, optype); } /* Loading