drivers/perf/arm_pmu_platform.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
dev_err() is a macro that expand dev_fmt, but dev_err_probe() is a
function and cannot perform this macro expansion.
So hard code the "hw perfevents: " prefix and dd a comment explaining why.
Fixes: 11fa1dc8020a ("perf/arm_pmu_platform: Use dev_err_probe() for IRQ errors")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
Untested, but I can't see how it could work.
v1 --> v2
- fix a typo in the comment
---
drivers/perf/arm_pmu_platform.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/perf/arm_pmu_platform.c b/drivers/perf/arm_pmu_platform.c
index 513de1f54e2d..02cca4b8f0fd 100644
--- a/drivers/perf/arm_pmu_platform.c
+++ b/drivers/perf/arm_pmu_platform.c
@@ -101,8 +101,11 @@ static int pmu_parse_irqs(struct arm_pmu *pmu)
struct device *dev = &pdev->dev;
num_irqs = platform_irq_count(pdev);
- if (num_irqs < 0)
- return dev_err_probe(dev, num_irqs, "unable to count PMU IRQs\n");
+ if (num_irqs < 0) {
+ /* dev_err_probe() does not handle dev_fmt, so hard-code the prefix */
+ return dev_err_probe(dev, num_irqs,
+ "hw perfevents: unable to count PMU IRQs\n");
+ }
/*
* In this case we have no idea which CPUs are covered by the PMU.
--
2.34.1
On 2022-08-05 21:55, Christophe JAILLET wrote: > dev_err() is a macro that expand dev_fmt, but dev_err_probe() is a > function and cannot perform this macro expansion. > > So hard code the "hw perfevents: " prefix and dd a comment explaining why. > > Fixes: 11fa1dc8020a ("perf/arm_pmu_platform: Use dev_err_probe() for IRQ errors") > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> > --- > Untested, but I can't see how it could work. > > v1 --> v2 > - fix a typo in the comment > --- > drivers/perf/arm_pmu_platform.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/perf/arm_pmu_platform.c b/drivers/perf/arm_pmu_platform.c > index 513de1f54e2d..02cca4b8f0fd 100644 > --- a/drivers/perf/arm_pmu_platform.c > +++ b/drivers/perf/arm_pmu_platform.c > @@ -101,8 +101,11 @@ static int pmu_parse_irqs(struct arm_pmu *pmu) > struct device *dev = &pdev->dev; > > num_irqs = platform_irq_count(pdev); > - if (num_irqs < 0) > - return dev_err_probe(dev, num_irqs, "unable to count PMU IRQs\n"); > + if (num_irqs < 0) { > + /* dev_err_probe() does not handle dev_fmt, so hard-code the prefix */ > + return dev_err_probe(dev, num_irqs, > + "hw perfevents: unable to count PMU IRQs\n"); Why not use dev_fmt directly? But even better, is there any practical reason why this couldn't be fixed at the source by indirecting dev_err_probe() through a macro wrapper just like all its friends: #define dev_err_probe(dev, err, fmt, ...) \ _dev_err_probe(dev, err, dev_fmt(fmt), ##__VA_ARGS__) ? Thanks, Robin. > + } > > /* > * In this case we have no idea which CPUs are covered by the PMU.
Le 08/08/2022 à 16:57, Robin Murphy a écrit : > On 2022-08-05 21:55, Christophe JAILLET wrote: >> dev_err() is a macro that expand dev_fmt, but dev_err_probe() is a >> function and cannot perform this macro expansion. >> >> So hard code the "hw perfevents: " prefix and dd a comment explaining >> why. >> >> Fixes: 11fa1dc8020a ("perf/arm_pmu_platform: Use dev_err_probe() for >> IRQ errors") >> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> >> --- >> Untested, but I can't see how it could work. >> >> v1 --> v2 >> - fix a typo in the comment >> --- >> drivers/perf/arm_pmu_platform.c | 7 +++++-- >> 1 file changed, 5 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/perf/arm_pmu_platform.c >> b/drivers/perf/arm_pmu_platform.c >> index 513de1f54e2d..02cca4b8f0fd 100644 >> --- a/drivers/perf/arm_pmu_platform.c >> +++ b/drivers/perf/arm_pmu_platform.c >> @@ -101,8 +101,11 @@ static int pmu_parse_irqs(struct arm_pmu *pmu) >> struct device *dev = &pdev->dev; >> num_irqs = platform_irq_count(pdev); >> - if (num_irqs < 0) >> - return dev_err_probe(dev, num_irqs, "unable to count PMU >> IRQs\n"); >> + if (num_irqs < 0) { >> + /* dev_err_probe() does not handle dev_fmt, so hard-code the >> prefix */ >> + return dev_err_probe(dev, num_irqs, >> + "hw perfevents: unable to count PMU IRQs\n"); > > Why not use dev_fmt directly? But even better, is there any practical > reason why this couldn't be fixed at the source by indirecting > dev_err_probe() through a macro wrapper just like all its friends: > > #define dev_err_probe(dev, err, fmt, ...) \ > _dev_err_probe(dev, err, dev_fmt(fmt), ##__VA_ARGS__) > > ? Looks nice. I'll propose it in a week or so, unless s.o. does it in the mean-time. CJ > > Thanks, > Robin. > >> + } >> /* >> * In this case we have no idea which CPUs are covered by the PMU. >
© 2016 - 2024 Red Hat, Inc.