public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Alexander Shishkin <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: bp@alien8.de, acme@infradead.org, eranian@google.com,
	markus.t.metzger@intel.com, vincent.weaver@maine.edu,
	acme@redhat.com, torvalds@linux-foundation.org,
	linux-kernel@vger.kernel.org, alexander.shishkin@linux.intel.com,
	mingo@kernel.org, peterz@infradead.org, tglx@linutronix.de,
	hpa@zytor.com, jolsa@redhat.com
Subject: [tip:perf/core] perf/x86/intel/pt: Generate PMI in the STOP region as well
Date: Thu, 12 May 2016 03:34:37 -0700	[thread overview]
Message-ID: <tip-5fbe4788b55540a6c4fe2c47e05482ac356eaf74@git.kernel.org> (raw)
In-Reply-To: <1462886313-13660-2-git-send-email-alexander.shishkin@linux.intel.com>

Commit-ID:  5fbe4788b55540a6c4fe2c47e05482ac356eaf74
Gitweb:     http://git.kernel.org/tip/5fbe4788b55540a6c4fe2c47e05482ac356eaf74
Author:     Alexander Shishkin <alexander.shishkin@linux.intel.com>
AuthorDate: Tue, 10 May 2016 16:18:32 +0300
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 12 May 2016 10:14:55 +0200

perf/x86/intel/pt: Generate PMI in the STOP region as well

Currently, the PT driver always sets the PMI bit one region (page) before
the STOP region so that we can wake up the consumer before we run out of
room in the buffer and have to disable the event. However, we also need
an interrupt in the last output region, so that we actually get to disable
the event (if no more room from new data is available at that point),
otherwise hardware just quietly refuses to start, but the event is
scheduled in and we end up losing trace data till the event gets removed.

For a cpu-wide event it is even worse since there may not be any
re-scheduling at all and no chance for the ring buffer code to notice
that its buffer is filled up and the event needs to be disabled (so that
the consumer can re-enable it when it finishes reading the data out). In
other words, all the trace data will be lost after the buffer gets filled
up.

This patch makes PT also generate a PMI when the last output region is
full.

Reported-by: Markus Metzger <markus.t.metzger@intel.com>
Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Arnaldo Carvalho de Melo <acme@infradead.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vince Weaver <vincent.weaver@maine.edu>
Cc: vince@deater.net
Link: http://lkml.kernel.org/r/1462886313-13660-2-git-send-email-alexander.shishkin@linux.intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/events/intel/pt.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/x86/events/intel/pt.c b/arch/x86/events/intel/pt.c
index 54fa238..04bb5fb 100644
--- a/arch/x86/events/intel/pt.c
+++ b/arch/x86/events/intel/pt.c
@@ -835,6 +835,7 @@ static int pt_buffer_reset_markers(struct pt_buffer *buf,
 
 	/* clear STOP and INT from current entry */
 	buf->topa_index[buf->stop_pos]->stop = 0;
+	buf->topa_index[buf->stop_pos]->intr = 0;
 	buf->topa_index[buf->intr_pos]->intr = 0;
 
 	/* how many pages till the STOP marker */
@@ -859,6 +860,7 @@ static int pt_buffer_reset_markers(struct pt_buffer *buf,
 	buf->intr_pos = idx;
 
 	buf->topa_index[buf->stop_pos]->stop = 1;
+	buf->topa_index[buf->stop_pos]->intr = 1;
 	buf->topa_index[buf->intr_pos]->intr = 1;
 
 	return 0;

  reply	other threads:[~2016-05-12 10:35 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-10 13:18 [PATCH 0/2] perf, pt: Fix massive data losses Alexander Shishkin
2016-05-10 13:18 ` [PATCH 1/2] perf/x86/intel/pt: Generate PMI in the STOP region as well Alexander Shishkin
2016-05-12 10:34   ` tip-bot for Alexander Shishkin [this message]
2016-05-12 12:28     ` [tip:perf/core] " Alexander Shishkin
2016-05-12 12:47       ` Ingo Molnar
2016-05-12 13:03         ` Alexander Shishkin
2016-05-12 12:48   ` [tip:perf/urgent] " tip-bot for Alexander Shishkin
2016-05-17  7:31     ` Alexander Shishkin
2016-05-17  8:40       ` Ingo Molnar
2016-05-21  5:25         ` Greg KH
2016-05-10 13:18 ` [PATCH 2/2] perf: Disable the event on a truncated AUX record Alexander Shishkin
2016-05-11  9:13   ` Peter Zijlstra
2016-05-11  9:41     ` Alexander Shishkin
2016-05-11  9:49       ` Peter Zijlstra
2016-05-11 10:05         ` Alexander Shishkin
2016-05-12 10:35   ` [tip:perf/core] perf/core: " tip-bot for Alexander Shishkin
2016-05-12 12:49   ` [tip:perf/urgent] " tip-bot for Alexander Shishkin

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=tip-5fbe4788b55540a6c4fe2c47e05482ac356eaf74@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=acme@infradead.org \
    --cc=acme@redhat.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=bp@alien8.de \
    --cc=eranian@google.com \
    --cc=hpa@zytor.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=markus.t.metzger@intel.com \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=vincent.weaver@maine.edu \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox