[PATCH v2 2/7] coresight: etm-perf: Support PID tracing for kernel at EL2

Suzuki K Poulose suzuki.poulose at arm.com
Tue Feb 2 18:06:16 EST 2021

On 2/2/21 4:38 PM, Leo Yan wrote:
> From: Suzuki K Poulose <suzuki.poulose at arm.com>
> When the kernel is running at EL2, the PID is stored in CONTEXTIDR_EL2.
> So, tracing CONTEXTIDR_EL1 doesn't give us the pid of the process.
> Thus we should trace the VMID with VMIDOPT set to trace CONTEXTIDR_EL2
> instead of CONTEXTIDR_EL1.  Given that we have an existing config
> option "contextid" and this will be useful for tracing virtual machines
> (when we get to support virtualization).
> So instead, this patch extends option CTXTID with an extra bit
> ETM_OPT_CTXTID2 (bit 15), thus on an EL2 kernel, we will have another
> bit available for the perf tool: ETM_OPT_CTXTID is for kernel running in
> EL1, ETM_OPT_CTXTID2 is used when kernel runs in EL2 with VHE enabled.
> The tool must be backward compatible for users, i.e, "contextid" today
> traces PID and that should remain the same; for this purpose, the perf
> tool is updated to automatically set corresponding bit for the
> "contextid" config, therefore, the user doesn't have to bother which EL
> the kernel is running.
>    i.e, perf record -e cs_etm/contextid/u --
> will always do the "pid" tracing, independent of the kernel EL.
> The driver parses the format "contextid", which traces CONTEXTIDR_EL1
> for ETM_OPT_CTXTID (on EL1 kernel) and traces CONTEXTIDR_EL2 for
> ETM_OPT_CTXTID2 (on EL2 kernel).
> Besides the enhancement for format "contexid", extra two formats are
> introduced: "contextid1" and "contextid2".  This considers to support
> tracing both CONTEXTIDR_EL1 and CONTEXTIDR_EL2 when the kernel is
> running at EL2.  Finally, the PMU formats are defined as follow:
>    "contextid1": Available on both EL1 kernel and EL2 kernel.  When the
>                  kernel is running at EL1, "contextid1" enables the PID
> 		tracing; when the kernel is running at EL2, this enables
> 		tracing the PID of guest applications.
>    "contextid2": Only usable when the kernel is running at EL2.  When
>                  selected, enables PID tracing on EL2 kernel.
>    "contextid":  Will be an alias for the option that enables PID
>                  tracing.  I.e,
>                  contextid == contextid1, on EL1 kernel.
>                  contextid == contextid2, on EL2 kernel.
> Cc: Mathieu Poirier <mathieu.poirier at linaro.org>
> Cc: Al Grant <al.grant at arm.com>
> Cc: Mike Leach <mike.leach at linaro.org>
> Cc: Leo Yan <leo.yan at linaro.org>
> Signed-off-by: Suzuki K Poulose <suzuki.poulose at arm.com>

You may add the following line here :

[ Added two config formats: contextid1, contextid2 ]

> Signed-off-by: Leo Yan <leo.yan at linaro.org>

The patch as such looks good to me.


More information about the linux-arm-kernel mailing list