Commit 82500a81 authored by Mathieu Poirier's avatar Mathieu Poirier Committed by Greg Kroah-Hartman

coresight: etm4x: Add kernel configuration for CONTEXTID

Set the proper bit in the configuration register when contextID tracing
has been requested by user space.  That way PE_CONTEXT elements are
generated by the tracers when a process is installed on a CPU.
Signed-off-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
Reviewed-by: default avatarSuzuki K Poulose <suzuki.poulose@arm.com>
Tested-by: default avatarLeo Yan <leo.yan@linaro.org>
Tested-by: default avatarRobert Walker <robert.walker@arm.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 6fcdba33
...@@ -75,6 +75,7 @@ config CORESIGHT_SOURCE_ETM4X ...@@ -75,6 +75,7 @@ config CORESIGHT_SOURCE_ETM4X
bool "CoreSight Embedded Trace Macrocell 4.x driver" bool "CoreSight Embedded Trace Macrocell 4.x driver"
depends on ARM64 depends on ARM64
select CORESIGHT_LINKS_AND_SINKS select CORESIGHT_LINKS_AND_SINKS
select PID_IN_CONTEXTIDR
help help
This driver provides support for the ETM4.x tracer module, tracing the This driver provides support for the ETM4.x tracer module, tracing the
instructions that a processor is executing. This is primarily useful instructions that a processor is executing. This is primarily useful
......
...@@ -29,6 +29,7 @@ static DEFINE_PER_CPU(struct coresight_device *, csdev_src); ...@@ -29,6 +29,7 @@ static DEFINE_PER_CPU(struct coresight_device *, csdev_src);
/* ETMv3.5/PTM's ETMCR is 'config' */ /* ETMv3.5/PTM's ETMCR is 'config' */
PMU_FORMAT_ATTR(cycacc, "config:" __stringify(ETM_OPT_CYCACC)); PMU_FORMAT_ATTR(cycacc, "config:" __stringify(ETM_OPT_CYCACC));
PMU_FORMAT_ATTR(contextid, "config:" __stringify(ETM_OPT_CTXTID));
PMU_FORMAT_ATTR(timestamp, "config:" __stringify(ETM_OPT_TS)); PMU_FORMAT_ATTR(timestamp, "config:" __stringify(ETM_OPT_TS));
PMU_FORMAT_ATTR(retstack, "config:" __stringify(ETM_OPT_RETSTK)); PMU_FORMAT_ATTR(retstack, "config:" __stringify(ETM_OPT_RETSTK));
/* Sink ID - same for all ETMs */ /* Sink ID - same for all ETMs */
...@@ -36,6 +37,7 @@ PMU_FORMAT_ATTR(sinkid, "config2:0-31"); ...@@ -36,6 +37,7 @@ PMU_FORMAT_ATTR(sinkid, "config2:0-31");
static struct attribute *etm_config_formats_attr[] = { static struct attribute *etm_config_formats_attr[] = {
&format_attr_cycacc.attr, &format_attr_cycacc.attr,
&format_attr_contextid.attr,
&format_attr_timestamp.attr, &format_attr_timestamp.attr,
&format_attr_retstack.attr, &format_attr_retstack.attr,
&format_attr_sinkid.attr, &format_attr_sinkid.attr,
......
...@@ -239,6 +239,11 @@ static int etm4_parse_event_config(struct etmv4_drvdata *drvdata, ...@@ -239,6 +239,11 @@ static int etm4_parse_event_config(struct etmv4_drvdata *drvdata,
if (attr->config & BIT(ETM_OPT_TS)) if (attr->config & BIT(ETM_OPT_TS))
/* bit[11], Global timestamp tracing bit */ /* bit[11], Global timestamp tracing bit */
config->cfg |= BIT(11); config->cfg |= BIT(11);
if (attr->config & BIT(ETM_OPT_CTXTID))
/* bit[6], Context ID tracing bit */
config->cfg |= BIT(ETM4_CFG_BIT_CTXTID);
/* return stack - enable if selected and supported */ /* return stack - enable if selected and supported */
if ((attr->config & BIT(ETM_OPT_RETSTK)) && drvdata->retstack) if ((attr->config & BIT(ETM_OPT_RETSTK)) && drvdata->retstack)
/* bit[12], Return stack enable bit */ /* bit[12], Return stack enable bit */
......
...@@ -12,11 +12,13 @@ ...@@ -12,11 +12,13 @@
/* ETMv3.5/PTM's ETMCR config bit */ /* ETMv3.5/PTM's ETMCR config bit */
#define ETM_OPT_CYCACC 12 #define ETM_OPT_CYCACC 12
#define ETM_OPT_CTXTID 14
#define ETM_OPT_TS 28 #define ETM_OPT_TS 28
#define ETM_OPT_RETSTK 29 #define ETM_OPT_RETSTK 29
/* ETMv4 CONFIGR programming bits for the ETM OPTs */ /* ETMv4 CONFIGR programming bits for the ETM OPTs */
#define ETM4_CFG_BIT_CYCACC 4 #define ETM4_CFG_BIT_CYCACC 4
#define ETM4_CFG_BIT_CTXTID 6
#define ETM4_CFG_BIT_TS 11 #define ETM4_CFG_BIT_TS 11
#define ETM4_CFG_BIT_RETSTK 12 #define ETM4_CFG_BIT_RETSTK 12
......
...@@ -12,11 +12,13 @@ ...@@ -12,11 +12,13 @@
/* ETMv3.5/PTM's ETMCR config bit */ /* ETMv3.5/PTM's ETMCR config bit */
#define ETM_OPT_CYCACC 12 #define ETM_OPT_CYCACC 12
#define ETM_OPT_CTXTID 14
#define ETM_OPT_TS 28 #define ETM_OPT_TS 28
#define ETM_OPT_RETSTK 29 #define ETM_OPT_RETSTK 29
/* ETMv4 CONFIGR programming bits for the ETM OPTs */ /* ETMv4 CONFIGR programming bits for the ETM OPTs */
#define ETM4_CFG_BIT_CYCACC 4 #define ETM4_CFG_BIT_CYCACC 4
#define ETM4_CFG_BIT_CTXTID 6
#define ETM4_CFG_BIT_TS 11 #define ETM4_CFG_BIT_TS 11
#define ETM4_CFG_BIT_RETSTK 12 #define ETM4_CFG_BIT_RETSTK 12
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment