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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 2022/5/16 22:20, Jonathan Cameron wrote:
On Mon, 16 May 2022 20:52:20 +0800
Yicong Yang <yangyicong@xxxxxxxxxxxxx> wrote:

From: Qi Liu <liuqi115@xxxxxxxxxx>

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 <liuqi115@xxxxxxxxxx>
Signed-off-by: Yicong Yang <yangyicong@xxxxxxxxxxxxx>

One query inline.


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

...

  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
+			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
.




[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux