Message ID | 1473330112-28528-2-git-send-email-mark.rutland@arm.com |
---|---|
State | Accepted |
Commit | 86cdd72af936860503f392825410d1b60a3e474e |
Headers | show |
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 --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))
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