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.
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.