Re: [PATCH] KVM: vmx: shadow more fields that are read/written on every vmexits

From: Paolo Bonzini
Date: Wed Dec 13 2017 - 16:08:48 EST




----- Original Message -----
> From: "Konrad Rzeszutek Wilk" <konrad.wilk@xxxxxxxxxx>
> To: "Paolo Bonzini" <pbonzini@xxxxxxxxxx>
> Cc: linux-kernel@xxxxxxxxxxxxxxx, kvm@xxxxxxxxxxxxxxx, "Jim Mattson" <jmattson@xxxxxxxxxx>, "Wanpeng Li"
> <wanpeng.li@xxxxxxxxxxx>
> Sent: Wednesday, December 13, 2017 4:59:47 PM
> Subject: Re: [PATCH] KVM: vmx: shadow more fields that are read/written on every vmexits
>
> On Wed, Dec 13, 2017 at 01:13:56PM +0100, Paolo Bonzini wrote:
> > Compared to when VMCS shadowing was added to KVM, we are reading/writing
> > a few more fields: the PML index, the interrupt status and the preemption
> > timer value. The first two are because we are exposing more features
> > to nested guests, the preemption timer is simply because we have grown
> > a new optimization. Adding them to the shadow VMCS field lists reduces
> > the cost of a vmexit by about 1000 clock cycles for each field that exists
> > on bare metal.
> >
> > On the other hand, the guest BNDCFGS and TSC offset are not written on
> > fast paths, so remove them.
>
> Which guest types? Linux? What about Windows Hyper-V /VMWare and such?

Only KVM, but I don't see why any other hypervisor would have to
write them more than once per MSR access. VMWRITEs do have a (small but
visible) cost.

> Does it hurt to have them retained?

It does cost a little, though another patch I posted decreases that cost.

Paolo