stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [tip:perf/urgent] perf/x86/intel/pt: Generate PMI in the STOP region as well
       [not found] <1462886313-13660-2-git-send-email-alexander.shishkin@linux.intel.com>
@ 2016-05-12 12:48 ` tip-bot for Alexander Shishkin
  2016-05-17  7:31   ` Alexander Shishkin
  0 siblings, 1 reply; 4+ messages in thread
From: tip-bot for Alexander Shishkin @ 2016-05-12 12:48 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: jolsa, tglx, torvalds, vincent.weaver, alexander.shishkin, bp,
	hpa, eranian, markus.t.metzger, stable, acme, mingo, linux-kernel,
	acme, peterz

Commit-ID:  ab92b232ae05c382c3df0e3d6a5c6d16b639ac8c
Gitweb:     http://git.kernel.org/tip/ab92b232ae05c382c3df0e3d6a5c6d16b639ac8c
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 14:45:59 +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: <stable@vger.kernel.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 09a77db..7377814 100644
--- a/arch/x86/events/intel/pt.c
+++ b/arch/x86/events/intel/pt.c
@@ -709,6 +709,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 */
@@ -733,6 +734,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;

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [tip:perf/urgent] perf/x86/intel/pt: Generate PMI in the STOP region as well
  2016-05-12 12:48 ` [tip:perf/urgent] perf/x86/intel/pt: Generate PMI in the STOP region as well tip-bot for Alexander Shishkin
@ 2016-05-17  7:31   ` Alexander Shishkin
  2016-05-17  8:40     ` Ingo Molnar
  0 siblings, 1 reply; 4+ messages in thread
From: Alexander Shishkin @ 2016-05-17  7:31 UTC (permalink / raw)
  To: stable
  Cc: gregkh, jolsa, tglx, torvalds, vincent.weaver, bp, hpa, eranian,
	markus.t.metzger, stable, acme, mingo, linux-kernel, acme, peterz

tip-bot for Alexander Shishkin <tipbot@zytor.com> writes:

> Commit-ID:  ab92b232ae05c382c3df0e3d6a5c6d16b639ac8c
> Gitweb:     http://git.kernel.org/tip/ab92b232ae05c382c3df0e3d6a5c6d16b639ac8c
> 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 14:45:59 +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: <stable@vger.kernel.org>

Can we also have this one queued up for stable 4.4 and 4.5?

Thanks,
--
Alex

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [tip:perf/urgent] perf/x86/intel/pt: Generate PMI in the STOP region as well
  2016-05-17  7:31   ` Alexander Shishkin
@ 2016-05-17  8:40     ` Ingo Molnar
  2016-05-21  5:25       ` Greg KH
  0 siblings, 1 reply; 4+ messages in thread
From: Ingo Molnar @ 2016-05-17  8:40 UTC (permalink / raw)
  To: Alexander Shishkin
  Cc: stable, gregkh, jolsa, tglx, torvalds, vincent.weaver, bp, hpa,
	eranian, markus.t.metzger, acme, linux-kernel, acme, peterz


* Alexander Shishkin <alexander.shishkin@linux.intel.com> wrote:

> tip-bot for Alexander Shishkin <tipbot@zytor.com> writes:
> 
> > Commit-ID:  ab92b232ae05c382c3df0e3d6a5c6d16b639ac8c
> > Gitweb:     http://git.kernel.org/tip/ab92b232ae05c382c3df0e3d6a5c6d16b639ac8c
> > 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 14:45:59 +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: <stable@vger.kernel.org>
> 
> Can we also have this one queued up for stable 4.4 and 4.5?

Agreed.

Acked-by: Ingo Molnar <mingo@kernel.org>

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [tip:perf/urgent] perf/x86/intel/pt: Generate PMI in the STOP region as well
  2016-05-17  8:40     ` Ingo Molnar
@ 2016-05-21  5:25       ` Greg KH
  0 siblings, 0 replies; 4+ messages in thread
From: Greg KH @ 2016-05-21  5:25 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Alexander Shishkin, stable, jolsa, tglx, torvalds, vincent.weaver,
	bp, hpa, eranian, markus.t.metzger, acme, linux-kernel, acme,
	peterz

On Tue, May 17, 2016 at 10:40:34AM +0200, Ingo Molnar wrote:
> 
> * Alexander Shishkin <alexander.shishkin@linux.intel.com> wrote:
> 
> > tip-bot for Alexander Shishkin <tipbot@zytor.com> writes:
> > 
> > > Commit-ID:  ab92b232ae05c382c3df0e3d6a5c6d16b639ac8c
> > > Gitweb:     http://git.kernel.org/tip/ab92b232ae05c382c3df0e3d6a5c6d16b639ac8c
> > > 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 14:45:59 +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: <stable@vger.kernel.org>
> > 
> > Can we also have this one queued up for stable 4.4 and 4.5?
> 
> Agreed.
> 
> Acked-by: Ingo Molnar <mingo@kernel.org>

The filename moved around, now fixed and queued up, thanks.

greg k-h

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-05-21  5:25 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1462886313-13660-2-git-send-email-alexander.shishkin@linux.intel.com>
2016-05-12 12:48 ` [tip:perf/urgent] perf/x86/intel/pt: Generate PMI in the STOP region as well 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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).