diff mbox

[RFCv4,1/7] drivers/perf: arm_pmu: add common attr group fields

Message ID 1473330112-28528-2-git-send-email-mark.rutland@arm.com
State Accepted
Commit 86cdd72af936860503f392825410d1b60a3e474e
Headers show

Commit Message

Mark Rutland Sept. 8, 2016, 10:21 a.m. UTC
In preparation for adding common attribute groups, add an array of
attribute group pointers to arm_pmu, which will be used if the
backend hasn't already set pmu::attr_groups.

Subsequent patches will move backends over to using these, before adding
common fields.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>

Cc: Will Deacon <will.deacon@arm.com>
---
 drivers/perf/arm_pmu.c       | 3 +++
 include/linux/perf/arm_pmu.h | 9 ++++++++-
 2 files changed, 11 insertions(+), 1 deletion(-)

-- 
1.9.1

Comments

Mark Rutland Sept. 9, 2016, 11:05 a.m. UTC | #1
On Fri, Sep 09, 2016 at 11:25:54AM +0100, Will Deacon wrote:
> On Thu, Sep 08, 2016 at 11:21:46AM +0100, Mark Rutland wrote:

> > +enum armpmu_attr_groups {

> > +	ARMPMU_ATTR_GROUP_EVENTS,

> > +	ARMPMU_ATTR_GROUP_FORMATS,

> > +	ARMPMU_NR_ATTR_GROUPS

> > +};

> > +

> >  struct arm_pmu {

> >  	struct pmu	pmu;

> >  	cpumask_t	active_irqs;

> > @@ -111,6 +117,7 @@ struct arm_pmu {

> >  	struct pmu_hw_events	__percpu *hw_events;

> >  	struct list_head	entry;

> >  	struct notifier_block	cpu_pm_nb;

> > +	const struct attribute_group *attr_groups[ARMPMU_NR_ATTR_GROUPS + 1];

> 

> Is the '+ 1' because the array has to be NULL terminated?


Yes.

> Probably worth a comment to disuade people from sending "obvious"

> fixes.


Sure. I had meant to do this already, but forgot. :/

Thanks,
Mark.
diff mbox

Patch

diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c
index f5e1008..145caf4 100644
--- a/drivers/perf/arm_pmu.c
+++ b/drivers/perf/arm_pmu.c
@@ -1039,6 +1039,9 @@  int arm_pmu_device_probe(struct platform_device *pdev,
 		goto out_free;
 	}
 
+	if (!pmu->pmu.attr_groups)
+		pmu->pmu.attr_groups = pmu->attr_groups;
+
 	ret = cpu_pmu_init(pmu);
 	if (ret)
 		goto out_free;
diff --git a/include/linux/perf/arm_pmu.h b/include/linux/perf/arm_pmu.h
index e188438..8030814 100644
--- a/include/linux/perf/arm_pmu.h
+++ b/include/linux/perf/arm_pmu.h
@@ -14,7 +14,7 @@ 
 
 #include <linux/interrupt.h>
 #include <linux/perf_event.h>
-
+#include <linux/sysfs.h>
 #include <asm/cputype.h>
 
 /*
@@ -77,6 +77,12 @@  struct pmu_hw_events {
 	struct arm_pmu		*percpu_pmu;
 };
 
+enum armpmu_attr_groups {
+	ARMPMU_ATTR_GROUP_EVENTS,
+	ARMPMU_ATTR_GROUP_FORMATS,
+	ARMPMU_NR_ATTR_GROUPS
+};
+
 struct arm_pmu {
 	struct pmu	pmu;
 	cpumask_t	active_irqs;
@@ -111,6 +117,7 @@  struct arm_pmu {
 	struct pmu_hw_events	__percpu *hw_events;
 	struct list_head	entry;
 	struct notifier_block	cpu_pm_nb;
+	const struct attribute_group *attr_groups[ARMPMU_NR_ATTR_GROUPS + 1];
 };
 
 #define to_arm_pmu(p) (container_of(p, struct arm_pmu, pmu))