Lines Matching refs:mci
403 static int edac_create_csrow_object(struct mem_ctl_info *mci, in edac_create_csrow_object() argument
412 csrow->dev.parent = &mci->dev; in edac_create_csrow_object()
413 csrow->mci = mci; in edac_create_csrow_object()
430 static int edac_create_csrow_objects(struct mem_ctl_info *mci) in edac_create_csrow_objects() argument
435 for (i = 0; i < mci->nr_csrows; i++) { in edac_create_csrow_objects()
436 csrow = mci->csrows[i]; in edac_create_csrow_objects()
439 err = edac_create_csrow_object(mci, mci->csrows[i], i); in edac_create_csrow_objects()
447 if (device_is_registered(&mci->csrows[i]->dev)) in edac_create_csrow_objects()
448 device_unregister(&mci->csrows[i]->dev); in edac_create_csrow_objects()
454 static void edac_delete_csrow_objects(struct mem_ctl_info *mci) in edac_delete_csrow_objects() argument
458 for (i = 0; i < mci->nr_csrows; i++) { in edac_delete_csrow_objects()
459 if (device_is_registered(&mci->csrows[i]->dev)) in edac_delete_csrow_objects()
460 device_unregister(&mci->csrows[i]->dev); in edac_delete_csrow_objects()
617 static int edac_create_dimm_object(struct mem_ctl_info *mci, in edac_create_dimm_object() argument
621 dimm->mci = mci; in edac_create_dimm_object()
627 dimm->dev.parent = &mci->dev; in edac_create_dimm_object()
628 if (mci->csbased) in edac_create_dimm_object()
633 pm_runtime_forbid(&mci->dev); in edac_create_dimm_object()
663 struct mem_ctl_info *mci = to_mci(dev); in mci_reset_counters_store() local
667 mci->ue_mc = 0; in mci_reset_counters_store()
668 mci->ce_mc = 0; in mci_reset_counters_store()
669 mci->ue_noinfo_count = 0; in mci_reset_counters_store()
670 mci->ce_noinfo_count = 0; in mci_reset_counters_store()
672 for (row = 0; row < mci->nr_csrows; row++) { in mci_reset_counters_store()
673 struct csrow_info *ri = mci->csrows[row]; in mci_reset_counters_store()
682 mci_for_each_dimm(mci, dimm) { in mci_reset_counters_store()
687 mci->start_time = jiffies; in mci_reset_counters_store()
704 struct mem_ctl_info *mci = to_mci(dev); in mci_sdram_scrub_rate_store() local
711 new_bw = mci->set_sdram_scrub_rate(mci, bandwidth); in mci_sdram_scrub_rate_store()
728 struct mem_ctl_info *mci = to_mci(dev); in mci_sdram_scrub_rate_show() local
731 bandwidth = mci->get_sdram_scrub_rate(mci); in mci_sdram_scrub_rate_show()
745 struct mem_ctl_info *mci = to_mci(dev); in mci_ue_count_show() local
747 return sprintf(data, "%d\n", mci->ue_mc); in mci_ue_count_show()
754 struct mem_ctl_info *mci = to_mci(dev); in mci_ce_count_show() local
756 return sprintf(data, "%d\n", mci->ce_mc); in mci_ce_count_show()
763 struct mem_ctl_info *mci = to_mci(dev); in mci_ce_noinfo_show() local
765 return sprintf(data, "%d\n", mci->ce_noinfo_count); in mci_ce_noinfo_show()
772 struct mem_ctl_info *mci = to_mci(dev); in mci_ue_noinfo_show() local
774 return sprintf(data, "%d\n", mci->ue_noinfo_count); in mci_ue_noinfo_show()
781 struct mem_ctl_info *mci = to_mci(dev); in mci_seconds_show() local
783 return sprintf(data, "%ld\n", (jiffies - mci->start_time) / HZ); in mci_seconds_show()
790 struct mem_ctl_info *mci = to_mci(dev); in mci_ctl_name_show() local
792 return sprintf(data, "%s\n", mci->ctl_name); in mci_ctl_name_show()
799 struct mem_ctl_info *mci = to_mci(dev); in mci_size_mb_show() local
802 for (csrow_idx = 0; csrow_idx < mci->nr_csrows; csrow_idx++) { in mci_size_mb_show()
803 struct csrow_info *csrow = mci->csrows[csrow_idx]; in mci_size_mb_show()
819 struct mem_ctl_info *mci = to_mci(dev); in mci_max_location_show() local
824 for (i = 0; i < mci->n_layers; i++) { in mci_max_location_show()
826 edac_layer_name[mci->layers[i].type], in mci_max_location_show()
827 mci->layers[i].size - 1); in mci_max_location_show()
875 struct mem_ctl_info *mci = to_mci(dev); in mci_attr_is_visible() local
880 if (mci->get_sdram_scrub_rate) in mci_attr_is_visible()
882 if (mci->set_sdram_scrub_rate) in mci_attr_is_visible()
909 int edac_create_sysfs_mci_device(struct mem_ctl_info *mci, in edac_create_sysfs_mci_device() argument
916 mci->dev.type = &mci_attr_type; in edac_create_sysfs_mci_device()
917 mci->dev.parent = mci_pdev; in edac_create_sysfs_mci_device()
918 mci->dev.groups = groups; in edac_create_sysfs_mci_device()
919 dev_set_name(&mci->dev, "mc%d", mci->mc_idx); in edac_create_sysfs_mci_device()
920 dev_set_drvdata(&mci->dev, mci); in edac_create_sysfs_mci_device()
921 pm_runtime_forbid(&mci->dev); in edac_create_sysfs_mci_device()
923 err = device_add(&mci->dev); in edac_create_sysfs_mci_device()
925 edac_dbg(1, "failure: create device %s\n", dev_name(&mci->dev)); in edac_create_sysfs_mci_device()
930 edac_dbg(0, "device %s created\n", dev_name(&mci->dev)); in edac_create_sysfs_mci_device()
935 mci_for_each_dimm(mci, dimm) { in edac_create_sysfs_mci_device()
940 err = edac_create_dimm_object(mci, dimm); in edac_create_sysfs_mci_device()
946 err = edac_create_csrow_objects(mci); in edac_create_sysfs_mci_device()
951 edac_create_debugfs_nodes(mci); in edac_create_sysfs_mci_device()
955 edac_remove_sysfs_mci_device(mci); in edac_create_sysfs_mci_device()
963 void edac_remove_sysfs_mci_device(struct mem_ctl_info *mci) in edac_remove_sysfs_mci_device() argument
967 if (!device_is_registered(&mci->dev)) in edac_remove_sysfs_mci_device()
973 edac_debugfs_remove_recursive(mci->debugfs); in edac_remove_sysfs_mci_device()
976 edac_delete_csrow_objects(mci); in edac_remove_sysfs_mci_device()
979 mci_for_each_dimm(mci, dimm) { in edac_remove_sysfs_mci_device()
987 device_del(&mci->dev); in edac_remove_sysfs_mci_device()