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

Sheng Yang
2010-04-15T14:08:08Z

On Thursday 15 April 2010 18:44:15 Avi Kivity wrote:
> On 04/15/2010 01:40 PM, Joerg Roedel wrote:
> >> That means an NMI that happens outside guest code (for example, in the
> >> mmu, or during the exit itself) would be counted as if in guest code.
> >
> > Hmm, true. The same is true for an NMI that happens between VMSAVE and
> > STGI but that window is smaller. Anyway, I think we don't need the
> > busy-wait loop. The NMI should be executed at a well defined point and
> > we set the cpu_var back to NULL after that point.
>
> The point is not well defined. Considering there are already at least
> two implementations svm, I don't want to rely on implementation details.

After more investigating, I realized that I had interpreted the SDM wrong.
Sorry.

There is *no* risk with the original method of calling "int $2".

According to the SDM 24.1:

> The following bullets detail when architectural state is and is not updated
in response to VM exits:
[...]
> - An NMI causes subsequent NMIs to be blocked, but only after the VM exit
completes.

So the truth is, after NMI directly caused VMExit, the following NMIs would be
blocked, until encountered next "iret". So execute "int $2" is safe in
vmx_complete_interrupts(), no risk in causing nested NMI. And it would unblock
the following NMIs as well due to "iret" it executed.

So there is unnecessary to make change to avoid "potential nested NMI".

Sorry for the mistake and caused confusing.

--
regards
Yang, Sheng

>
> We could tune the position of the loop so that zero iterations are
> executed on the implementations we know about.
>