[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.
Suzuki
More information about the linux-arm-kernel
mailing list