Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

coresight: Define format attributes with GEN_PMU_FORMAT_ATTR()

This allows us to define and consume them in a unified way in later
commits.

A lot of the existing code has open coded bit shifts or direct usage of
whole config values which is error prone and hides which bits are in use
and which are free.

Reviewed-by: Leo Yan <leo.yan@arm.com>
Reviewed-by: Mike Leach <mike.leach@linaro.org>
Tested-by: Leo Yan <leo.yan@arm.com>
Signed-off-by: James Clark <james.clark@linaro.org>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Link: https://lore.kernel.org/r/20251128-james-cs-syncfreq-v8-5-4d319764cc58@linaro.org

authored by

James Clark and committed by
Suzuki K Poulose
458db625 20bc2ea2

+42 -10
+11 -10
drivers/hwtracing/coresight/coresight-etm-perf.c
··· 13 13 #include <linux/mm.h> 14 14 #include <linux/init.h> 15 15 #include <linux/perf_event.h> 16 + #include <linux/perf/arm_pmu.h> 16 17 #include <linux/percpu-defs.h> 17 18 #include <linux/slab.h> 18 19 #include <linux/stringhash.h> ··· 51 50 static DEFINE_PER_CPU(struct etm_ctxt, etm_ctxt); 52 51 static DEFINE_PER_CPU(struct coresight_device *, csdev_src); 53 52 54 - PMU_FORMAT_ATTR(cycacc, "config:" __stringify(ETM_OPT_CYCACC)); 55 - PMU_FORMAT_ATTR(timestamp, "config:" __stringify(ETM_OPT_TS)); 56 - PMU_FORMAT_ATTR(retstack, "config:" __stringify(ETM_OPT_RETSTK)); 57 - PMU_FORMAT_ATTR(sinkid, "config2:0-31"); 53 + GEN_PMU_FORMAT_ATTR(cycacc); 54 + GEN_PMU_FORMAT_ATTR(timestamp); 55 + GEN_PMU_FORMAT_ATTR(retstack); 56 + GEN_PMU_FORMAT_ATTR(sinkid); 58 57 59 58 #if IS_ENABLED(CONFIG_CORESIGHT_SOURCE_ETM4X) 60 - PMU_FORMAT_ATTR(branch_broadcast, "config:"__stringify(ETM_OPT_BRANCH_BROADCAST)); 59 + GEN_PMU_FORMAT_ATTR(branch_broadcast); 61 60 /* contextid1 enables tracing CONTEXTIDR_EL1*/ 62 - PMU_FORMAT_ATTR(contextid1, "config:" __stringify(ETM_OPT_CTXTID)); 61 + GEN_PMU_FORMAT_ATTR(contextid1); 63 62 /* contextid2 enables tracing CONTEXTIDR_EL2*/ 64 - PMU_FORMAT_ATTR(contextid2, "config:" __stringify(ETM_OPT_CTXTID2)); 63 + GEN_PMU_FORMAT_ATTR(contextid2); 65 64 /* preset - if sink ID is used as a configuration selector */ 66 - PMU_FORMAT_ATTR(preset, "config:0-3"); 65 + GEN_PMU_FORMAT_ATTR(preset); 67 66 /* config ID - set if a system configuration is selected */ 68 - PMU_FORMAT_ATTR(configid, "config2:32-63"); 69 - PMU_FORMAT_ATTR(cc_threshold, "config3:0-11"); 67 + GEN_PMU_FORMAT_ATTR(configid); 68 + GEN_PMU_FORMAT_ATTR(cc_threshold); 70 69 71 70 /* 72 71 * contextid always traces the "PID". The PID is in CONTEXTIDR_EL1
+31
drivers/hwtracing/coresight/coresight-etm-perf.h
··· 20 20 */ 21 21 #define ETM_ADDR_CMP_MAX 8 22 22 23 + #define ATTR_CFG_FLD_preset_CFG config 24 + #define ATTR_CFG_FLD_preset_LO 0 25 + #define ATTR_CFG_FLD_preset_HI 3 26 + #define ATTR_CFG_FLD_branch_broadcast_CFG config 27 + #define ATTR_CFG_FLD_branch_broadcast_LO 8 28 + #define ATTR_CFG_FLD_branch_broadcast_HI 8 29 + #define ATTR_CFG_FLD_cycacc_CFG config 30 + #define ATTR_CFG_FLD_cycacc_LO 12 31 + #define ATTR_CFG_FLD_cycacc_HI 12 32 + #define ATTR_CFG_FLD_contextid1_CFG config 33 + #define ATTR_CFG_FLD_contextid1_LO 14 34 + #define ATTR_CFG_FLD_contextid1_HI 14 35 + #define ATTR_CFG_FLD_contextid2_CFG config 36 + #define ATTR_CFG_FLD_contextid2_LO 15 37 + #define ATTR_CFG_FLD_contextid2_HI 15 38 + #define ATTR_CFG_FLD_timestamp_CFG config 39 + #define ATTR_CFG_FLD_timestamp_LO 28 40 + #define ATTR_CFG_FLD_timestamp_HI 28 41 + #define ATTR_CFG_FLD_retstack_CFG config 42 + #define ATTR_CFG_FLD_retstack_LO 29 43 + #define ATTR_CFG_FLD_retstack_HI 29 44 + #define ATTR_CFG_FLD_sinkid_CFG config2 45 + #define ATTR_CFG_FLD_sinkid_LO 0 46 + #define ATTR_CFG_FLD_sinkid_HI 31 47 + #define ATTR_CFG_FLD_configid_CFG config2 48 + #define ATTR_CFG_FLD_configid_LO 32 49 + #define ATTR_CFG_FLD_configid_HI 63 50 + #define ATTR_CFG_FLD_cc_threshold_CFG config3 51 + #define ATTR_CFG_FLD_cc_threshold_LO 0 52 + #define ATTR_CFG_FLD_cc_threshold_HI 11 53 + 23 54 /** 24 55 * struct etm_filter - single instruction range or start/stop configuration. 25 56 * @start_addr: The address to start tracing on.