Re: perf with precise attribute kills all KVM based VMs

From: David Ahern
Date: Mon Jul 09 2012 - 10:47:47 EST


On 7/9/12 8:39 AM, Avi Kivity wrote:
On 07/09/2012 05:24 PM, Peter Zijlstra wrote:
On Mon, 2012-07-09 at 17:19 +0300, Gleb Natapov wrote:
Yes, this is knows problem that I can't find time to fix. The crash is
cause by CPU using host PEBS virtual address while guest is running
which causes guest memory corruption. We should disable evens that use
PEBS at the guest entry.

Whoops.. so the hardware is reading the DS address as programmed by the
host (host linear address) and using it as a guest linear address?

Quality stuff..

Disabling PEBS events for guests isn't pretty though..

We already have atomic MSR switching at guest entry/exit time. So it's
not pretty in terms of not getting full profiling, but the code won't be
too hard. Basically we just have to exclude_guest any pebs event.

I found this testing changes to perf-kvm, but found the problem extends to just perf-record. With perf-record exclude_guest defaults to 1. See tools/perf/util/util.c, event_attr_init().


but I guess the
only alternative is mapping the DS into the guest and reprogramming
MSR_IA32_DS_AREA which is all a little involved I suppose?

Way too involved, especially as it's virtual addresses and we don't
control the guest cr3. Note that the hardware won't fail gracefully.



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/