Message ID | 83b65c432db89df0427c2d55e09c643264299f08.1685619571.git.robin.murphy@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | perf/arm_cspmu: Fixes and cleanups | expand |
On 01/06/2023 12:59, Robin Murphy wrote: > ARM_CSPMU_EVENT_ATTR() defines a struct perf_pmu_events_attr, so > arm_cspmu_sysfs_event_show() should not be interpreting it as struct > dev_ext_attribute. > > Fixes: e37dfd65731d ("perf: arm_cspmu: Add support for ARM CoreSight PMU driver") > Signed-off-by: Robin Murphy <robin.murphy@arm.com> > --- > drivers/perf/arm_cspmu/arm_cspmu.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/perf/arm_cspmu/arm_cspmu.c b/drivers/perf/arm_cspmu/arm_cspmu.c > index a3f1c410b417..72dc7a9e1ca8 100644 > --- a/drivers/perf/arm_cspmu/arm_cspmu.c > +++ b/drivers/perf/arm_cspmu/arm_cspmu.c > @@ -189,10 +189,10 @@ static inline bool use_64b_counter_reg(const struct arm_cspmu *cspmu) > ssize_t arm_cspmu_sysfs_event_show(struct device *dev, > struct device_attribute *attr, char *buf) > { > - struct dev_ext_attribute *eattr = > - container_of(attr, struct dev_ext_attribute, attr); > - return sysfs_emit(buf, "event=0x%llx\n", > - (unsigned long long)eattr->var); > + struct perf_pmu_events_attr *pmu_attr; > + > + pmu_attr = container_of(attr, typeof(*pmu_attr), attr); > + return sysfs_emit(buf, "event=0x%llx\n", pmu_attr->id); > } Thanks for catching this ! The other option would be to, which was the original intention. diff --git a/drivers/perf/arm_cspmu/arm_cspmu.h b/drivers/perf/arm_cspmu/arm_cspmu.h index 51323b175a4a..b5e454be95b3 100644 --- a/drivers/perf/arm_cspmu/arm_cspmu.h +++ b/drivers/perf/arm_cspmu/arm_cspmu.h @@ -32,7 +32,7 @@ ARM_CSPMU_EXT_ATTR(_name, arm_cspmu_sysfs_format_show, (char *)_config) #define ARM_CSPMU_EVENT_ATTR(_name, _config) \ - PMU_EVENT_ATTR_ID(_name, arm_cspmu_sysfs_event_show, _config) + ARM_CSPMU_EXT_ATTR(_name, arm_cspmu_sysfs_event_show, (void*)(unsigned long)_config) /* Default event id mask */ Either way, Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
On Thu, 1 Jun 2023, Robin Murphy wrote: > ARM_CSPMU_EVENT_ATTR() defines a struct perf_pmu_events_attr, so > arm_cspmu_sysfs_event_show() should not be interpreting it as struct > dev_ext_attribute. > > Fixes: e37dfd65731d ("perf: arm_cspmu: Add support for ARM CoreSight PMU driver") > Signed-off-by: Robin Murphy <robin.murphy@arm.com> Reviewed-and-tested-by: Ilkka Koskinen <ilkka@os.amperecomputing.com> > --- > drivers/perf/arm_cspmu/arm_cspmu.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/perf/arm_cspmu/arm_cspmu.c b/drivers/perf/arm_cspmu/arm_cspmu.c > index a3f1c410b417..72dc7a9e1ca8 100644 > --- a/drivers/perf/arm_cspmu/arm_cspmu.c > +++ b/drivers/perf/arm_cspmu/arm_cspmu.c > @@ -189,10 +189,10 @@ static inline bool use_64b_counter_reg(const struct arm_cspmu *cspmu) > ssize_t arm_cspmu_sysfs_event_show(struct device *dev, > struct device_attribute *attr, char *buf) > { > - struct dev_ext_attribute *eattr = > - container_of(attr, struct dev_ext_attribute, attr); > - return sysfs_emit(buf, "event=0x%llx\n", > - (unsigned long long)eattr->var); > + struct perf_pmu_events_attr *pmu_attr; > + > + pmu_attr = container_of(attr, typeof(*pmu_attr), attr); > + return sysfs_emit(buf, "event=0x%llx\n", pmu_attr->id); > } > EXPORT_SYMBOL_GPL(arm_cspmu_sysfs_event_show); > > -- > 2.39.2.101.g768bb238c484.dirty > >
diff --git a/drivers/perf/arm_cspmu/arm_cspmu.c b/drivers/perf/arm_cspmu/arm_cspmu.c index a3f1c410b417..72dc7a9e1ca8 100644 --- a/drivers/perf/arm_cspmu/arm_cspmu.c +++ b/drivers/perf/arm_cspmu/arm_cspmu.c @@ -189,10 +189,10 @@ static inline bool use_64b_counter_reg(const struct arm_cspmu *cspmu) ssize_t arm_cspmu_sysfs_event_show(struct device *dev, struct device_attribute *attr, char *buf) { - struct dev_ext_attribute *eattr = - container_of(attr, struct dev_ext_attribute, attr); - return sysfs_emit(buf, "event=0x%llx\n", - (unsigned long long)eattr->var); + struct perf_pmu_events_attr *pmu_attr; + + pmu_attr = container_of(attr, typeof(*pmu_attr), attr); + return sysfs_emit(buf, "event=0x%llx\n", pmu_attr->id); } EXPORT_SYMBOL_GPL(arm_cspmu_sysfs_event_show);
ARM_CSPMU_EVENT_ATTR() defines a struct perf_pmu_events_attr, so arm_cspmu_sysfs_event_show() should not be interpreting it as struct dev_ext_attribute. Fixes: e37dfd65731d ("perf: arm_cspmu: Add support for ARM CoreSight PMU driver") Signed-off-by: Robin Murphy <robin.murphy@arm.com> --- drivers/perf/arm_cspmu/arm_cspmu.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)