[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20100304085007.GM13205@erda.amd.com>
Date: Thu, 4 Mar 2010 09:50:07 +0100
From: Robert Richter <robert.richter@....com>
To: Peter Zijlstra <peterz@...radead.org>
CC: mingo@...e.hu, linux-kernel@...r.kernel.org, paulus@...ba.org,
eranian@...gle.com, fweisbec@...il.com
Subject: Re: [RFC][PATCH 06/11] perf, x86: PEBS infrastructure
On 03.03.10 18:42:48, Peter Zijlstra wrote:
> On Wed, 2010-03-03 at 18:38 +0100, Robert Richter wrote:
> > > + fake_cpuc = kmalloc(sizeof(*fake_cpuc), GFP_KERNEL | __GFP_ZERO);
> > > + if (!fake_cpuc)
> > > + return -ENOMEM;
> > > +
> > > + c = x86_pmu.get_event_constraints(fake_cpuc, event);
> > > +
> > > + if (!c || !c->weight)
> > > + ret = -ENOSPC;
> > > +
> > > + if (x86_pmu.put_event_constraints)
> > > + x86_pmu.put_event_constraints(fake_cpuc, event);
> >
> > A fake cpu with the struct filled with zeros will cause a null pointer
> > exception in amd_get_event_constraints():
> >
> > struct amd_nb *nb = cpuc->amd_nb;
>
> That should result in nb == NULL, right? which is checked slightly
> further in the function.
Yes, right. The problem was in your earlier version of this code where
fake_cpuc was a null pointer. The check in amd_get_event_constraints()
for nb should work.
-Robert
>
> > Shouldn't x86_schedule_events() sufficient to decide if a single
> > counter is available? I did not yet look at group events, this might
> > happen there too.
>
> Sure, but we will only attempt scheduling them at enable time, this is a
> creation time check, failing to create an unschedulable event seems
> prudent.
>
>
--
Advanced Micro Devices, Inc.
Operating System Research Center
email: robert.richter@....com
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists