arm64: perf: add format entry to describe event -> config mapping
authorWill Deacon <will.deacon@arm.com>
Tue, 22 Dec 2015 14:42:57 +0000 (14:42 +0000)
committerWill Deacon <will.deacon@arm.com>
Tue, 22 Dec 2015 14:45:07 +0000 (14:45 +0000)
It's all very well providing an events directory to userspace that
details our events in terms of "event=0xNN", but if we don't define how
to encode the "event" field in the perf attr.config, then it's a waste
of time.

This patch adds a single format entry to describe that the event field
occupies the bottom 10 bits of our config field on ARMv8 (PMUv3).

Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/kernel/perf_event.c

index f0356a8..6fdcfb6 100644 (file)
@@ -297,7 +297,7 @@ static struct attribute *armv8_pmuv3_event_attrs[] = {
        &armv8_event_attr_l21_tlb_refill.attr.attr,
        &armv8_event_attr_l2d_tlb.attr.attr,
        &armv8_event_attr_l21_tlb.attr.attr,
-       NULL
+       NULL,
 };
 
 static struct attribute_group armv8_pmuv3_events_attr_group = {
@@ -305,11 +305,25 @@ static struct attribute_group armv8_pmuv3_events_attr_group = {
        .attrs = armv8_pmuv3_event_attrs,
 };
 
+PMU_FORMAT_ATTR(event, "config:0-9");
+
+static struct attribute *armv8_pmuv3_format_attrs[] = {
+       &format_attr_event.attr,
+       NULL,
+};
+
+static struct attribute_group armv8_pmuv3_format_attr_group = {
+       .name = "format",
+       .attrs = armv8_pmuv3_format_attrs,
+};
+
 static const struct attribute_group *armv8_pmuv3_attr_groups[] = {
        &armv8_pmuv3_events_attr_group,
-       NULL
+       &armv8_pmuv3_format_attr_group,
+       NULL,
 };
 
+
 /*
  * Perf Events' indices
  */