Thread (23 messages) 23 messages, 5 authors, 2022-05-17

Re: [PATCH v8 5/8] perf tool: Add support for HiSilicon PCIe Tune and Trace device driver

From: liuqi (BA) <hidden>
Date: 2022-05-17 01:57:34
Also in: linux-iommu, linux-pci, linux-perf-users, lkml


On 2022/5/16 22:20, Jonathan Cameron wrote:
On Mon, 16 May 2022 20:52:20 +0800
Yicong Yang [off-list ref] wrote:
quoted
From: Qi Liu <redacted>

HiSilicon PCIe tune and trace device (PTT) could dynamically tune
the PCIe link's events, and trace the TLP headers).

This patch add support for PTT device in perf tool, so users could
use 'perf record' to get TLP headers trace data.

Signed-off-by: Qi Liu <redacted>
Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
One query inline.

quoted
diff --git a/tools/perf/arch/arm/util/auxtrace.c b/tools/perf/arch/arm/util/auxtrace.c
index 384c7cfda0fd..297fffedf45e 100644
--- a/tools/perf/arch/arm/util/auxtrace.c
+++ b/tools/perf/arch/arm/util/auxtrace.c
...
quoted
  static struct perf_pmu *find_pmu_for_event(struct perf_pmu **pmus,
  					   int pmu_nr, struct evsel *evsel)
  {
@@ -71,17 +120,21 @@ struct auxtrace_record
  {
  	struct perf_pmu	*cs_etm_pmu = NULL;
  	struct perf_pmu **arm_spe_pmus = NULL;
+	struct perf_pmu **hisi_ptt_pmus = NULL;
  	struct evsel *evsel;
  	struct perf_pmu *found_etm = NULL;
  	struct perf_pmu *found_spe = NULL;
+	struct perf_pmu *found_ptt = NULL;
  	int auxtrace_event_cnt = 0;
  	int nr_spes = 0;
+	int nr_ptts = 0;
  
  	if (!evlist)
  		return NULL;
  
  	cs_etm_pmu = perf_pmu__find(CORESIGHT_ETM_PMU_NAME);
  	arm_spe_pmus = find_all_arm_spe_pmus(&nr_spes, err);
+	hisi_ptt_pmus = find_all_hisi_ptt_pmus(&nr_ptts, err);
  
  	evlist__for_each_entry(evlist, evsel) {
  		if (cs_etm_pmu && !found_etm)
@@ -89,9 +142,13 @@ struct auxtrace_record
  
  		if (arm_spe_pmus && !found_spe)
  			found_spe = find_pmu_for_event(arm_spe_pmus, nr_spes, evsel);
+
+		if (arm_spe_pmus && !found_spe)
		if (hisi_ptt_pmus && !found_ptt) ?

Otherwise, I'm not sure what the purpose of the checking against spe is.
yes...it's a typo here, thanks for the reminder!

Qi
quoted
+			found_ptt = find_pmu_for_event(hisi_ptt_pmus, nr_ptts, evsel);
  	}
  
  	free(arm_spe_pmus);
+	free(hisi_ptt_pmus);
  
  	if (found_etm)
  		auxtrace_event_cnt++;
@@ -99,6 +156,9 @@ struct auxtrace_record
  	if (found_spe)
  		auxtrace_event_cnt++;
  
+	if (found_ptt)
+		auxtrace_event_cnt++;
+
  	if (auxtrace_event_cnt > 1) {
  		pr_err("Concurrent AUX trace operation not currently supported\n");
  		*err = -EOPNOTSUPP;
@@ -111,6 +171,9 @@ struct auxtrace_record
  #if defined(__aarch64__)
  	if (found_spe)
  		return arm_spe_recording_init(err, found_spe);
+
+	if (found_ptt)
+		return hisi_ptt_recording_init(err, found_ptt);
  #endif
  
.
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help