Revert "perf/arm_dmc620: Remove duplicate format attribute #defines"
authorWill Deacon <will@kernel.org>
Wed, 13 Dec 2023 09:47:52 +0000 (09:47 +0000)
committerWill Deacon <will@kernel.org>
Wed, 13 Dec 2023 09:47:52 +0000 (09:47 +0000)
This reverts commit a5f4ca68f348ac059efd6a3d7ad4040aed1c0818.

Pulling in the Arm-specific 'linux/perf/arm_pmu.h' header breaks the
allmodconfig build for x86:

> In file included from drivers/perf/arm_dmc620_pmu.c:26:
> include/linux/perf/arm_pmu.h:15:10: fatal error: asm/cputype.h: No such file or directory
>    15 | #include <asm/cputype.h>
>       |          ^~~~~~~~~~~~~~~

Just put things back like they were so that the driver can continue to
be compile-tested on a variety of architectures.

Link: https://lore.kernel.org/r/20231213100931.12d9d85e@canb.auug.org.au
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Will Deacon <will@kernel.org>
drivers/perf/arm_dmc620_pmu.c

index 9de9dc8db8dbec6a38d887137a42fdaf20235d92..30cea68595747001d09f35b43fcda881fd8bd544 100644 (file)
@@ -23,7 +23,6 @@
 #include <linux/module.h>
 #include <linux/mutex.h>
 #include <linux/perf_event.h>
-#include <linux/perf/arm_pmu.h>
 #include <linux/platform_device.h>
 #include <linux/printk.h>
 #include <linux/rculist.h>
@@ -190,6 +189,27 @@ static const struct attribute_group dmc620_pmu_events_attr_group = {
 #define ATTR_CFG_FLD_clkdiv2_LO                9
 #define ATTR_CFG_FLD_clkdiv2_HI                9
 
+#define __GEN_PMU_FORMAT_ATTR(cfg, lo, hi)                     \
+       (lo) == (hi) ? #cfg ":" #lo "\n" : #cfg ":" #lo "-" #hi
+
+#define _GEN_PMU_FORMAT_ATTR(cfg, lo, hi)                      \
+       __GEN_PMU_FORMAT_ATTR(cfg, lo, hi)
+
+#define GEN_PMU_FORMAT_ATTR(name)                              \
+       PMU_FORMAT_ATTR(name,                                   \
+       _GEN_PMU_FORMAT_ATTR(ATTR_CFG_FLD_##name##_CFG,         \
+                            ATTR_CFG_FLD_##name##_LO,          \
+                            ATTR_CFG_FLD_##name##_HI))
+
+#define _ATTR_CFG_GET_FLD(attr, cfg, lo, hi)                   \
+       ((((attr)->cfg) >> lo) & GENMASK_ULL(hi - lo, 0))
+
+#define ATTR_CFG_GET_FLD(attr, name)                           \
+       _ATTR_CFG_GET_FLD(attr,                                 \
+                         ATTR_CFG_FLD_##name##_CFG,            \
+                         ATTR_CFG_FLD_##name##_LO,             \
+                         ATTR_CFG_FLD_##name##_HI)
+
 GEN_PMU_FORMAT_ATTR(mask);
 GEN_PMU_FORMAT_ATTR(match);
 GEN_PMU_FORMAT_ATTR(invert);