From: Cyrill Gorcunov <gorcunov@gmail.com>
To: Ingo Molnar <mingo@elte.hu>, Lin Ming <ming.m.lin@intel.com>,
Jaswinder Singh Rajput <jaswinderlinux@gmail.com>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Frederic Weisbecker <fweisbec@gmail.com>
Subject: Re: Performance Events hangs with Intel P4 system
Date: Fri, 14 May 2010 18:52:13 +0400 [thread overview]
Message-ID: <20100514145213.GA13509@lenovo> (raw)
In-Reply-To: <20100514135240.GA4952@lenovo>
On Fri, May 14, 2010 at 05:52:40PM +0400, Cyrill Gorcunov wrote:
> On Fri, May 14, 2010 at 01:56:55PM +0200, Ingo Molnar wrote:
> >
> > * Lin Ming <ming.m.lin@intel.com> wrote:
> >
> > > p4_event_bind::cntr is "unsigned char".
> > > But p4_next_cntr has return type of "int".
> > > So the explicit conversion is needed to get the correct result.
> >
> > > @@ -780,7 +780,7 @@ static int p4_pmu_schedule_events(struct cpu_hw_events *cpuc, int n, int *assign
> > > if (unlikely(escr_idx == -1))
> > > goto done;
> > >
> > > - if (hwc->idx != -1 && !p4_should_swap_ts(hwc->config, cpu)) {
> > > + if (hwc->idx != (unsigned char)-1 && !p4_should_swap_ts(hwc->config, cpu)) {
> >
> > That cast is _extremely_ ugly. Please fix the signedness of the types instead.
> >
> > Ingo
> >
>
> Ingo, what about this one? Jaswinder could you give it a shot (untested)?
>
> -- Cyrill
> ---
>
This one should be much better
---
[PATCH -tip/master] x86,perf: P4 PMU - fix counters allocation logic and sign issue
Jaswinder reported GP:
|
| Message from syslogd@ht at May 14 09:39:32 ...
| kernel:[ 314.908612] EIP: [<c100ccca>]
| x86_perf_event_set_period+0x19d/0x1b2 SS:ESP 0068:edac3d70
|
Ming has narrowed it down to comparision issue between arguments with
different sizes. As result event index reaches value 255 which in turn
leads to GP fault.
Also it was found that p4_next_cntr has a broken logic and should return
counter index if only it was not yet borrowed for another event.
Reported-by: Jaswinder Singh Rajput <jaswinderlinux@gmail.com>
Reported-by: Lin Ming <ming.m.lin@intel.com>
Bisected-by: Lin Ming <ming.m.lin@intel.com>
CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
CC: Ingo Molnar <mingo@elte.hu>
CC: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
---
arch/x86/kernel/cpu/perf_event_p4.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
Index: linux-2.6.git/arch/x86/kernel/cpu/perf_event_p4.c
=====================================================================
--- linux-2.6.git.orig/arch/x86/kernel/cpu/perf_event_p4.c
+++ linux-2.6.git/arch/x86/kernel/cpu/perf_event_p4.c
@@ -747,11 +747,11 @@ static int p4_get_escr_idx(unsigned int
static int p4_next_cntr(int thread, unsigned long *used_mask,
struct p4_event_bind *bind)
{
- int i = 0, j;
+ int i, j;
for (i = 0; i < P4_CNTR_LIMIT; i++) {
- j = bind->cntr[thread][i++];
- if (j == -1 || !test_bit(j, used_mask))
+ j = bind->cntr[thread][i];
+ if (j != (unsigned char)-1 && !test_bit(j, used_mask))
return j;
}
next prev parent reply other threads:[~2010-05-14 14:52 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-13 22:17 Performance Events hangs with Intel P4 system Jaswinder Singh Rajput
2010-05-14 3:19 ` Cyrill Gorcunov
2010-05-14 4:25 ` Jaswinder Singh Rajput
2010-05-14 4:29 ` Cyrill Gorcunov
2010-05-14 6:23 ` Cyrill Gorcunov
2010-05-14 7:52 ` Jaswinder Singh Rajput
2010-05-14 8:41 ` Cyrill Gorcunov
2010-05-14 10:04 ` Cyrill Gorcunov
2010-05-14 10:46 ` Cyrill Gorcunov
2010-05-14 10:56 ` Lin Ming
2010-05-14 11:56 ` Ingo Molnar
2010-05-14 12:07 ` Cyrill Gorcunov
2010-05-14 13:52 ` Cyrill Gorcunov
2010-05-14 14:52 ` Cyrill Gorcunov [this message]
2010-05-14 16:22 ` Jaswinder Singh Rajput
2010-05-14 16:28 ` Cyrill Gorcunov
2010-05-14 16:36 ` Jaswinder Singh Rajput
2010-05-14 16:40 ` Cyrill Gorcunov
2010-05-14 17:48 ` Jaswinder Singh Rajput
2010-05-14 18:01 ` Cyrill Gorcunov
2010-05-14 18:33 ` Jaswinder Singh Rajput
2010-05-14 17:30 ` Cyrill Gorcunov
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=20100514145213.GA13509@lenovo \
--to=gorcunov@gmail.com \
--cc=a.p.zijlstra@chello.nl \
--cc=fweisbec@gmail.com \
--cc=jaswinderlinux@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=ming.m.lin@intel.com \
--cc=mingo@elte.hu \
/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