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,
	Kan Liang <kan.liang@linux.intel.com>
Subject: [PATCH 2/6] perf/x86/intel/pebs: Fix PEBS timestamps overwritten
Date: Wed, 31 Aug 2022 07:55:10 -0700	[thread overview]
Message-ID: <20220831145514.190514-3-kan.liang@linux.intel.com> (raw)
In-Reply-To: <20220831145514.190514-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 6ce73b4ae2f3..3af24c4891fb 100644
--- a/arch/x86/events/intel/ds.c
+++ b/arch/x86/events/intel/ds.c
@@ -1640,8 +1640,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;
@@ -1702,8 +1704,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-08-31 14:56 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-31 14:55 [PATCH 0/6] Add sample_flags to improve the perf_sample_data struct kan.liang
2022-08-31 14:55 ` [PATCH 1/6] perf: Add sample_flags to indicate the PMU-filled sample data kan.liang
2022-08-31 14:55 ` kan.liang [this message]
2022-08-31 14:55 ` [PATCH 3/6] perf: Use sample_flags for branch stack kan.liang
2022-08-31 22:47   ` Namhyung Kim
2022-09-01 12:42     ` Liang, Kan
2022-08-31 14:55 ` [PATCH 4/6] perf: Use sample_flags for weight kan.liang
2022-08-31 14:55 ` [PATCH 5/6] perf: Use sample_flags for data_src kan.liang
2022-08-31 14:55 ` [PATCH 6/6] perf: Use sample_flags for txn kan.liang
2022-08-31 22:42 ` [PATCH 0/6] Add sample_flags to improve the perf_sample_data struct Namhyung Kim
2022-09-01 12:47   ` Liang, Kan
2022-09-02  5:24     ` Namhyung Kim

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=20220831145514.190514-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=peterz@infradead.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.