blob: 2a8e62aa1aa9b676e992525f5a0d5e65de59f8b4 [file] [log] [blame]
Patrick Williams2194f502022-10-16 14:26:09 -05001From 16cf1b5483d4cbad8ee52fcc9945abcea6492bd1 Mon Sep 17 00:00:00 2001
Brad Bishopbec4ebc2022-08-03 09:55:16 -04002From: Robin Murphy <robin.murphy@arm.com>
3Date: Fri, 3 Dec 2021 11:44:52 +0000
Patrick Williams2194f502022-10-16 14:26:09 -05004Subject: [PATCH 17/40] perf/arm-cmn: Drop compile-test restriction
Brad Bishopbec4ebc2022-08-03 09:55:16 -04005
6Although CMN is currently (and overwhelmingly likely to remain) deployed
7in arm64-only (modulo userspace) systems, the 64-bit "dependency" for
8compile-testing was just laziness due to heavy reliance on readq/writeq
9accessors. Since we only need one extra include for robustness in that
10regard, let's pull that in, widen the compile-test coverage, and fix up
11the smattering of type laziness that that brings to light.
12
13Signed-off-by: Robin Murphy <robin.murphy@arm.com>
14Link: https://lore.kernel.org/r/baee9ee0d0bdad8aaeb70f5a4b98d8fd4b1f5786.1638530442.git.robin.murphy@arm.com
15Signed-off-by: Will Deacon <will@kernel.org>
16
17Upstream-Status: Backport [https://lore.kernel.org/r/baee9ee0d0bdad8aaeb70f5a4b98d8fd4b1f5786.1638530442.git.robin.murphy@arm.com]
18Signed-off-by: Rupinderjit Singh <rupinderjit.singh@arm.com>
19---
20 drivers/perf/Kconfig | 2 +-
21 drivers/perf/arm-cmn.c | 25 +++++++++++++------------
22 2 files changed, 14 insertions(+), 13 deletions(-)
23
24diff --git a/drivers/perf/Kconfig b/drivers/perf/Kconfig
Patrick Williams2194f502022-10-16 14:26:09 -050025index 77522e5efe11..e453915ebc84 100644
Brad Bishopbec4ebc2022-08-03 09:55:16 -040026--- a/drivers/perf/Kconfig
27+++ b/drivers/perf/Kconfig
28@@ -43,7 +43,7 @@ config ARM_CCN
29
30 config ARM_CMN
31 tristate "Arm CMN-600 PMU support"
32- depends on ARM64 || (COMPILE_TEST && 64BIT)
33+ depends on ARM64 || COMPILE_TEST
34 help
35 Support for PMU events monitoring on the Arm CMN-600 Coherent Mesh
36 Network interconnect.
37diff --git a/drivers/perf/arm-cmn.c b/drivers/perf/arm-cmn.c
Patrick Williams2194f502022-10-16 14:26:09 -050038index 02b898dbba91..1d52fcfe3a0d 100644
Brad Bishopbec4ebc2022-08-03 09:55:16 -040039--- a/drivers/perf/arm-cmn.c
40+++ b/drivers/perf/arm-cmn.c
41@@ -7,6 +7,7 @@
42 #include <linux/bitops.h>
43 #include <linux/interrupt.h>
44 #include <linux/io.h>
45+#include <linux/io-64-nonatomic-lo-hi.h>
46 #include <linux/kernel.h>
47 #include <linux/list.h>
48 #include <linux/module.h>
49@@ -122,11 +123,11 @@
50
51
52 /* Event attributes */
53-#define CMN_CONFIG_TYPE GENMASK(15, 0)
54-#define CMN_CONFIG_EVENTID GENMASK(23, 16)
55-#define CMN_CONFIG_OCCUPID GENMASK(27, 24)
56-#define CMN_CONFIG_BYNODEID BIT(31)
57-#define CMN_CONFIG_NODEID GENMASK(47, 32)
58+#define CMN_CONFIG_TYPE GENMASK_ULL(15, 0)
59+#define CMN_CONFIG_EVENTID GENMASK_ULL(23, 16)
60+#define CMN_CONFIG_OCCUPID GENMASK_ULL(27, 24)
61+#define CMN_CONFIG_BYNODEID BIT_ULL(31)
62+#define CMN_CONFIG_NODEID GENMASK_ULL(47, 32)
63
64 #define CMN_EVENT_TYPE(event) FIELD_GET(CMN_CONFIG_TYPE, (event)->attr.config)
65 #define CMN_EVENT_EVENTID(event) FIELD_GET(CMN_CONFIG_EVENTID, (event)->attr.config)
66@@ -134,13 +135,13 @@
67 #define CMN_EVENT_BYNODEID(event) FIELD_GET(CMN_CONFIG_BYNODEID, (event)->attr.config)
68 #define CMN_EVENT_NODEID(event) FIELD_GET(CMN_CONFIG_NODEID, (event)->attr.config)
69
70-#define CMN_CONFIG_WP_COMBINE GENMASK(27, 24)
71-#define CMN_CONFIG_WP_DEV_SEL BIT(48)
72-#define CMN_CONFIG_WP_CHN_SEL GENMASK(50, 49)
73-#define CMN_CONFIG_WP_GRP BIT(52)
74-#define CMN_CONFIG_WP_EXCLUSIVE BIT(53)
75-#define CMN_CONFIG1_WP_VAL GENMASK(63, 0)
76-#define CMN_CONFIG2_WP_MASK GENMASK(63, 0)
77+#define CMN_CONFIG_WP_COMBINE GENMASK_ULL(27, 24)
78+#define CMN_CONFIG_WP_DEV_SEL BIT_ULL(48)
79+#define CMN_CONFIG_WP_CHN_SEL GENMASK_ULL(50, 49)
80+#define CMN_CONFIG_WP_GRP BIT_ULL(52)
81+#define CMN_CONFIG_WP_EXCLUSIVE BIT_ULL(53)
82+#define CMN_CONFIG1_WP_VAL GENMASK_ULL(63, 0)
83+#define CMN_CONFIG2_WP_MASK GENMASK_ULL(63, 0)
84
85 #define CMN_EVENT_WP_COMBINE(event) FIELD_GET(CMN_CONFIG_WP_COMBINE, (event)->attr.config)
86 #define CMN_EVENT_WP_DEV_SEL(event) FIELD_GET(CMN_CONFIG_WP_DEV_SEL, (event)->attr.config)
87--
Patrick Williams2194f502022-10-16 14:26:09 -0500882.34.1
Brad Bishopbec4ebc2022-08-03 09:55:16 -040089