All of lore.kernel.org
 help / color / mirror / Atom feed
From: kan.liang@linux.intel.com
To: peterz@infradead.org, acme@kernel.org, mingo@redhat.com,
	eranian@google.com, mpe@ellerman.id.au,
	linux-kernel@vger.kernel.org
Cc: ak@linux.intel.com, andreas.kogler.0x@gmail.com,
	atrajeev@linux.vnet.ibm.com, namhyung@kernel.org,
	ravi.bangoria@amd.com, Kan Liang <kan.liang@linux.intel.com>
Subject: [PATCH V2 2/6] perf/x86/intel/pebs: Fix PEBS timestamps overwritten
Date: Thu,  1 Sep 2022 06:09:55 -0700	[thread overview]
Message-ID: <20220901130959.1285717-3-kan.liang@linux.intel.com> (raw)
In-Reply-To: <20220901130959.1285717-1-kan.liang@linux.intel.com>

From: Kan Liang <kan.liang@linux.intel.com>

The PEBS TSC-based timestamps do not appear correctly in the final
perf.data output file from perf record.

The data->time field setup by PEBS in the setup_pebs_fixed_sample_data()
is later overwritten by perf_events generic code in
perf_prepare_sample(). There is an ordering problem.

Set the sample flags when the data->time is updated by PEBS.
The data->time field will not be overwritten anymore.

Reported-by: Andreas Kogler <andreas.kogler.0x@gmail.com>
Reported-by: Stephane Eranian <eranian@google.com>
Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
---
 arch/x86/events/intel/ds.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/arch/x86/events/intel/ds.c b/arch/x86/events/intel/ds.c
index de1f55d51784..01cbe26225c2 100644
--- a/arch/x86/events/intel/ds.c
+++ b/arch/x86/events/intel/ds.c
@@ -1643,8 +1643,10 @@ static void setup_pebs_fixed_sample_data(struct perf_event *event,
 	 * We can only do this for the default trace clock.
 	 */
 	if (x86_pmu.intel_cap.pebs_format >= 3 &&
-		event->attr.use_clockid == 0)
+		event->attr.use_clockid == 0) {
 		data->time = native_sched_clock_from_tsc(pebs->tsc);
+		data->sample_flags |= PERF_SAMPLE_TIME;
+	}
 
 	if (has_branch_stack(event))
 		data->br_stack = &cpuc->lbr_stack;
@@ -1705,8 +1707,10 @@ static void setup_pebs_adaptive_sample_data(struct perf_event *event,
 	perf_sample_data_init(data, 0, event->hw.last_period);
 	data->period = event->hw.last_period;
 
-	if (event->attr.use_clockid == 0)
+	if (event->attr.use_clockid == 0) {
 		data->time = native_sched_clock_from_tsc(basic->tsc);
+		data->sample_flags |= PERF_SAMPLE_TIME;
+	}
 
 	/*
 	 * We must however always use iregs for the unwinder to stay sane; the
-- 
2.35.1


  parent reply	other threads:[~2022-09-01 13:12 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-01 13:09 [PATCH V2 0/6] Add sample_flags to improve the perf_sample_data struct kan.liang
2022-09-01 13:09 ` [PATCH V2 1/6] perf: Add sample_flags to indicate the PMU-filled sample data kan.liang
2022-09-06  9:41   ` [tip: perf/core] " tip-bot2 for Kan Liang
2022-09-01 13:09 ` kan.liang [this message]
2022-09-06  9:41   ` [tip: perf/core] perf/x86/intel/pebs: Fix PEBS timestamps overwritten tip-bot2 for Kan Liang
2022-10-11 18:20   ` [PATCH V2 2/6] " Namhyung Kim
2022-10-12  8:04     ` Peter Zijlstra
2022-10-12 16:12       ` Namhyung Kim
2022-09-01 13:09 ` [PATCH V2 3/6] perf: Use sample_flags for branch stack kan.liang
2022-09-06  9:41   ` [tip: perf/core] " tip-bot2 for Kan Liang
2022-09-27 11:04   ` [PATCH V2 3/6] " Jiri Olsa
2022-09-01 13:09 ` [PATCH V2 4/6] perf: Use sample_flags for weight kan.liang
2022-09-02  5:29   ` Namhyung Kim
2022-09-06 13:56     ` Liang, Kan
2022-09-06  9:41   ` [tip: perf/core] " tip-bot2 for Kan Liang
2022-09-01 13:09 ` [PATCH V2 5/6] perf: Use sample_flags for data_src kan.liang
2022-09-06  9:41   ` [tip: perf/core] " tip-bot2 for Kan Liang
2022-09-01 13:09 ` [PATCH V2 6/6] perf: Use sample_flags for txn kan.liang
2022-09-06  9:41   ` [tip: perf/core] " tip-bot2 for Kan Liang
2022-09-02  5:32 ` [PATCH V2 0/6] Add sample_flags to improve the perf_sample_data struct Namhyung Kim
2022-09-05  3:33   ` Ravi Bangoria

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=20220901130959.1285717-3-kan.liang@linux.intel.com \
    --to=kan.liang@linux.intel.com \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=andreas.kogler.0x@gmail.com \
    --cc=atrajeev@linux.vnet.ibm.com \
    --cc=eranian@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=mpe@ellerman.id.au \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=ravi.bangoria@amd.com \
    /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.