@@ -953,7 +953,10 @@ static int armv8pmu_probe_pmu(struct arm_pmu *cpu_pmu)
953
953
return probe .present ? 0 : - ENODEV ;
954
954
}
955
955
956
- static int armv8_pmu_init (struct arm_pmu * cpu_pmu )
956
+ static int armv8_pmu_init (struct arm_pmu * cpu_pmu , char * name ,
957
+ int (* map_event )(struct perf_event * event ),
958
+ const struct attribute_group * events ,
959
+ const struct attribute_group * format )
957
960
{
958
961
int ret = armv8pmu_probe_pmu (cpu_pmu );
959
962
if (ret )
@@ -972,135 +975,62 @@ static int armv8_pmu_init(struct arm_pmu *cpu_pmu)
972
975
cpu_pmu -> set_event_filter = armv8pmu_set_event_filter ;
973
976
cpu_pmu -> filter_match = armv8pmu_filter_match ;
974
977
978
+ cpu_pmu -> name = name ;
979
+ cpu_pmu -> map_event = map_event ;
980
+ cpu_pmu -> attr_groups [ARMPMU_ATTR_GROUP_EVENTS ] = events ?
981
+ events : & armv8_pmuv3_events_attr_group ;
982
+ cpu_pmu -> attr_groups [ARMPMU_ATTR_GROUP_FORMATS ] = format ?
983
+ format : & armv8_pmuv3_format_attr_group ;
984
+
975
985
return 0 ;
976
986
}
977
987
978
988
static int armv8_pmuv3_init (struct arm_pmu * cpu_pmu )
979
989
{
980
- int ret = armv8_pmu_init (cpu_pmu );
981
- if (ret )
982
- return ret ;
983
-
984
- cpu_pmu -> name = "armv8_pmuv3" ;
985
- cpu_pmu -> map_event = armv8_pmuv3_map_event ;
986
- cpu_pmu -> attr_groups [ARMPMU_ATTR_GROUP_EVENTS ] =
987
- & armv8_pmuv3_events_attr_group ;
988
- cpu_pmu -> attr_groups [ARMPMU_ATTR_GROUP_FORMATS ] =
989
- & armv8_pmuv3_format_attr_group ;
990
-
991
- return 0 ;
990
+ return armv8_pmu_init (cpu_pmu , "armv8_pmuv3" ,
991
+ armv8_pmuv3_map_event , NULL , NULL );
992
992
}
993
993
994
994
static int armv8_a35_pmu_init (struct arm_pmu * cpu_pmu )
995
995
{
996
- int ret = armv8_pmu_init (cpu_pmu );
997
- if (ret )
998
- return ret ;
999
-
1000
- cpu_pmu -> name = "armv8_cortex_a35" ;
1001
- cpu_pmu -> map_event = armv8_a53_map_event ;
1002
- cpu_pmu -> attr_groups [ARMPMU_ATTR_GROUP_EVENTS ] =
1003
- & armv8_pmuv3_events_attr_group ;
1004
- cpu_pmu -> attr_groups [ARMPMU_ATTR_GROUP_FORMATS ] =
1005
- & armv8_pmuv3_format_attr_group ;
1006
-
1007
- return 0 ;
996
+ return armv8_pmu_init (cpu_pmu , "armv8_cortex_a35" ,
997
+ armv8_a53_map_event , NULL , NULL );
1008
998
}
1009
999
1010
1000
static int armv8_a53_pmu_init (struct arm_pmu * cpu_pmu )
1011
1001
{
1012
- int ret = armv8_pmu_init (cpu_pmu );
1013
- if (ret )
1014
- return ret ;
1015
-
1016
- cpu_pmu -> name = "armv8_cortex_a53" ;
1017
- cpu_pmu -> map_event = armv8_a53_map_event ;
1018
- cpu_pmu -> attr_groups [ARMPMU_ATTR_GROUP_EVENTS ] =
1019
- & armv8_pmuv3_events_attr_group ;
1020
- cpu_pmu -> attr_groups [ARMPMU_ATTR_GROUP_FORMATS ] =
1021
- & armv8_pmuv3_format_attr_group ;
1022
-
1023
- return 0 ;
1002
+ return armv8_pmu_init (cpu_pmu , "armv8_cortex_a53" ,
1003
+ armv8_a53_map_event , NULL , NULL );
1024
1004
}
1025
1005
1026
1006
static int armv8_a57_pmu_init (struct arm_pmu * cpu_pmu )
1027
1007
{
1028
- int ret = armv8_pmu_init (cpu_pmu );
1029
- if (ret )
1030
- return ret ;
1031
-
1032
- cpu_pmu -> name = "armv8_cortex_a57" ;
1033
- cpu_pmu -> map_event = armv8_a57_map_event ;
1034
- cpu_pmu -> attr_groups [ARMPMU_ATTR_GROUP_EVENTS ] =
1035
- & armv8_pmuv3_events_attr_group ;
1036
- cpu_pmu -> attr_groups [ARMPMU_ATTR_GROUP_FORMATS ] =
1037
- & armv8_pmuv3_format_attr_group ;
1038
-
1039
- return 0 ;
1008
+ return armv8_pmu_init (cpu_pmu , "armv8_cortex_a57" ,
1009
+ armv8_a57_map_event , NULL , NULL );
1040
1010
}
1041
1011
1042
1012
static int armv8_a72_pmu_init (struct arm_pmu * cpu_pmu )
1043
1013
{
1044
- int ret = armv8_pmu_init (cpu_pmu );
1045
- if (ret )
1046
- return ret ;
1047
-
1048
- cpu_pmu -> name = "armv8_cortex_a72" ;
1049
- cpu_pmu -> map_event = armv8_a57_map_event ;
1050
- cpu_pmu -> attr_groups [ARMPMU_ATTR_GROUP_EVENTS ] =
1051
- & armv8_pmuv3_events_attr_group ;
1052
- cpu_pmu -> attr_groups [ARMPMU_ATTR_GROUP_FORMATS ] =
1053
- & armv8_pmuv3_format_attr_group ;
1054
-
1055
- return 0 ;
1014
+ return armv8_pmu_init (cpu_pmu , "armv8_cortex_a72" ,
1015
+ armv8_a57_map_event , NULL , NULL );
1056
1016
}
1057
1017
1058
1018
static int armv8_a73_pmu_init (struct arm_pmu * cpu_pmu )
1059
1019
{
1060
- int ret = armv8_pmu_init (cpu_pmu );
1061
- if (ret )
1062
- return ret ;
1063
-
1064
- cpu_pmu -> name = "armv8_cortex_a73" ;
1065
- cpu_pmu -> map_event = armv8_a73_map_event ;
1066
- cpu_pmu -> attr_groups [ARMPMU_ATTR_GROUP_EVENTS ] =
1067
- & armv8_pmuv3_events_attr_group ;
1068
- cpu_pmu -> attr_groups [ARMPMU_ATTR_GROUP_FORMATS ] =
1069
- & armv8_pmuv3_format_attr_group ;
1070
-
1071
- return 0 ;
1020
+ return armv8_pmu_init (cpu_pmu , "armv8_cortex_a73" ,
1021
+ armv8_a73_map_event , NULL , NULL );
1072
1022
}
1073
1023
1074
1024
static int armv8_thunder_pmu_init (struct arm_pmu * cpu_pmu )
1075
1025
{
1076
- int ret = armv8_pmu_init (cpu_pmu );
1077
- if (ret )
1078
- return ret ;
1079
-
1080
- cpu_pmu -> name = "armv8_cavium_thunder" ;
1081
- cpu_pmu -> map_event = armv8_thunder_map_event ;
1082
- cpu_pmu -> attr_groups [ARMPMU_ATTR_GROUP_EVENTS ] =
1083
- & armv8_pmuv3_events_attr_group ;
1084
- cpu_pmu -> attr_groups [ARMPMU_ATTR_GROUP_FORMATS ] =
1085
- & armv8_pmuv3_format_attr_group ;
1086
-
1087
- return 0 ;
1026
+ return armv8_pmu_init (cpu_pmu , "armv8_cavium_thunder" ,
1027
+ armv8_thunder_map_event , NULL , NULL );
1088
1028
}
1089
1029
1090
1030
static int armv8_vulcan_pmu_init (struct arm_pmu * cpu_pmu )
1091
1031
{
1092
- int ret = armv8_pmu_init (cpu_pmu );
1093
- if (ret )
1094
- return ret ;
1095
-
1096
- cpu_pmu -> name = "armv8_brcm_vulcan" ;
1097
- cpu_pmu -> map_event = armv8_vulcan_map_event ;
1098
- cpu_pmu -> attr_groups [ARMPMU_ATTR_GROUP_EVENTS ] =
1099
- & armv8_pmuv3_events_attr_group ;
1100
- cpu_pmu -> attr_groups [ARMPMU_ATTR_GROUP_FORMATS ] =
1101
- & armv8_pmuv3_format_attr_group ;
1102
-
1103
- return 0 ;
1032
+ return armv8_pmu_init (cpu_pmu , "armv8_brcm_vulcan" ,
1033
+ armv8_vulcan_map_event , NULL , NULL );
1104
1034
}
1105
1035
1106
1036
static const struct of_device_id armv8_pmu_of_device_ids [] = {
0 commit comments