Lines Matching refs:mci

404 static int edac_create_csrow_object(struct mem_ctl_info *mci,  in edac_create_csrow_object()  argument
408 csrow->dev.bus = mci->bus; in edac_create_csrow_object()
411 csrow->dev.parent = &mci->dev; in edac_create_csrow_object()
412 csrow->mci = mci; in edac_create_csrow_object()
423 static int edac_create_csrow_objects(struct mem_ctl_info *mci) in edac_create_csrow_objects() argument
428 for (i = 0; i < mci->nr_csrows; i++) { in edac_create_csrow_objects()
429 csrow = mci->csrows[i]; in edac_create_csrow_objects()
432 err = edac_create_csrow_object(mci, mci->csrows[i], i); in edac_create_csrow_objects()
444 csrow = mci->csrows[i]; in edac_create_csrow_objects()
447 put_device(&mci->csrows[i]->dev); in edac_create_csrow_objects()
453 static void edac_delete_csrow_objects(struct mem_ctl_info *mci) in edac_delete_csrow_objects() argument
458 for (i = mci->nr_csrows - 1; i >= 0; i--) { in edac_delete_csrow_objects()
459 csrow = mci->csrows[i]; in edac_delete_csrow_objects()
462 device_unregister(&mci->csrows[i]->dev); in edac_delete_csrow_objects()
558 off = EDAC_DIMM_OFF(dimm->mci->layers, in dimmdev_ce_count_show()
559 dimm->mci->n_layers, in dimmdev_ce_count_show()
563 count = dimm->mci->ce_per_layer[dimm->mci->n_layers-1][off]; in dimmdev_ce_count_show()
575 off = EDAC_DIMM_OFF(dimm->mci->layers, in dimmdev_ue_count_show()
576 dimm->mci->n_layers, in dimmdev_ue_count_show()
580 count = dimm->mci->ue_per_layer[dimm->mci->n_layers-1][off]; in dimmdev_ue_count_show()
631 static int edac_create_dimm_object(struct mem_ctl_info *mci, in edac_create_dimm_object() argument
636 dimm->mci = mci; in edac_create_dimm_object()
639 dimm->dev.bus = mci->bus; in edac_create_dimm_object()
642 dimm->dev.parent = &mci->dev; in edac_create_dimm_object()
643 if (mci->csbased) in edac_create_dimm_object()
648 pm_runtime_forbid(&mci->dev); in edac_create_dimm_object()
667 struct mem_ctl_info *mci = to_mci(dev); in mci_reset_counters_store() local
669 mci->ue_mc = 0; in mci_reset_counters_store()
670 mci->ce_mc = 0; in mci_reset_counters_store()
671 mci->ue_noinfo_count = 0; in mci_reset_counters_store()
672 mci->ce_noinfo_count = 0; in mci_reset_counters_store()
674 for (row = 0; row < mci->nr_csrows; row++) { in mci_reset_counters_store()
675 struct csrow_info *ri = mci->csrows[row]; in mci_reset_counters_store()
685 for (i = 0; i < mci->n_layers; i++) { in mci_reset_counters_store()
686 cnt *= mci->layers[i].size; in mci_reset_counters_store()
687 memset(mci->ce_per_layer[i], 0, cnt * sizeof(u32)); in mci_reset_counters_store()
688 memset(mci->ue_per_layer[i], 0, cnt * sizeof(u32)); in mci_reset_counters_store()
691 mci->start_time = jiffies; in mci_reset_counters_store()
708 struct mem_ctl_info *mci = to_mci(dev); in mci_sdram_scrub_rate_store() local
715 new_bw = mci->set_sdram_scrub_rate(mci, bandwidth); in mci_sdram_scrub_rate_store()
732 struct mem_ctl_info *mci = to_mci(dev); in mci_sdram_scrub_rate_show() local
735 bandwidth = mci->get_sdram_scrub_rate(mci); in mci_sdram_scrub_rate_show()
749 struct mem_ctl_info *mci = to_mci(dev); in mci_ue_count_show() local
751 return sprintf(data, "%d\n", mci->ue_mc); in mci_ue_count_show()
758 struct mem_ctl_info *mci = to_mci(dev); in mci_ce_count_show() local
760 return sprintf(data, "%d\n", mci->ce_mc); in mci_ce_count_show()
767 struct mem_ctl_info *mci = to_mci(dev); in mci_ce_noinfo_show() local
769 return sprintf(data, "%d\n", mci->ce_noinfo_count); in mci_ce_noinfo_show()
776 struct mem_ctl_info *mci = to_mci(dev); in mci_ue_noinfo_show() local
778 return sprintf(data, "%d\n", mci->ue_noinfo_count); in mci_ue_noinfo_show()
785 struct mem_ctl_info *mci = to_mci(dev); in mci_seconds_show() local
787 return sprintf(data, "%ld\n", (jiffies - mci->start_time) / HZ); in mci_seconds_show()
794 struct mem_ctl_info *mci = to_mci(dev); in mci_ctl_name_show() local
796 return sprintf(data, "%s\n", mci->ctl_name); in mci_ctl_name_show()
803 struct mem_ctl_info *mci = to_mci(dev); in mci_size_mb_show() local
806 for (csrow_idx = 0; csrow_idx < mci->nr_csrows; csrow_idx++) { in mci_size_mb_show()
807 struct csrow_info *csrow = mci->csrows[csrow_idx]; in mci_size_mb_show()
823 struct mem_ctl_info *mci = to_mci(dev); in mci_max_location_show() local
827 for (i = 0; i < mci->n_layers; i++) { in mci_max_location_show()
829 edac_layer_name[mci->layers[i].type], in mci_max_location_show()
830 mci->layers[i].size - 1); in mci_max_location_show()
871 struct mem_ctl_info *mci = to_mci(dev); in mci_attr_is_visible() local
876 if (mci->get_sdram_scrub_rate) in mci_attr_is_visible()
878 if (mci->set_sdram_scrub_rate) in mci_attr_is_visible()
895 struct mem_ctl_info *mci = container_of(dev, struct mem_ctl_info, dev); in mci_attr_release() local
898 kfree(mci); in mci_attr_release()
914 int edac_create_sysfs_mci_device(struct mem_ctl_info *mci, in edac_create_sysfs_mci_device() argument
924 name = kasprintf(GFP_KERNEL, "mc%d", mci->mc_idx); in edac_create_sysfs_mci_device()
928 mci->bus->name = name; in edac_create_sysfs_mci_device()
930 edac_dbg(0, "creating bus %s\n", mci->bus->name); in edac_create_sysfs_mci_device()
932 err = bus_register(mci->bus); in edac_create_sysfs_mci_device()
939 mci->dev.type = &mci_attr_type; in edac_create_sysfs_mci_device()
940 device_initialize(&mci->dev); in edac_create_sysfs_mci_device()
942 mci->dev.parent = mci_pdev; in edac_create_sysfs_mci_device()
943 mci->dev.bus = mci->bus; in edac_create_sysfs_mci_device()
944 mci->dev.groups = groups; in edac_create_sysfs_mci_device()
945 dev_set_name(&mci->dev, "mc%d", mci->mc_idx); in edac_create_sysfs_mci_device()
946 dev_set_drvdata(&mci->dev, mci); in edac_create_sysfs_mci_device()
947 pm_runtime_forbid(&mci->dev); in edac_create_sysfs_mci_device()
949 edac_dbg(0, "creating device %s\n", dev_name(&mci->dev)); in edac_create_sysfs_mci_device()
950 err = device_add(&mci->dev); in edac_create_sysfs_mci_device()
952 edac_dbg(1, "failure: create device %s\n", dev_name(&mci->dev)); in edac_create_sysfs_mci_device()
959 for (i = 0; i < mci->tot_dimms; i++) { in edac_create_sysfs_mci_device()
960 struct dimm_info *dimm = mci->dimms[i]; in edac_create_sysfs_mci_device()
969 for (lay = 0; lay < mci->n_layers; lay++) in edac_create_sysfs_mci_device()
971 edac_layer_name[mci->layers[lay].type], in edac_create_sysfs_mci_device()
976 err = edac_create_dimm_object(mci, dimm, i); in edac_create_sysfs_mci_device()
984 err = edac_create_csrow_objects(mci); in edac_create_sysfs_mci_device()
989 edac_create_debugfs_nodes(mci); in edac_create_sysfs_mci_device()
994 struct dimm_info *dimm = mci->dimms[i]; in edac_create_sysfs_mci_device()
1000 device_unregister(&mci->dev); in edac_create_sysfs_mci_device()
1002 bus_unregister(mci->bus); in edac_create_sysfs_mci_device()
1011 void edac_remove_sysfs_mci_device(struct mem_ctl_info *mci) in edac_remove_sysfs_mci_device() argument
1018 edac_debugfs_remove_recursive(mci->debugfs); in edac_remove_sysfs_mci_device()
1021 edac_delete_csrow_objects(mci); in edac_remove_sysfs_mci_device()
1024 for (i = 0; i < mci->tot_dimms; i++) { in edac_remove_sysfs_mci_device()
1025 struct dimm_info *dimm = mci->dimms[i]; in edac_remove_sysfs_mci_device()
1033 void edac_unregister_sysfs(struct mem_ctl_info *mci) in edac_unregister_sysfs() argument
1035 struct bus_type *bus = mci->bus; in edac_unregister_sysfs()
1036 const char *name = mci->bus->name; in edac_unregister_sysfs()
1038 edac_dbg(1, "Unregistering device %s\n", dev_name(&mci->dev)); in edac_unregister_sysfs()
1039 device_unregister(&mci->dev); in edac_unregister_sysfs()