Lines Matching refs:mci

408 static int edac_create_csrow_object(struct mem_ctl_info *mci,  in edac_create_csrow_object()  argument
412 csrow->dev.bus = mci->bus; in edac_create_csrow_object()
415 csrow->dev.parent = &mci->dev; in edac_create_csrow_object()
416 csrow->mci = mci; in edac_create_csrow_object()
427 static int edac_create_csrow_objects(struct mem_ctl_info *mci) in edac_create_csrow_objects() argument
432 for (i = 0; i < mci->nr_csrows; i++) { in edac_create_csrow_objects()
433 csrow = mci->csrows[i]; in edac_create_csrow_objects()
436 err = edac_create_csrow_object(mci, mci->csrows[i], i); in edac_create_csrow_objects()
448 csrow = mci->csrows[i]; in edac_create_csrow_objects()
451 put_device(&mci->csrows[i]->dev); in edac_create_csrow_objects()
457 static void edac_delete_csrow_objects(struct mem_ctl_info *mci) in edac_delete_csrow_objects() argument
462 for (i = mci->nr_csrows - 1; i >= 0; i--) { in edac_delete_csrow_objects()
463 csrow = mci->csrows[i]; in edac_delete_csrow_objects()
466 device_unregister(&mci->csrows[i]->dev); in edac_delete_csrow_objects()
597 static int edac_create_dimm_object(struct mem_ctl_info *mci, in edac_create_dimm_object() argument
602 dimm->mci = mci; in edac_create_dimm_object()
605 dimm->dev.bus = mci->bus; in edac_create_dimm_object()
608 dimm->dev.parent = &mci->dev; in edac_create_dimm_object()
609 if (mci->csbased) in edac_create_dimm_object()
614 pm_runtime_forbid(&mci->dev); in edac_create_dimm_object()
633 struct mem_ctl_info *mci = to_mci(dev); in mci_reset_counters_store() local
635 mci->ue_mc = 0; in mci_reset_counters_store()
636 mci->ce_mc = 0; in mci_reset_counters_store()
637 mci->ue_noinfo_count = 0; in mci_reset_counters_store()
638 mci->ce_noinfo_count = 0; in mci_reset_counters_store()
640 for (row = 0; row < mci->nr_csrows; row++) { in mci_reset_counters_store()
641 struct csrow_info *ri = mci->csrows[row]; in mci_reset_counters_store()
651 for (i = 0; i < mci->n_layers; i++) { in mci_reset_counters_store()
652 cnt *= mci->layers[i].size; in mci_reset_counters_store()
653 memset(mci->ce_per_layer[i], 0, cnt * sizeof(u32)); in mci_reset_counters_store()
654 memset(mci->ue_per_layer[i], 0, cnt * sizeof(u32)); in mci_reset_counters_store()
657 mci->start_time = jiffies; in mci_reset_counters_store()
674 struct mem_ctl_info *mci = to_mci(dev); in mci_sdram_scrub_rate_store() local
681 new_bw = mci->set_sdram_scrub_rate(mci, bandwidth); in mci_sdram_scrub_rate_store()
698 struct mem_ctl_info *mci = to_mci(dev); in mci_sdram_scrub_rate_show() local
701 bandwidth = mci->get_sdram_scrub_rate(mci); in mci_sdram_scrub_rate_show()
715 struct mem_ctl_info *mci = to_mci(dev); in mci_ue_count_show() local
717 return sprintf(data, "%d\n", mci->ue_mc); in mci_ue_count_show()
724 struct mem_ctl_info *mci = to_mci(dev); in mci_ce_count_show() local
726 return sprintf(data, "%d\n", mci->ce_mc); in mci_ce_count_show()
733 struct mem_ctl_info *mci = to_mci(dev); in mci_ce_noinfo_show() local
735 return sprintf(data, "%d\n", mci->ce_noinfo_count); in mci_ce_noinfo_show()
742 struct mem_ctl_info *mci = to_mci(dev); in mci_ue_noinfo_show() local
744 return sprintf(data, "%d\n", mci->ue_noinfo_count); in mci_ue_noinfo_show()
751 struct mem_ctl_info *mci = to_mci(dev); in mci_seconds_show() local
753 return sprintf(data, "%ld\n", (jiffies - mci->start_time) / HZ); in mci_seconds_show()
760 struct mem_ctl_info *mci = to_mci(dev); in mci_ctl_name_show() local
762 return sprintf(data, "%s\n", mci->ctl_name); in mci_ctl_name_show()
769 struct mem_ctl_info *mci = to_mci(dev); in mci_size_mb_show() local
772 for (csrow_idx = 0; csrow_idx < mci->nr_csrows; csrow_idx++) { in mci_size_mb_show()
773 struct csrow_info *csrow = mci->csrows[csrow_idx]; in mci_size_mb_show()
789 struct mem_ctl_info *mci = to_mci(dev); in mci_max_location_show() local
793 for (i = 0; i < mci->n_layers; i++) { in mci_max_location_show()
795 edac_layer_name[mci->layers[i].type], in mci_max_location_show()
796 mci->layers[i].size - 1); in mci_max_location_show()
837 struct mem_ctl_info *mci = to_mci(dev); in mci_attr_is_visible() local
842 if (mci->get_sdram_scrub_rate) in mci_attr_is_visible()
844 if (mci->set_sdram_scrub_rate) in mci_attr_is_visible()
861 struct mem_ctl_info *mci = container_of(dev, struct mem_ctl_info, dev); in mci_attr_release() local
864 kfree(mci); in mci_attr_release()
880 int edac_create_sysfs_mci_device(struct mem_ctl_info *mci, in edac_create_sysfs_mci_device() argument
890 name = kasprintf(GFP_KERNEL, "mc%d", mci->mc_idx); in edac_create_sysfs_mci_device()
894 mci->bus->name = name; in edac_create_sysfs_mci_device()
896 edac_dbg(0, "creating bus %s\n", mci->bus->name); in edac_create_sysfs_mci_device()
898 err = bus_register(mci->bus); in edac_create_sysfs_mci_device()
905 mci->dev.type = &mci_attr_type; in edac_create_sysfs_mci_device()
906 device_initialize(&mci->dev); in edac_create_sysfs_mci_device()
908 mci->dev.parent = mci_pdev; in edac_create_sysfs_mci_device()
909 mci->dev.bus = mci->bus; in edac_create_sysfs_mci_device()
910 mci->dev.groups = groups; in edac_create_sysfs_mci_device()
911 dev_set_name(&mci->dev, "mc%d", mci->mc_idx); in edac_create_sysfs_mci_device()
912 dev_set_drvdata(&mci->dev, mci); in edac_create_sysfs_mci_device()
913 pm_runtime_forbid(&mci->dev); in edac_create_sysfs_mci_device()
915 edac_dbg(0, "creating device %s\n", dev_name(&mci->dev)); in edac_create_sysfs_mci_device()
916 err = device_add(&mci->dev); in edac_create_sysfs_mci_device()
918 edac_dbg(1, "failure: create device %s\n", dev_name(&mci->dev)); in edac_create_sysfs_mci_device()
925 for (i = 0; i < mci->tot_dimms; i++) { in edac_create_sysfs_mci_device()
926 struct dimm_info *dimm = mci->dimms[i]; in edac_create_sysfs_mci_device()
935 for (lay = 0; lay < mci->n_layers; lay++) in edac_create_sysfs_mci_device()
937 edac_layer_name[mci->layers[lay].type], in edac_create_sysfs_mci_device()
942 err = edac_create_dimm_object(mci, dimm, i); in edac_create_sysfs_mci_device()
950 err = edac_create_csrow_objects(mci); in edac_create_sysfs_mci_device()
955 edac_create_debugfs_nodes(mci); in edac_create_sysfs_mci_device()
960 struct dimm_info *dimm = mci->dimms[i]; in edac_create_sysfs_mci_device()
966 device_unregister(&mci->dev); in edac_create_sysfs_mci_device()
968 bus_unregister(mci->bus); in edac_create_sysfs_mci_device()
977 void edac_remove_sysfs_mci_device(struct mem_ctl_info *mci) in edac_remove_sysfs_mci_device() argument
984 edac_debugfs_remove_recursive(mci->debugfs); in edac_remove_sysfs_mci_device()
987 edac_delete_csrow_objects(mci); in edac_remove_sysfs_mci_device()
990 for (i = 0; i < mci->tot_dimms; i++) { in edac_remove_sysfs_mci_device()
991 struct dimm_info *dimm = mci->dimms[i]; in edac_remove_sysfs_mci_device()
999 void edac_unregister_sysfs(struct mem_ctl_info *mci) in edac_unregister_sysfs() argument
1001 const char *name = mci->bus->name; in edac_unregister_sysfs()
1003 edac_dbg(1, "Unregistering device %s\n", dev_name(&mci->dev)); in edac_unregister_sysfs()
1004 device_unregister(&mci->dev); in edac_unregister_sysfs()
1005 bus_unregister(mci->bus); in edac_unregister_sysfs()