Lines Matching refs:mci

40 #define e752x_mc_printk(mci, level, fmt, arg...) \
41 edac_mc_chipset_printk(mci, level, "e752x", fmt, ##arg)
304 static unsigned long ctl_page_to_phys(struct mem_ctl_info *mci,
308 struct e752x_pvt *pvt = (struct e752x_pvt *)mci->pvt_info;
327 static void do_process_ce(struct mem_ctl_info *mci, u16 error_one,
334 struct e752x_pvt *pvt = (struct e752x_pvt *)mci->pvt_info;
362 e752x_mc_printk(mci, KERN_WARNING,
366 row = edac_mc_find_csrow_by_page(mci, page);
372 edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1,
378 static inline void process_ce(struct mem_ctl_info *mci, u16 error_one,
385 do_process_ce(mci, error_one, sec1_add, sec1_syndrome);
388 static void do_process_ue(struct mem_ctl_info *mci, u16 error_one,
393 struct e752x_pvt *pvt = (struct e752x_pvt *)mci->pvt_info;
406 edac_mc_find_csrow_by_page(mci, block_page);
409 edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1,
425 edac_mc_find_csrow_by_page(mci, block_page);
428 edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1,
436 static inline void process_ue(struct mem_ctl_info *mci, u16 error_one,
443 do_process_ue(mci, error_one, ded_add, scrb_add);
446 static inline void process_ue_no_info_wr(struct mem_ctl_info *mci,
455 edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1, 0, 0, 0,
460 static void do_process_ded_retry(struct mem_ctl_info *mci, u16 error,
465 struct e752x_pvt *pvt = (struct e752x_pvt *)mci->pvt_info;
472 edac_mc_find_csrow_by_page(mci, page);
474 e752x_mc_printk(mci, KERN_WARNING,
479 static inline void process_ded_retry(struct mem_ctl_info *mci, u16 error,
486 do_process_ded_retry(mci, error, retry_add);
489 static inline void process_threshold_ce(struct mem_ctl_info *mci, u16 error,
495 e752x_mc_printk(mci, KERN_WARNING, "Memory threshold CE\n");
790 static void e752x_check_dram(struct mem_ctl_info *mci,
801 process_ce(mci, error_one, info->dram_sec1_add,
805 process_ce(mci, error_next, info->dram_sec2_add,
809 process_ue_no_info_wr(mci, error_found, handle_error);
812 process_ue_no_info_wr(mci, error_found, handle_error);
815 process_ded_retry(mci, error_one, info->dram_retr_add,
819 process_ded_retry(mci, error_next, info->dram_retr_add,
823 process_threshold_ce(mci, error_one, error_found, handle_error);
826 process_threshold_ce(mci, error_next, error_found,
830 process_ue(mci, error_one, info->dram_ded_add,
834 process_ue(mci, error_next, info->dram_ded_add,
838 static void e752x_get_error_info(struct mem_ctl_info *mci,
845 pvt = (struct e752x_pvt *)mci->pvt_info;
945 static int e752x_process_error_info(struct mem_ctl_info *mci,
975 e752x_check_dram(mci, info, &error_found, handle_errors);
979 static void e752x_check(struct mem_ctl_info *mci)
983 e752x_get_error_info(mci, &info);
984 e752x_process_error_info(mci, &info, 1);
988 static int set_sdram_scrub_rate(struct mem_ctl_info *mci, u32 new_bw)
991 struct e752x_pvt *pvt = (struct e752x_pvt *) mci->pvt_info;
1017 static int get_sdram_scrub_rate(struct mem_ctl_info *mci)
1020 struct e752x_pvt *pvt = (struct e752x_pvt *) mci->pvt_info;
1055 static inline int remap_csrow_index(struct mem_ctl_info *mci, int index)
1057 struct e752x_pvt *pvt = mci->pvt_info;
1065 static void e752x_init_csrows(struct mem_ctl_info *mci, struct pci_dev *pdev,
1093 for (last_cumul_size = index = 0; index < mci->nr_csrows; index++) {
1096 csrow = mci->csrows[remap_csrow_index(mci, index)];
1118 mci->edac_cap |= EDAC_FLAG_S4ECD4ED;
1121 mci->edac_cap |= EDAC_FLAG_SECDED;
1259 struct mem_ctl_info *mci;
1266 edac_dbg(0, "mci\n");
1293 mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(*pvt));
1294 if (mci == NULL)
1297 edac_dbg(3, "init mci\n");
1298 mci->mtype_cap = MEM_FLAG_RDDR;
1300 mci->edac_ctl_cap = (dev_idx == I3100) ? EDAC_FLAG_SECDED :
1303 mci->mod_name = EDAC_MOD_STR;
1304 mci->pdev = &pdev->dev;
1307 pvt = (struct e752x_pvt *)mci->pvt_info;
1312 edac_mc_free(mci);
1316 edac_dbg(3, "more mci init\n");
1317 mci->ctl_name = pvt->dev_info->ctl_name;
1318 mci->dev_name = pci_name(pdev);
1319 mci->edac_check = e752x_check;
1320 mci->ctl_page_to_phys = ctl_page_to_phys;
1321 mci->set_sdram_scrub_rate = set_sdram_scrub_rate;
1322 mci->get_sdram_scrub_rate = get_sdram_scrub_rate;
1331 e752x_init_csrows(mci, pdev, ddrcsr);
1335 mci->edac_cap = EDAC_FLAG_SECDED; /* the only mode supported */
1337 mci->edac_cap |= EDAC_FLAG_NONE;
1354 if (edac_mc_add_mc(mci)) {
1360 e752x_get_error_info(mci, &discard); /* clear other MCH errors */
1379 edac_mc_free(mci);
1398 struct mem_ctl_info *mci;
1406 if ((mci = edac_mc_del_mc(&pdev->dev)) == NULL)
1409 pvt = (struct e752x_pvt *)mci->pvt_info;
1412 edac_mc_free(mci);