On Tue, May 10, 2011 at 11:25:14AM -0400, Peter Zijlstra wrote: > On Tue, 2011-05-10 at 17:08 +0200, Roedel, Joerg wrote: > > On Tue, May 10, 2011 at 10:50:08AM -0400, Peter Zijlstra wrote: > > > On Tue, 2011-05-10 at 16:35 +0200, Joerg Roedel wrote: > > > > @@ -740,6 +740,12 @@ parse_event_modifier(const char **strp, struct perf_event_attr *attr) > > > > if (!exclude) > > > > exclude = eu = ek = eh = 1; > > > > eh = 0; > > > > + } else if (*str == 'G') { > > > > + eg = 0; > > > > + ehst = 1; > > > > + } else if (*str == 'H') { > > > > + eg = 1; > > > > + ehst = 0; > > > > > > This doesn't match the existing exclude logic, also eH and eG come to > > > mind. > > > > OK, eH and eG seems like a better choice. Regarding the logic I > > explictly decided to do it this way. The reason is that guest/host > > counting is orthogonal to user/kernel/hv counting. You can decide to > > only count guest-kernel for example. And if a user just specifies > > -e cycles:G this would automatically exlucde user and kernel counting. > > This didn't make sense to me so I decided to keep the logic seperate for > > guest/host exclusions. > > OK, so the changelog lacked that bit of information ;-) Okay, so I add this information to the changelog. > How about you do something like: > > > > + } else if (*str == 'G') { > + if (!excl_GH) > + excl_GH = eH = eG = 1; > + eG = 0; > + } else if (*str == 'H') { > + if (!excl_GH) > + excl_GH = eH = eG = 1; > + eH = 0; > > Which mirrors the existing logic but keeps it orthogonal? Right, it would better fit to the u/k/hv logic. It is not strictly needed because there are only two excludes here but it makes the code look more consistent. I'll change it. > Hmm,. does this nicely integrate with exclude_hv? that seems to want to > be grouped with G/H. I intended to re-use the exlude_hv bit originally, but then I looked into how this bit is used. On PPC it looks like this bit is set when Linux itself runs as a guest to exclude the hypervisor code being profiled. The meaning here is different (beacause Linux itself is the hypervisor) and I wanted to avoid different semantics for this bit across architectures. So I introduces seperate bits. The exclude_hv bit can be used when we have some kind of perf-ctr support for KVM guests. Regards, Joerg -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html