linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alexander Shishkin <alexander.shishkin@linux.intel.com>
To: Peter Zijlstra <a.p.zijlstra@chello.nl>, Ingo Molnar <mingo@redhat.com>
Cc: linux-kernel@vger.kernel.org, Paul Mackerras <paulus@samba.org>,
	adrian.hunter@intel.com, x86@kernel.org, hpa@zytor.com,
	acme@infradead.org,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>
Subject: [PATCH v1 4/7] perf/x86/intel/pt: Document pt_buffer_reset_markers()
Date: Fri, 22 May 2015 18:30:23 +0300	[thread overview]
Message-ID: <1432308626-18845-5-git-send-email-alexander.shishkin@linux.intel.com> (raw)
In-Reply-To: <1432308626-18845-1-git-send-email-alexander.shishkin@linux.intel.com>

The comments in the driver don't make it absolutely clear as to what
exactly is the calling order and other possible constraints of buffer
management functions.

Document constraints and calling order for the buffer configuration
functions. While at it, replace a redundant check in
pt_buffer_reset_markers() with an explanation why it is not needed.

Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
---
 arch/x86/kernel/cpu/perf_event_intel_pt.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/arch/x86/kernel/cpu/perf_event_intel_pt.c b/arch/x86/kernel/cpu/perf_event_intel_pt.c
index 8a4595650d..b2746eafa0 100644
--- a/arch/x86/kernel/cpu/perf_event_intel_pt.c
+++ b/arch/x86/kernel/cpu/perf_event_intel_pt.c
@@ -609,7 +609,12 @@ static unsigned int pt_topa_next_entry(struct pt_buffer *buf, unsigned int pg)
  * @handle:	Current output handle.
  *
  * Place INT and STOP marks to prevent overwriting old data that the consumer
- * hasn't yet collected.
+ * hasn't yet collected and waking up the consumer after a certain fraction of
+ * the buffer has filled up. Only needed and sensible for non-snapshot counters.
+ *
+ * This obviously relies on buf::head to figure out buffer markers, so it has
+ * to be called after pt_buffer_reset_offsets() and before the hardware tracing
+ * is enabled.
  */
 static int pt_buffer_reset_markers(struct pt_buffer *buf,
 				   struct perf_output_handle *handle)
@@ -618,9 +623,6 @@ static int pt_buffer_reset_markers(struct pt_buffer *buf,
 	unsigned long head = local64_read(&buf->head);
 	unsigned long idx, npages, wakeup;
 
-	if (buf->snapshot)
-		return 0;
-
 	/* can't stop in the middle of an output region */
 	if (buf->output_off + handle->size + 1 <
 	    sizes(TOPA_ENTRY(buf->cur, buf->cur_idx)->size))
@@ -901,6 +903,7 @@ void intel_pt_interrupt(void)
 		}
 
 		pt_buffer_reset_offsets(buf, pt->handle.head);
+		/* snapshot counters don't use PMI, so it's safe */
 		ret = pt_buffer_reset_markers(buf, &pt->handle);
 		if (ret) {
 			perf_aux_output_end(&pt->handle, 0, true);
-- 
2.1.4


  parent reply	other threads:[~2015-05-22 15:32 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-22 15:30 [PATCH v1 0/7] perf/x86/intel/pt: Fixes and cleanups Alexander Shishkin
2015-05-22 15:30 ` [PATCH v1 1/7] perf: Disallow sparse AUX allocations for non-SG PMUs in overwrite mode Alexander Shishkin
2015-05-27 10:02   ` [tip:perf/core] " tip-bot for Alexander Shishkin
2015-05-22 15:30 ` [PATCH v1 2/7] perf/x86/intel/pt: Kill an unused variable Alexander Shishkin
2015-05-22 15:30 ` [PATCH v1 3/7] perf/x86/intel/pt: Untangle pt_buffer_reset_markers() Alexander Shishkin
2015-05-27 10:02   ` [tip:perf/core] " tip-bot for Alexander Shishkin
2015-05-22 15:30 ` Alexander Shishkin [this message]
2015-05-22 15:30 ` [PATCH v1 5/7] perf/x86/intel/pt: Document pt_buffer_reset_offsets() Alexander Shishkin
2015-05-22 15:30 ` [PATCH v1 6/7] perf/x86/intel/pt: Kill pt_is_running() Alexander Shishkin
2015-05-22 15:30 ` [PATCH v1 7/7] perf/x86/intel/pt: Remove an extra variable declaration Alexander Shishkin
2015-05-27 10:08   ` [tip:perf/core] perf/x86/intel/pt: Remove redundant " tip-bot for Alexander Shishkin
2015-05-22 17:04 ` [PATCH v1 0/7] perf/x86/intel/pt: Fixes and cleanups 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=1432308626-18845-5-git-send-email-alexander.shishkin@linux.intel.com \
    --to=alexander.shishkin@linux.intel.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@infradead.org \
    --cc=adrian.hunter@intel.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=paulus@samba.org \
    --cc=x86@kernel.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 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).