Paul, On Wed, Oct 7, 2009 at 1:15 PM, Paul Mackerras <pau...@samba.org> wrote: > Peter Zijlstra writes: > >> > By design of this API, the user should never be concerned about >> > ordering the events >> > in a group a certain way to get a successful assignment to counters. >> > This should all >> > be handled by the kernel. >> >> Agreed, the POWER implementation actually does this quite nicely, maybe >> we should borrow some of its code for scheduling groups. > > Yeah, I'm quite pleased with how that code turned out, and I'd be > happy to help adapt it for other architectures. The one design > handles all the POWER PMUs from POWER4 with multiple layers of event > multiplexers feeding an event bus (and some events available through > more than one multiplexer) through to the much simpler and more > straightforward POWER7. > I am not an expert on PPC PMU register constraints but I took a quick look at the code and in particular hw_perf_enable() where the action seems to be.
Given that in kernel/perf_events.c, the PMU specific layer is invoked on a per event basis in event_sched_in(), you need to have a way to look at the registers you have already assigned. I think this is what PPC does. it stops the PMU and re-runs the assignment code. But for that it needs to maintains a per-cpu structure which has the current event -> counter assignment. What PPC does is probably the only way to do this given the interface between generic and machine-specific code. The one advantage I see is that it works inside an event group but also across event groups because that code does not look at group boundary, it only looks at the events and the number of available registers. The downside is that you duplicate state. Did I get this right, Paul? ------------------------------------------------------------------------------ Come build with us! The BlackBerry(R) Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9 - 12, 2009. Register now! http://p.sf.net/sfu/devconference _______________________________________________ perfmon2-devel mailing list perfmon2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/perfmon2-devel