All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mathieu Poirier <mathieu.poirier@linaro.org>
To: Leo Yan <leo.yan@linaro.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Mike Leach <mike.leach@linaro.org>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	John Garry <john.garry@huawei.com>, Will Deacon <will@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Mark Rutland <mark.rutland@arm.com>, Jiri Olsa <jolsa@redhat.com>,
	Namhyung Kim <namhyung@kernel.org>,
	Daniel Kiss <Daniel.Kiss@arm.com>,
	Denis Nikitin <denik@chromium.org>,
	coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v1 0/7] coresight: etm-perf: Fix pid tracing with VHE
Date: Mon, 11 Jan 2021 11:16:46 -0700	[thread overview]
Message-ID: <20210111181646.GB144935@xps15> (raw)
In-Reply-To: <20210109074435.626855-1-leo.yan@linaro.org>

Hi Leo,

Suzuki and Mike have pointed out a few things to modify and there was a couple
of kernel bot warnings to address as well.  As such I will wait for your next
revision before looking at this set.

Thanks,
Mathieu

On Sat, Jan 09, 2021 at 03:44:28PM +0800, Leo Yan wrote:
> This patch series is a following up for the previous version which was
> delivered by Suzuki [1].  Below gives the background info for why we
> need this patch series, directly quotes the description in the cover
> letter of the previous version:
> 
> "With the Virtualization Host Extensions, the kernel can run at EL2.
> In this case the pid is written to CONTEXTIDR_EL2 instead of the
> CONTEXTIDR_EL1. Thus the normal coresight tracing will be unable
> to detect the PID of the thread generating the trace by looking
> at the CONTEXTIDR_EL1. Thus, depending on the kernel EL, we must
> switch to tracing the correct CONTEXTIDR register.
> 
> With VHE, we must set the TRCCONFIGR.VMID and TRCCONFIGR.VMID_OPT
> to include the CONTEXTIDR_EL2 as the VMID in the trace. This
> requires the perf tool to detect the changes in the TRCCONFIGR and
> use the VMID / CID field for the PID. The challenge here is for
> the perf tool to detect the kernel behavior.
> 
> Instead of the previously proposed invasive approaches, this set
> implements a less intrusive mechanism, by playing with the
> perf_event.attribute.config bits."
> 
> Same as the previous series, this series keeps the same implementation
> for two introduced format bits:
> 
> - contextid_in_vmid -> Is only supported when the VMID tracing
>   and CONTEXTIDR_EL2 both are supported. When requested the perf
>   etm4x backend sets (TRCCONFIGR.VMID | TRCCONFIGR.VMID_OPT).
>   As per ETMv4.4 TRM, when the core supports VHE, the CONTEXTIDR_EL2
>   tracing is mandatory. (See the field TRCID2.VMIDOPT)
> 
> - pid -> Is an alias for the correct config to enable PID tracing
>   on any kernel.
>   i.e, in EL1 kernel -> pid == contextid
>           EL2 kernel -> pid == contextid_in_vmid
> 
> With this, the perf tool is also updated to request the "pid"
> tracing whenever available, falling back to "contextid" if it
> is unavailable.
> 
> Comparing against the old version, this patch series uses the metadata
> to save PID format; after add new item into metadata, it introduces
> backward compatibility issue.  To allow backward compatibility, this
> series calculates per CPU metadata array size and avoid to use the
> defined macro, so can always know the correct array size based on the
> info stored in perf data file.  Finally, the PID format stored in
> metadata is passed to decoder and guide the decoder to set PID from
> CONTEXTIDR_EL1 or VMID.
> 
> This patch series has been tested on Arm Juno-r2 board, with testing
> two perf data files: one data file is recorded by the latest perf tool
> after applied this patch series, and another data file is recorded by
> old perf tool without this patch series, so this can prove the tool is
> backward compatible.
> 
> Changes from RFC:
> * Added comments to clarify cases requested (Leo);
> * Explain the change to generic flags for cs_etm_set_option() in the
>   commit description;
> * Stored PID format in metadata and passed it to decoder (Leo);
> * Enhanced cs-etm for backward compatibility (Denis Nikitin).
> 
> [1] https://archive.armlinux.org.uk/lurker/message/20201110.183310.24406f33.en.html
> 
> 
> Leo Yan (4):
>   perf cs-etm: Calculate per CPU metadata array size
>   perf cs-etm: Add PID format into metadata
>   perf cs-etm: Fixup PID_FMT when it is zero
>   perf cs-etm: Add helper cs_etm__get_pid_fmt()
> 
> Suzuki K Poulose (3):
>   coresight: etm-perf: Add support for PID tracing for kernel at EL2
>   perf cs_etm: Use pid tracing explicitly instead of contextid
>   perf cs-etm: Detect pid in VMID for kernel running at EL2
> 
>  .../hwtracing/coresight/coresight-etm-perf.c  | 14 +++
>  .../coresight/coresight-etm4x-core.c          |  9 ++
>  include/linux/coresight-pmu.h                 | 11 ++-
>  tools/include/linux/coresight-pmu.h           | 11 ++-
>  tools/perf/arch/arm/util/cs-etm.c             | 89 +++++++++++++++----
>  .../perf/util/cs-etm-decoder/cs-etm-decoder.c | 32 ++++++-
>  tools/perf/util/cs-etm.c                      | 61 ++++++++++++-
>  tools/perf/util/cs-etm.h                      |  3 +
>  8 files changed, 198 insertions(+), 32 deletions(-)
> 
> -- 
> 2.25.1
> 

WARNING: multiple messages have this Message-ID (diff)
From: Mathieu Poirier <mathieu.poirier@linaro.org>
To: Leo Yan <leo.yan@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>,
	Denis Nikitin <denik@chromium.org>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@redhat.com>,
	coresight@lists.linaro.org, John Garry <john.garry@huawei.com>,
	linux-kernel@vger.kernel.org,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Namhyung Kim <namhyung@kernel.org>,
	Daniel Kiss <Daniel.Kiss@arm.com>, Will Deacon <will@kernel.org>,
	linux-arm-kernel@lists.infradead.org,
	Mike Leach <mike.leach@linaro.org>
Subject: Re: [PATCH v1 0/7] coresight: etm-perf: Fix pid tracing with VHE
Date: Mon, 11 Jan 2021 11:16:46 -0700	[thread overview]
Message-ID: <20210111181646.GB144935@xps15> (raw)
In-Reply-To: <20210109074435.626855-1-leo.yan@linaro.org>

Hi Leo,

Suzuki and Mike have pointed out a few things to modify and there was a couple
of kernel bot warnings to address as well.  As such I will wait for your next
revision before looking at this set.

Thanks,
Mathieu

On Sat, Jan 09, 2021 at 03:44:28PM +0800, Leo Yan wrote:
> This patch series is a following up for the previous version which was
> delivered by Suzuki [1].  Below gives the background info for why we
> need this patch series, directly quotes the description in the cover
> letter of the previous version:
> 
> "With the Virtualization Host Extensions, the kernel can run at EL2.
> In this case the pid is written to CONTEXTIDR_EL2 instead of the
> CONTEXTIDR_EL1. Thus the normal coresight tracing will be unable
> to detect the PID of the thread generating the trace by looking
> at the CONTEXTIDR_EL1. Thus, depending on the kernel EL, we must
> switch to tracing the correct CONTEXTIDR register.
> 
> With VHE, we must set the TRCCONFIGR.VMID and TRCCONFIGR.VMID_OPT
> to include the CONTEXTIDR_EL2 as the VMID in the trace. This
> requires the perf tool to detect the changes in the TRCCONFIGR and
> use the VMID / CID field for the PID. The challenge here is for
> the perf tool to detect the kernel behavior.
> 
> Instead of the previously proposed invasive approaches, this set
> implements a less intrusive mechanism, by playing with the
> perf_event.attribute.config bits."
> 
> Same as the previous series, this series keeps the same implementation
> for two introduced format bits:
> 
> - contextid_in_vmid -> Is only supported when the VMID tracing
>   and CONTEXTIDR_EL2 both are supported. When requested the perf
>   etm4x backend sets (TRCCONFIGR.VMID | TRCCONFIGR.VMID_OPT).
>   As per ETMv4.4 TRM, when the core supports VHE, the CONTEXTIDR_EL2
>   tracing is mandatory. (See the field TRCID2.VMIDOPT)
> 
> - pid -> Is an alias for the correct config to enable PID tracing
>   on any kernel.
>   i.e, in EL1 kernel -> pid == contextid
>           EL2 kernel -> pid == contextid_in_vmid
> 
> With this, the perf tool is also updated to request the "pid"
> tracing whenever available, falling back to "contextid" if it
> is unavailable.
> 
> Comparing against the old version, this patch series uses the metadata
> to save PID format; after add new item into metadata, it introduces
> backward compatibility issue.  To allow backward compatibility, this
> series calculates per CPU metadata array size and avoid to use the
> defined macro, so can always know the correct array size based on the
> info stored in perf data file.  Finally, the PID format stored in
> metadata is passed to decoder and guide the decoder to set PID from
> CONTEXTIDR_EL1 or VMID.
> 
> This patch series has been tested on Arm Juno-r2 board, with testing
> two perf data files: one data file is recorded by the latest perf tool
> after applied this patch series, and another data file is recorded by
> old perf tool without this patch series, so this can prove the tool is
> backward compatible.
> 
> Changes from RFC:
> * Added comments to clarify cases requested (Leo);
> * Explain the change to generic flags for cs_etm_set_option() in the
>   commit description;
> * Stored PID format in metadata and passed it to decoder (Leo);
> * Enhanced cs-etm for backward compatibility (Denis Nikitin).
> 
> [1] https://archive.armlinux.org.uk/lurker/message/20201110.183310.24406f33.en.html
> 
> 
> Leo Yan (4):
>   perf cs-etm: Calculate per CPU metadata array size
>   perf cs-etm: Add PID format into metadata
>   perf cs-etm: Fixup PID_FMT when it is zero
>   perf cs-etm: Add helper cs_etm__get_pid_fmt()
> 
> Suzuki K Poulose (3):
>   coresight: etm-perf: Add support for PID tracing for kernel at EL2
>   perf cs_etm: Use pid tracing explicitly instead of contextid
>   perf cs-etm: Detect pid in VMID for kernel running at EL2
> 
>  .../hwtracing/coresight/coresight-etm-perf.c  | 14 +++
>  .../coresight/coresight-etm4x-core.c          |  9 ++
>  include/linux/coresight-pmu.h                 | 11 ++-
>  tools/include/linux/coresight-pmu.h           | 11 ++-
>  tools/perf/arch/arm/util/cs-etm.c             | 89 +++++++++++++++----
>  .../perf/util/cs-etm-decoder/cs-etm-decoder.c | 32 ++++++-
>  tools/perf/util/cs-etm.c                      | 61 ++++++++++++-
>  tools/perf/util/cs-etm.h                      |  3 +
>  8 files changed, 198 insertions(+), 32 deletions(-)
> 
> -- 
> 2.25.1
> 

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2021-01-11 18:17 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-09  7:44 [PATCH v1 0/7] coresight: etm-perf: Fix pid tracing with VHE Leo Yan
2021-01-09  7:44 ` Leo Yan
2021-01-09  7:44 ` [PATCH v1 1/7] coresight: etm-perf: Add support for PID tracing for kernel at EL2 Leo Yan
2021-01-09  7:44   ` Leo Yan
2021-01-09 10:05   ` kernel test robot
2021-01-10  1:24     ` [PATCH] " Suzuki K Poulose
2021-01-10  1:41       ` Leo Yan
2021-01-10 22:34         ` Suzuki K Poulose
2021-01-11  0:05           ` Leo Yan
2021-01-09 11:24   ` [PATCH v1 1/7] " kernel test robot
2021-01-11 16:22   ` Mike Leach
2021-01-11 16:22     ` Mike Leach
2021-01-12  7:22     ` Leo Yan
2021-01-12  7:22       ` Leo Yan
2021-01-12  8:58     ` Leo Yan
2021-01-12  8:58       ` Leo Yan
2021-01-12 11:03       ` Suzuki K Poulose
2021-01-12 11:03         ` Suzuki K Poulose
2021-01-12 11:23       ` Mike Leach
2021-01-12 11:23         ` Mike Leach
2021-01-12 14:14         ` Leo Yan
2021-01-12 14:14           ` Leo Yan
2021-01-12 23:43           ` Mike Leach
2021-01-12 23:43             ` Mike Leach
2021-01-15 22:30   ` Mathieu Poirier
2021-01-15 22:30     ` Mathieu Poirier
2021-01-19  7:05     ` Suzuki K Poulose
2021-01-19  7:05       ` Suzuki K Poulose
2021-01-09  7:44 ` [PATCH v1 2/7] perf cs_etm: Use pid tracing explicitly instead of contextid Leo Yan
2021-01-09  7:44   ` Leo Yan
2021-01-15 22:44   ` Mathieu Poirier
2021-01-15 22:44     ` Mathieu Poirier
2021-01-19  2:32     ` Leo Yan
2021-01-19  2:32       ` Leo Yan
2021-01-09  7:44 ` [PATCH v1 3/7] perf cs-etm: Calculate per CPU metadata array size Leo Yan
2021-01-09  7:44   ` Leo Yan
2021-01-11  7:28   ` Suzuki K Poulose
2021-01-11  7:28     ` Suzuki K Poulose
2021-01-11 12:09     ` Mike Leach
2021-01-11 12:09       ` Mike Leach
2021-01-11 15:06       ` Leo Yan
2021-01-11 15:06         ` Leo Yan
2021-01-13  0:00         ` Mike Leach
2021-01-13  0:00           ` Mike Leach
2021-01-13  2:27           ` Leo Yan
2021-01-13  2:27             ` Leo Yan
2021-01-15 22:46       ` Mathieu Poirier
2021-01-15 22:46         ` Mathieu Poirier
2021-01-16  0:50         ` Leo Yan
2021-01-16  0:50           ` Leo Yan
2021-01-09  7:44 ` [PATCH v1 4/7] perf cs-etm: Add PID format into metadata Leo Yan
2021-01-09  7:44   ` Leo Yan
2021-01-11  9:45   ` Suzuki K Poulose
2021-01-11  9:45     ` Suzuki K Poulose
2021-01-11 13:12     ` Leo Yan
2021-01-11 13:12       ` Leo Yan
2021-01-09  7:44 ` [PATCH v1 5/7] perf cs-etm: Fixup PID_FMT when it is zero Leo Yan
2021-01-09  7:44   ` Leo Yan
2021-01-11  9:47   ` Suzuki K Poulose
2021-01-11  9:47     ` Suzuki K Poulose
2021-01-09  7:44 ` [PATCH v1 6/7] perf cs-etm: Add helper cs_etm__get_pid_fmt() Leo Yan
2021-01-09  7:44   ` Leo Yan
2021-01-11  9:55   ` Suzuki K Poulose
2021-01-11  9:55     ` Suzuki K Poulose
2021-01-09  7:44 ` [PATCH v1 7/7] perf cs-etm: Detect pid in VMID for kernel running at EL2 Leo Yan
2021-01-09  7:44   ` Leo Yan
2021-01-11 10:07   ` Suzuki K Poulose
2021-01-11 10:07     ` Suzuki K Poulose
2021-01-11 13:10     ` Leo Yan
2021-01-11 13:10       ` Leo Yan
2021-01-11 18:16 ` Mathieu Poirier [this message]
2021-01-11 18:16   ` [PATCH v1 0/7] coresight: etm-perf: Fix pid tracing with VHE Mathieu Poirier
2021-01-12  7:23   ` Leo Yan
2021-01-12  7:23     ` Leo Yan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210111181646.GB144935@xps15 \
    --to=mathieu.poirier@linaro.org \
    --cc=Daniel.Kiss@arm.com \
    --cc=acme@kernel.org \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=coresight@lists.linaro.org \
    --cc=denik@chromium.org \
    --cc=john.garry@huawei.com \
    --cc=jolsa@redhat.com \
    --cc=leo.yan@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mike.leach@linaro.org \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=suzuki.poulose@arm.com \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.