Re: [PATCH V3] perf & kvm: Enhance perf to collect KVM guest os statistics from host side

Avi Kivity
2010-04-15T08:05:33Z

On 04/15/2030 04:04 AM, Zhang, Yanmin wrote:
>
>> An even more accurate way to determine this is to check whether the
>> interrupt frame points back at the 'int $2' instruction. However we
>> plan to switch to a self-IPI method to inject the NMI, and I'm not sure
>> wether APIC NMIs are accepted on an instruction boundary or whether
>> there's some latency involved.
>>
> Yes. But the frame pointer checking seems a little complicated.
>

An even bigger disadvantage is that it won't work with Sheng's patch,
self-NMIs are not synchronous.

>>> trace_kvm_entry(vcpu->vcpu_id);
>>> +
>>> + percpu_write(current_vcpu, vcpu);
>>> kvm_x86_ops->run(vcpu);
>>> + percpu_write(current_vcpu, NULL);
>>>
>>>
>> If you move this around the 'int $2' instructions you will close the
>> race, as a stray NMI won't catch us updating the rip cache. But that
>> depends on whether self-IPI is accepted on the next instruction or not.
>>
> Right. The kernel part has dependency on the self-IPI implementation.
> I will move above percpu_write(current_vcpu, vcpu) (or a new wrapper function)
> just around 'int $2'.
>
>

Or create a new function to inject the interrupt in x86.c. That will
reduce duplication between svm.c and vmx.c.

> Sheng would find a solution on the self-IPI delivery. Let's separate my patch
> and self-IPI as 2 issues as we don't know when the self-IPI delivery would be
> resolved.
>

Sure.

--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.