@@ -621,8 +621,7 @@ static const struct device_type dimm_attr_type = {
621621
622622/* Create a DIMM object under specifed memory controller device */
623623static int edac_create_dimm_object (struct mem_ctl_info * mci ,
624- struct dimm_info * dimm ,
625- int index )
624+ struct dimm_info * dimm )
626625{
627626 int err ;
628627 dimm -> mci = mci ;
@@ -632,9 +631,9 @@ static int edac_create_dimm_object(struct mem_ctl_info *mci,
632631
633632 dimm -> dev .parent = & mci -> dev ;
634633 if (mci -> csbased )
635- dev_set_name (& dimm -> dev , "rank%d" , index );
634+ dev_set_name (& dimm -> dev , "rank%d" , dimm -> idx );
636635 else
637- dev_set_name (& dimm -> dev , "dimm%d" , index );
636+ dev_set_name (& dimm -> dev , "dimm%d" , dimm -> idx );
638637 dev_set_drvdata (& dimm -> dev , dimm );
639638 pm_runtime_forbid (& mci -> dev );
640639
@@ -916,7 +915,8 @@ static const struct device_type mci_attr_type = {
916915int edac_create_sysfs_mci_device (struct mem_ctl_info * mci ,
917916 const struct attribute_group * * groups )
918917{
919- int i , err ;
918+ struct dimm_info * dimm ;
919+ int err ;
920920
921921 /* get the /sys/devices/system/edac subsys reference */
922922 mci -> dev .type = & mci_attr_type ;
@@ -940,13 +940,12 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci,
940940 /*
941941 * Create the dimm/rank devices
942942 */
943- for (i = 0 ; i < mci -> tot_dimms ; i ++ ) {
944- struct dimm_info * dimm = mci -> dimms [i ];
943+ mci_for_each_dimm (mci , dimm ) {
945944 /* Only expose populated DIMMs */
946945 if (!dimm -> nr_pages )
947946 continue ;
948947
949- err = edac_create_dimm_object (mci , dimm , i );
948+ err = edac_create_dimm_object (mci , dimm );
950949 if (err )
951950 goto fail_unregister_dimm ;
952951 }
@@ -961,12 +960,9 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci,
961960 return 0 ;
962961
963962fail_unregister_dimm :
964- for (i -- ; i >= 0 ; i -- ) {
965- struct dimm_info * dimm = mci -> dimms [i ];
966- if (!dimm -> nr_pages )
967- continue ;
968-
969- device_unregister (& dimm -> dev );
963+ mci_for_each_dimm (mci , dimm ) {
964+ if (device_is_registered (& dimm -> dev ))
965+ device_unregister (& dimm -> dev );
970966 }
971967 device_unregister (& mci -> dev );
972968
@@ -978,7 +974,7 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci,
978974 */
979975void edac_remove_sysfs_mci_device (struct mem_ctl_info * mci )
980976{
981- int i ;
977+ struct dimm_info * dimm ;
982978
983979 edac_dbg (0 , "\n" );
984980
@@ -989,8 +985,7 @@ void edac_remove_sysfs_mci_device(struct mem_ctl_info *mci)
989985 edac_delete_csrow_objects (mci );
990986#endif
991987
992- for (i = 0 ; i < mci -> tot_dimms ; i ++ ) {
993- struct dimm_info * dimm = mci -> dimms [i ];
988+ mci_for_each_dimm (mci , dimm ) {
994989 if (dimm -> nr_pages == 0 )
995990 continue ;
996991 edac_dbg (1 , "unregistering device %s\n" , dev_name (& dimm -> dev ));
0 commit comments