Skip to content

Commit 6ac9f30

Browse files
rmurphy-armwilldeacon
authored andcommitted
arm64: perf: Simplify registration boilerplate
With the trend for per-core events moving to userspace JSON, registering names for PMUv3 implementations is increasingly a pure boilerplate exercise. Let's wrap things a step further so we can generate the basic PMUv3 init function with a macro invocation, and reduce further new addition to just 2 lines each. Suggested-by: Mark Rutland <[email protected]> Signed-off-by: Robin Murphy <[email protected]> Link: https://lore.kernel.org/r/b79477ea3b97f685d00511d4ecd2f686184dca34.1639490264.git.robin.murphy@arm.com Signed-off-by: Will Deacon <[email protected]>
1 parent d4c4844 commit 6ac9f30

File tree

1 file changed

+31
-82
lines changed

1 file changed

+31
-82
lines changed

arch/arm64/kernel/perf_event.c

Lines changed: 31 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1145,17 +1145,26 @@ static int armv8_pmu_init_nogroups(struct arm_pmu *cpu_pmu, char *name,
11451145
return armv8_pmu_init(cpu_pmu, name, map_event, NULL, NULL, NULL);
11461146
}
11471147

1148-
static int armv8_pmuv3_init(struct arm_pmu *cpu_pmu)
1149-
{
1150-
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_pmuv3",
1151-
armv8_pmuv3_map_event);
1148+
#define PMUV3_INIT_SIMPLE(name) \
1149+
static int name##_pmu_init(struct arm_pmu *cpu_pmu) \
1150+
{ \
1151+
return armv8_pmu_init_nogroups(cpu_pmu, #name, armv8_pmuv3_map_event);\
11521152
}
11531153

1154-
static int armv8_a34_pmu_init(struct arm_pmu *cpu_pmu)
1155-
{
1156-
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a34",
1157-
armv8_pmuv3_map_event);
1158-
}
1154+
PMUV3_INIT_SIMPLE(armv8_pmuv3)
1155+
1156+
PMUV3_INIT_SIMPLE(armv8_cortex_a34)
1157+
PMUV3_INIT_SIMPLE(armv8_cortex_a55)
1158+
PMUV3_INIT_SIMPLE(armv8_cortex_a65)
1159+
PMUV3_INIT_SIMPLE(armv8_cortex_a75)
1160+
PMUV3_INIT_SIMPLE(armv8_cortex_a76)
1161+
PMUV3_INIT_SIMPLE(armv8_cortex_a77)
1162+
PMUV3_INIT_SIMPLE(armv8_cortex_a78)
1163+
PMUV3_INIT_SIMPLE(armv8_neoverse_e1)
1164+
PMUV3_INIT_SIMPLE(armv8_neoverse_n1)
1165+
1166+
PMUV3_INIT_SIMPLE(armv8_nvidia_carmel)
1167+
PMUV3_INIT_SIMPLE(armv8_nvidia_denver)
11591168

11601169
static int armv8_a35_pmu_init(struct arm_pmu *cpu_pmu)
11611170
{
@@ -1169,24 +1178,12 @@ static int armv8_a53_pmu_init(struct arm_pmu *cpu_pmu)
11691178
armv8_a53_map_event);
11701179
}
11711180

1172-
static int armv8_a55_pmu_init(struct arm_pmu *cpu_pmu)
1173-
{
1174-
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a55",
1175-
armv8_pmuv3_map_event);
1176-
}
1177-
11781181
static int armv8_a57_pmu_init(struct arm_pmu *cpu_pmu)
11791182
{
11801183
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a57",
11811184
armv8_a57_map_event);
11821185
}
11831186

1184-
static int armv8_a65_pmu_init(struct arm_pmu *cpu_pmu)
1185-
{
1186-
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a65",
1187-
armv8_pmuv3_map_event);
1188-
}
1189-
11901187
static int armv8_a72_pmu_init(struct arm_pmu *cpu_pmu)
11911188
{
11921189
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a72",
@@ -1199,42 +1196,6 @@ static int armv8_a73_pmu_init(struct arm_pmu *cpu_pmu)
11991196
armv8_a73_map_event);
12001197
}
12011198

1202-
static int armv8_a75_pmu_init(struct arm_pmu *cpu_pmu)
1203-
{
1204-
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a75",
1205-
armv8_pmuv3_map_event);
1206-
}
1207-
1208-
static int armv8_a76_pmu_init(struct arm_pmu *cpu_pmu)
1209-
{
1210-
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a76",
1211-
armv8_pmuv3_map_event);
1212-
}
1213-
1214-
static int armv8_a77_pmu_init(struct arm_pmu *cpu_pmu)
1215-
{
1216-
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a77",
1217-
armv8_pmuv3_map_event);
1218-
}
1219-
1220-
static int armv8_a78_pmu_init(struct arm_pmu *cpu_pmu)
1221-
{
1222-
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a78",
1223-
armv8_pmuv3_map_event);
1224-
}
1225-
1226-
static int armv8_e1_pmu_init(struct arm_pmu *cpu_pmu)
1227-
{
1228-
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_neoverse_e1",
1229-
armv8_pmuv3_map_event);
1230-
}
1231-
1232-
static int armv8_n1_pmu_init(struct arm_pmu *cpu_pmu)
1233-
{
1234-
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_neoverse_n1",
1235-
armv8_pmuv3_map_event);
1236-
}
1237-
12381199
static int armv8_thunder_pmu_init(struct arm_pmu *cpu_pmu)
12391200
{
12401201
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cavium_thunder",
@@ -1247,38 +1208,26 @@ static int armv8_vulcan_pmu_init(struct arm_pmu *cpu_pmu)
12471208
armv8_vulcan_map_event);
12481209
}
12491210

1250-
static int armv8_carmel_pmu_init(struct arm_pmu *cpu_pmu)
1251-
{
1252-
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_nvidia_carmel",
1253-
armv8_pmuv3_map_event);
1254-
}
1255-
1256-
static int armv8_denver_pmu_init(struct arm_pmu *cpu_pmu)
1257-
{
1258-
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_nvidia_denver",
1259-
armv8_pmuv3_map_event);
1260-
}
1261-
12621211
static const struct of_device_id armv8_pmu_of_device_ids[] = {
1263-
{.compatible = "arm,armv8-pmuv3", .data = armv8_pmuv3_init},
1264-
{.compatible = "arm,cortex-a34-pmu", .data = armv8_a34_pmu_init},
1212+
{.compatible = "arm,armv8-pmuv3", .data = armv8_pmuv3_pmu_init},
1213+
{.compatible = "arm,cortex-a34-pmu", .data = armv8_cortex_a34_pmu_init},
12651214
{.compatible = "arm,cortex-a35-pmu", .data = armv8_a35_pmu_init},
12661215
{.compatible = "arm,cortex-a53-pmu", .data = armv8_a53_pmu_init},
1267-
{.compatible = "arm,cortex-a55-pmu", .data = armv8_a55_pmu_init},
1216+
{.compatible = "arm,cortex-a55-pmu", .data = armv8_cortex_a55_pmu_init},
12681217
{.compatible = "arm,cortex-a57-pmu", .data = armv8_a57_pmu_init},
1269-
{.compatible = "arm,cortex-a65-pmu", .data = armv8_a65_pmu_init},
1218+
{.compatible = "arm,cortex-a65-pmu", .data = armv8_cortex_a65_pmu_init},
12701219
{.compatible = "arm,cortex-a72-pmu", .data = armv8_a72_pmu_init},
12711220
{.compatible = "arm,cortex-a73-pmu", .data = armv8_a73_pmu_init},
1272-
{.compatible = "arm,cortex-a75-pmu", .data = armv8_a75_pmu_init},
1273-
{.compatible = "arm,cortex-a76-pmu", .data = armv8_a76_pmu_init},
1274-
{.compatible = "arm,cortex-a77-pmu", .data = armv8_a77_pmu_init},
1275-
{.compatible = "arm,cortex-a78-pmu", .data = armv8_a78_pmu_init},
1276-
{.compatible = "arm,neoverse-e1-pmu", .data = armv8_e1_pmu_init},
1277-
{.compatible = "arm,neoverse-n1-pmu", .data = armv8_n1_pmu_init},
1221+
{.compatible = "arm,cortex-a75-pmu", .data = armv8_cortex_a75_pmu_init},
1222+
{.compatible = "arm,cortex-a76-pmu", .data = armv8_cortex_a76_pmu_init},
1223+
{.compatible = "arm,cortex-a77-pmu", .data = armv8_cortex_a77_pmu_init},
1224+
{.compatible = "arm,cortex-a78-pmu", .data = armv8_cortex_a78_pmu_init},
1225+
{.compatible = "arm,neoverse-e1-pmu", .data = armv8_neoverse_e1_pmu_init},
1226+
{.compatible = "arm,neoverse-n1-pmu", .data = armv8_neoverse_n1_pmu_init},
12781227
{.compatible = "cavium,thunder-pmu", .data = armv8_thunder_pmu_init},
12791228
{.compatible = "brcm,vulcan-pmu", .data = armv8_vulcan_pmu_init},
1280-
{.compatible = "nvidia,carmel-pmu", .data = armv8_carmel_pmu_init},
1281-
{.compatible = "nvidia,denver-pmu", .data = armv8_denver_pmu_init},
1229+
{.compatible = "nvidia,carmel-pmu", .data = armv8_nvidia_carmel_pmu_init},
1230+
{.compatible = "nvidia,denver-pmu", .data = armv8_nvidia_denver_pmu_init},
12821231
{},
12831232
};
12841233

@@ -1301,7 +1250,7 @@ static int __init armv8_pmu_driver_init(void)
13011250
if (acpi_disabled)
13021251
return platform_driver_register(&armv8_pmu_driver);
13031252
else
1304-
return arm_pmu_acpi_probe(armv8_pmuv3_init);
1253+
return arm_pmu_acpi_probe(armv8_pmuv3_pmu_init);
13051254
}
13061255
device_initcall(armv8_pmu_driver_init)
13071256

0 commit comments

Comments
 (0)