From: Michael Ellerman <mpe@ellerman.id.au>
To: Anshuman Khandual <khandual@linux.vnet.ibm.com>
Cc: mikey@neuling.org, ak@linux.intel.com,
linux-kernel@vger.kernel.org, eranian@google.com,
linuxppc-dev@ozlabs.org, acme@ghostprotocols.net,
sukadev@linux.vnet.ibm.com, mingo@kernel.org
Subject: Re: [PATCH V4 08/10] powerpc, perf: Enable SW filtering in branch stack sampling framework
Date: Tue, 24 Dec 2013 15:35:10 +1100 [thread overview]
Message-ID: <1387859710.15093.4.camel@concordia> (raw)
In-Reply-To: <52B9049D.4020403@linux.vnet.ibm.com>
On Tue, 2013-12-24 at 09:20 +0530, Anshuman Khandual wrote:
> On 12/24/2013 08:59 AM, Michael Ellerman wrote:
> > On Fri, 2013-12-20 at 16:31 +0530, Anshuman Khandual wrote:
> >> On 12/09/2013 11:51 AM, Michael Ellerman wrote:
> >>> On Wed, 2013-04-12 at 10:32:40 UTC, Anshuman Khandual wrote:
> >>>> +
>
> >>>> + if (bhrb_sw_filter & PERF_SAMPLE_BRANCH_COND) {
> >>>> +
> >>>> + /* I-form instruction - excluded */
> >>>> + if (instr_is_branch_iform(*addr))
> >>>> + goto out;
> >>>> +
> >>>> + /* B-form or XL-form instruction */
> >>>> + if (instr_is_branch_bform(*addr) || instr_is_branch_xlform(*addr)) {
> >>>> +
> >>>> + /* Not branch always */
> >>>> + if (!is_bo_always(*addr)) {
> >>>> +
> >>>> + /* Conditional branch to CTR register */
> >>>> + if (is_bo_ctr(*addr))
> >>>> + goto out;
> >>>
> >>> We might have discussed this but why not?
> >>
> >> Did not get that, discuss what ?
> >
> > Why are we saying a conditional branch to the CTR is not a conditional branch?
> >
> > It is conditional, so I think it should be included.
> I believe conditional branch to CTR register and the below conditional branch
> with static hint are excluded when processed with BHRB PMU based filter IFM3,
> Here the SW implemented filter try to match those exclusions, so that a user
> should not see any difference in results whether the filter is processed
> either in PMU or in SW.
OK. That's what I meant by "we might have discussed this".
So you need to make it very clear in the code that we are implementing the IFM3
semantics, with a comment. Otherwise it's not obviously clear why those
semantics make sense.
And we need to make extra sure we implement the same semantics as IFM3, which I
don't think you do at the moment.
The description for IFM3 is:
Do not record:
* b and bl instructions,
* bc and bcl instructions for which the BO field indicates “Branch always.”
For bclr, bclrl, bctr, bctrl, bctar, and bctarl instructions for which
the BO field indicates “Branch always,” record only one entry
containing the Branch target address.
So I don't think your SW filter implements that part correctly. You are
discarding all branches with "branch always" set.
Do not record:
* Branch instructions for which BO[0]=1,
This is what excludes branches to CTR. But, it's only branches to CTR that
don't also depend on CR[BI] - we need to make that clear in the code.
* Branch instructions for which the “a” bit in the BO field is set to 1.
So that's the is_bo_crbi_hint() check and rejection, but it's not related to
CR[BI] at all.
There's a note about CR[BI]:
Do not record instructions that do not depend on the value of CR[BI].
But I think you've misinterpreted that.
Do not record instructions that do not depend on the value of CR[BI].
Do record instructions that depend on the value of CR[BI].
In fact the only branches that don't depend on CR[BI] are "branch always"
branches, and branches with BO[0]=1, both of which were handled above.
cheers
next prev parent reply other threads:[~2013-12-24 4:35 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-04 10:32 [PATCH V4 00/10] perf: New conditional branch filter Anshuman Khandual
2013-12-04 10:32 ` [PATCH V4 01/10] perf: Add PERF_SAMPLE_BRANCH_COND Anshuman Khandual
2013-12-04 10:32 ` [PATCH V4 02/10] powerpc, perf: Enable conditional branch filter for POWER8 Anshuman Khandual
2013-12-04 10:32 ` [PATCH V4 03/10] perf, tool: Conditional branch filter 'cond' added to perf record Anshuman Khandual
2013-12-04 10:32 ` [PATCH V4 04/10] x86, perf: Add conditional branch filtering support Anshuman Khandual
2013-12-06 16:46 ` Andi Kleen
2013-12-04 10:32 ` [PATCH V4 05/10] perf, documentation: Description for conditional branch filter Anshuman Khandual
2013-12-04 10:32 ` [PATCH V4 06/10] powerpc, perf: Change the name of HW PMU branch filter tracking variable Anshuman Khandual
2013-12-04 10:32 ` [PATCH V4 07/10] powerpc, lib: Add new branch instruction analysis support functions Anshuman Khandual
2013-12-09 6:21 ` Michael Ellerman
2013-12-10 6:09 ` Anshuman Khandual
2013-12-20 10:06 ` Anshuman Khandual
2013-12-04 10:32 ` [PATCH V4 08/10] powerpc, perf: Enable SW filtering in branch stack sampling framework Anshuman Khandual
2013-12-09 6:21 ` Michael Ellerman
2013-12-10 5:57 ` Anshuman Khandual
2013-12-12 8:45 ` Anshuman Khandual
2013-12-13 2:47 ` Michael Ellerman
2013-12-20 11:01 ` Anshuman Khandual
2013-12-24 3:29 ` Michael Ellerman
2013-12-24 3:50 ` Anshuman Khandual
2013-12-24 4:35 ` Michael Ellerman [this message]
2013-12-04 10:32 ` [PATCH V4 09/10] power8, perf: Change BHRB branch filter configuration Anshuman Khandual
2013-12-09 6:21 ` Michael Ellerman
2013-12-13 8:20 ` Anshuman Khandual
2013-12-18 0:08 ` Michael Ellerman
2013-12-18 3:55 ` Anshuman Khandual
2013-12-04 10:32 ` [PATCH V4 10/10] powerpc, perf: Cleanup SW branch filter list look up Anshuman Khandual
2013-12-09 6:21 ` Michael Ellerman
2013-12-20 11:06 ` Anshuman Khandual
2013-12-05 4:47 ` [PATCH V4 00/10] perf: New conditional branch filter Michael Ellerman
2013-12-06 13:18 ` Arnaldo Carvalho de Melo
2013-12-09 0:41 ` Michael Ellerman
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=1387859710.15093.4.camel@concordia \
--to=mpe@ellerman.id.au \
--cc=acme@ghostprotocols.net \
--cc=ak@linux.intel.com \
--cc=eranian@google.com \
--cc=khandual@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@ozlabs.org \
--cc=mikey@neuling.org \
--cc=mingo@kernel.org \
--cc=sukadev@linux.vnet.ibm.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