From: Peter Zijlstra <peterz@infradead.org>
To: Stephane Eranian <eranian@google.com>
Cc: linux-kernel@vger.kernel.org, mingo@elte.hu, acme@redhat.com,
ming.m.lin@intel.com, andi@firstfloor.org,
robert.richter@amd.com, ravitillo@lbl.gov, will.deacon@arm.com,
paulus@samba.org, benh@kernel.crashing.org, rth@twiddle.net,
ralf@linux-mips.org, davem@davemloft.net, lethal@linux-sh.org
Subject: Re: [PATCH 09/12] perf_events: add hook to flush branch_stack on context switch (v2)
Date: Thu, 08 Dec 2011 11:49:36 +0100 [thread overview]
Message-ID: <1323341376.17673.10.camel@twins> (raw)
In-Reply-To: <CABPqkBT=XrbyLLzxUf7KKwk4MGcSVq-b0DtDQL1cgg1z1b0UpQ@mail.gmail.com>
On Wed, 2011-12-07 at 10:25 -0800, Stephane Eranian wrote:
> On Mon, Dec 5, 2011 at 1:37 PM, Peter Zijlstra <peterz@infradead.org> wrote:
> > On Fri, 2011-10-14 at 14:37 +0200, Stephane Eranian wrote:
> >> + /*
> >> + * check if the context has at least one
> >> + * event using PERF_SAMPLE_BRANCH_STACK
> >> + */
> >> + if (cpuctx->ctx.nr_branch_stack > 0
> >> + && pmu->flush_branch_stack) {
> >> +
> >> + pmu = cpuctx->ctx.pmu;
> >> +
> >> + perf_ctx_lock(cpuctx, cpuctx->task_ctx);
> >> +
> >> + perf_pmu_disable(pmu);
> >> +
> >> + pmu->flush_branch_stack();
> >> +
> >> + perf_pmu_enable(pmu);
> >> +
> >> + perf_ctx_unlock(cpuctx, cpuctx->task_ctx);
> >> + }
> >> + }
> >
> > (what whitespace looks funny)
> >
> > So all PMUs not supporting this branch stuff will fail to create a
> > has_branch_stack() event, right? Thus all ctx with !0 nr_branch_stack
> > support it. Doesn't this make the test for pmu->flush_branch_stack
> > redundant?
> >
> >
> No, nr_branch_stack counts the number of active events with
> branch_stack. It's like the ctx->nr_cgroups. Processors which
> do not support branch_stack will always have this field to 0.
> It's not because a processor supports branch_stack that we
> need to call flush_branch_stack(), i.e., we use a lazy approach.
What you're saying is we can support branch stack and not need
flush_branch_stack()? Say in the case the x86 LBR TOS field would be a
full u64 counter, since then we could sample the TOS on context switch
and filter on that, obviating the hard reset we do now.
And the advantage of testing for the operation as opposed to putting in
a dummy function (like we do for most other optional methods) is
avoiding all that ctx_lock and pmu_disable muck.
Fair enough.
next prev parent reply other threads:[~2011-12-08 10:50 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-14 12:37 [PATCH 00/12] perf_events: add support for sampling taken branches (v2) Stephane Eranian
2011-10-14 12:37 ` [PATCH 01/12] perf_events: add generic taken branch sampling support (v2) Stephane Eranian
2011-12-05 21:06 ` Peter Zijlstra
2011-12-06 19:42 ` Stephane Eranian
2011-12-05 22:14 ` Peter Zijlstra
2011-12-06 19:27 ` Stephane Eranian
2011-10-14 12:37 ` [PATCH 02/12] perf_events: add Intel LBR MSR definitions (v2) Stephane Eranian
2011-10-14 12:37 ` [PATCH 03/12] perf_events: add Intel X86 LBR sharing logic (v2) Stephane Eranian
2011-10-14 12:37 ` [PATCH 04/12] perf_events: sync branch stack sampling with X86 precise_sampling (v2) Stephane Eranian
2011-10-14 12:37 ` [PATCH 05/12] perf_events: add LBR mappings for PERF_SAMPLE_BRANCH filters (v2) Stephane Eranian
2011-12-05 22:35 ` Peter Zijlstra
2011-12-07 4:22 ` Stephane Eranian
2011-10-14 12:37 ` [PATCH 06/12] perf_events: implement PERF_SAMPLE_BRANCH for Intel X86 (v2) Stephane Eranian
2011-10-14 12:37 ` [PATCH 07/12] perf_events: add LBR software filter support " Stephane Eranian
2011-12-05 22:29 ` Peter Zijlstra
2011-10-14 12:37 ` [PATCH 08/12] perf_events: disable PERF_SAMPLE_BRANCH_* when not supported (v2) Stephane Eranian
2011-10-14 12:37 ` [PATCH 09/12] perf_events: add hook to flush branch_stack on context switch (v2) Stephane Eranian
2011-12-05 21:10 ` Peter Zijlstra
2011-12-05 21:37 ` Peter Zijlstra
2011-12-07 18:25 ` Stephane Eranian
2011-12-08 10:49 ` Peter Zijlstra [this message]
2011-12-08 18:04 ` Stephane Eranian
2011-12-08 18:13 ` Peter Zijlstra
2011-12-08 22:06 ` Stephane Eranian
2011-12-09 9:00 ` Peter Zijlstra
2011-10-14 12:37 ` [PATCH 10/12] perf: add code to support PERF_SAMPLE_BRANCH_STACK (v2) Stephane Eranian
2011-10-14 12:37 ` [PATCH 11/12] perf: add support for sampling taken branch to perf record (v2) Stephane Eranian
2011-10-14 12:37 ` [PATCH 12/12] perf: add support for taken branch sampling to perf report (v2) Stephane Eranian
2011-12-04 20:11 ` [PATCH 00/12] perf_events: add support for sampling taken branches (v2) Stephane Eranian
2011-12-05 15:27 ` Peter Zijlstra
2011-12-05 22:39 ` Peter Zijlstra
2011-12-06 9:49 ` Will Deacon
2011-12-06 11:03 ` Peter Zijlstra
2011-12-06 19:14 ` Stephane Eranian
2011-12-06 19:20 ` Peter Zijlstra
2011-12-06 19:22 ` Stephane Eranian
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=1323341376.17673.10.camel@twins \
--to=peterz@infradead.org \
--cc=acme@redhat.com \
--cc=andi@firstfloor.org \
--cc=benh@kernel.crashing.org \
--cc=davem@davemloft.net \
--cc=eranian@google.com \
--cc=lethal@linux-sh.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ming.m.lin@intel.com \
--cc=mingo@elte.hu \
--cc=paulus@samba.org \
--cc=ralf@linux-mips.org \
--cc=ravitillo@lbl.gov \
--cc=robert.richter@amd.com \
--cc=rth@twiddle.net \
--cc=will.deacon@arm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox