Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5351ad94 authored by Mathieu Poirier's avatar Mathieu Poirier Committed by Yabin Cui
Browse files

UPSTREAM: coresight: etm4x: Add kernel configuration for CONTEXTID



(Upstream commit 82500a810ee26ac542d128499d7adae163e61adb).

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>

Bug: 140266694
Change-Id: I6a36134c7c162c9e4e8efa164b31b03e373e4dae
Signed-off-by: default avatarYabin Cui <yabinc@google.com>
parent 36e1605d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -75,6 +75,7 @@ config CORESIGHT_SOURCE_ETM4X
	bool "CoreSight Embedded Trace Macrocell 4.x driver"
	depends on ARM64
	select CORESIGHT_LINKS_AND_SINKS
	select PID_IN_CONTEXTIDR
	help
	  This driver provides support for the ETM4.x tracer module, tracing the
	  instructions that a processor is executing. This is primarily useful
+2 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ static DEFINE_PER_CPU(struct coresight_device *, csdev_src);

/* ETMv3.5/PTM's ETMCR is 'config' */
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(retstack,	"config:" __stringify(ETM_OPT_RETSTK));
/* Sink ID - same for all ETMs */
@@ -36,6 +37,7 @@ PMU_FORMAT_ATTR(sinkid, "config2:0-31");

static struct attribute *etm_config_formats_attr[] = {
	&format_attr_cycacc.attr,
	&format_attr_contextid.attr,
	&format_attr_timestamp.attr,
	&format_attr_retstack.attr,
	&format_attr_sinkid.attr,
+5 −0
Original line number Diff line number Diff line
@@ -245,6 +245,11 @@ static int etm4_parse_event_config(struct etmv4_drvdata *drvdata,
	if (attr->config & BIT(ETM_OPT_TS))
		/* bit[11], Global timestamp tracing bit */
		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 */
	if ((attr->config & BIT(ETM_OPT_RETSTK)) && drvdata->retstack)
		/* bit[12], Return stack enable bit */
+2 −0
Original line number Diff line number Diff line
@@ -12,11 +12,13 @@

/* ETMv3.5/PTM's ETMCR config bit */
#define ETM_OPT_CYCACC  12
#define ETM_OPT_CTXTID	14
#define ETM_OPT_TS      28
#define ETM_OPT_RETSTK	29

/* ETMv4 CONFIGR programming bits for the ETM OPTs */
#define ETM4_CFG_BIT_CYCACC	4
#define ETM4_CFG_BIT_CTXTID	6
#define ETM4_CFG_BIT_TS		11
#define ETM4_CFG_BIT_RETSTK	12

+2 −0
Original line number Diff line number Diff line
@@ -12,11 +12,13 @@

/* ETMv3.5/PTM's ETMCR config bit */
#define ETM_OPT_CYCACC  12
#define ETM_OPT_CTXTID	14
#define ETM_OPT_TS      28
#define ETM_OPT_RETSTK	29

/* ETMv4 CONFIGR programming bits for the ETM OPTs */
#define ETM4_CFG_BIT_CYCACC	4
#define ETM4_CFG_BIT_CTXTID	6
#define ETM4_CFG_BIT_TS		11
#define ETM4_CFG_BIT_RETSTK	12