From: Michael Ellerman <michael@ellerman.id.au>
To: Anshuman Khandual <khandual@linux.vnet.ibm.com>
Cc: linuxppc-dev@ozlabs.org, mikey@neuling.org
Subject: Re: [PATCH] powerpc, perf: Configure BHRB filter before enabling PMU interrupts
Date: Fri, 11 Oct 2013 13:11:31 +1100 [thread overview]
Message-ID: <20131011021131.GA26561@concordia> (raw)
In-Reply-To: <52566A4E.2000409@linux.vnet.ibm.com>
On Thu, Oct 10, 2013 at 02:20:22PM +0530, Anshuman Khandual wrote:
> On 10/09/2013 11:33 AM, Michael Ellerman wrote:
> > On Wed, Oct 09, 2013 at 10:16:32AM +0530, Anshuman Khandual wrote:
> >> On 10/09/2013 06:51 AM, Michael Ellerman wrote:
> >>> On Tue, Oct 08, 2013 at 12:51:18PM +0530, Anshuman Khandual wrote:
> >>>> On 10/08/2013 09:51 AM, Michael Ellerman wrote:
> >>>>> On Mon, Oct 07, 2013 at 10:00:26AM +0530, Anshuman Khandual wrote:
> >>>>>> Right now the `config_bhrb` PMU specific call happens after write_mmcr0
> >>>>>> which actually enables the PMU for event counting and interrupt. So
> >>>>>> there is a small window of time where the PMU and BHRB runs without the
> >>>>>> required HW branch filter (if any) enabled in BHRB. This can cause some
> >>>>>> of the branch samples to be collected through BHRB without any filter
> >>>>>> being applied and hence affecting the correctness of the results. This
> >>>>>> patch moves the BHRB config function call before enabling the interrupts.
> >>>>>
> >>>>> Patch looks good.
> >>>>>
> >>>>> But it reminds me I have an item in my TODO list:
> >>>>> - "Why can't config_bhrb() be done in compute_mmcr()" ?
> >>>>>
> >>>>
> >>>> compute_mmcr() function deals with generic MMCR* configs for normal PMU
> >>>> events. Even if BHRB config touches MMCRA register, it's configuration
> >>>> does not interfere with the PMU config for general events. So its best
> >>>> to keep them separate.
> >>>
> >>> I'm unconvinced. If they'd been together to begin with this bug never
> >>> would have happened.
> >>
> >> This is an ordering of configuration problem. Putting them together in the
> >> same function does not rule out the chances of this ordering problem. Could
> >> you please kindly explain how this could have been avoided ?
> >
> > The existing code already makes sure to write MMCRA before MMCR0.
>
> Thats not true. One example being here at power_pmu_enable function.
>
> write_mmcr0(cpuhw, mmcr0);
>
> /*
> * Enable instruction sampling if necessary
> */
> if (cpuhw->mmcr[2] & MMCRA_SAMPLE_ENABLE) {
> mb();
> mtspr(SPRN_MMCRA, cpuhw->mmcr[2]);
> }
The only example.
The BHRB config would have been applied prior to that:
mtspr(SPRN_MMCRA, cpuhw->mmcr[2] & ~MMCRA_SAMPLE_ENABLE);
mtspr(SPRN_MMCR1, cpuhw->mmcr[1]);
mtspr(SPRN_MMCR0, (cpuhw->mmcr[0] & ~(MMCR0_PMC1CE | MMCR0_PMCjCE))
| MMCR0_FC);
So as I said, if the BHRB config was in cpuhw->mmcr[2] then the ordering would
have been correct.
> Even I think this is not right. Instruction sampling should have been
> enabled before we enable PMU interrupts. Else there is a small window
> of time where we could have the PMU enabled with events (which requires
> sampling) without the sampling itself being enabled in MMCRA.
Yes I agree. That's a separate bug, which we'll need to test on all the book3s
platforms we have perf support for.
cheers
next prev parent reply other threads:[~2013-10-11 2:11 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-07 4:30 [PATCH] powerpc, perf: Configure BHRB filter before enabling PMU interrupts Anshuman Khandual
2013-10-08 4:21 ` Michael Ellerman
2013-10-08 7:21 ` Anshuman Khandual
2013-10-09 1:21 ` Michael Ellerman
2013-10-09 4:46 ` Anshuman Khandual
2013-10-09 6:03 ` Michael Ellerman
2013-10-10 8:50 ` Anshuman Khandual
2013-10-11 2:11 ` Michael Ellerman [this message]
2013-10-11 4:32 ` Anshuman Khandual
2013-10-14 6:19 ` Michael Ellerman
2013-10-16 4:30 ` Anshuman Khandual
2013-12-13 6:46 ` Anshuman Khandual
-- strict thread matches above, loose matches on Subject: below --
2013-12-18 2:14 Michael Ellerman
2013-12-18 3:41 ` Anshuman Khandual
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=20131011021131.GA26561@concordia \
--to=michael@ellerman.id.au \
--cc=khandual@linux.vnet.ibm.com \
--cc=linuxppc-dev@ozlabs.org \
--cc=mikey@neuling.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).