|| ||Linus Torvalds <torvalds-AT-linux-foundation.org> |
|| ||Ingo Molnar <mingo-AT-kernel.org> |
|| ||Re: [GIT PULL] perf changes for v3.8 |
|| ||Thu, 13 Dec 2012 09:10:03 -0800|
|| ||David Ahern <dsahern-AT-gmail.com>,
Linux Kernel Mailing List <linux-kernel-AT-vger.kernel.org>,
Arnaldo Carvalho de Melo <acme-AT-infradead.org>,
Peter Zijlstra <a.p.zijlstra-AT-chello.nl>,
Thomas Gleixner <tglx-AT-linutronix.de>,
Andrew Morton <akpm-AT-linux-foundation.org>|
|| ||Article, Thread
On Thu, Dec 13, 2012 at 8:59 AM, Ingo Molnar <firstname.lastname@example.org> wrote:
> * Linus Torvalds <email@example.com> wrote:
>> It's not a regression since THAT CODE NEVER WORKED, for
>> chissake! The case of people actually profiling into virtual
>> machines crashes the running VMs, as you say. There's no way
>> in hell we can call it a regression to say "you now have to
>> use a flag if you profile a load with virtualization", since
>> there wasn't any working case to begin with.
> ::include_guest looks like the more logical flag direction to
> use in any case.
See the email I just sent. The *non*-precise case presumably used to
work (and included the virtualized environment). No?
So the default shouldn't necessarily be "include guest". The default
should presumably be "the user didn't say", and then the kernel does
whatever works best.
If the user actually explicitly says one or the other, we should try
to honor that (and then EOPNOTSUPP may be a "sorry, I really cannot do
that particular combination that you explicitly asked for").
That should make everybody happy. Doing a non-PEBS virtualized perf
run should still work with the old binary.
So there should be two bits: "include guest" (V in the event specifier
unless you already used that for something else) and "host only" (H),
and they should both default to off. Then the kernel can see the three
(Or four cases, if you really want to: you may or may not want to make
the "both V and H set means both, and _only_ V set means 'no host at
all, _only_ virtual environment'. So then ":ppV" would mean
"cycle-accurate for virtual box _only_", while ":ppVH" would mean
"cycle-accurate for both the host and the virtual box". Of course,
considering the PEBS interface, right now neither of those can
actually work, but plain ":V" and ":HV" could work).
The important thing, I think, is that if the user doesn't know or care
about the VM case (because he's not running any!) and doesn't specify,
then the kernel should not say EOPNOTSUPP, and should do whatever
works for that cpu.
to post comments)