Re: [PATCH 8/8] KVM: nSVM: read only changed fields of the nested guest data area

From: Maxim Levitsky
Date: Thu Aug 20 2020 - 07:34:27 EST


On Thu, 2020-08-20 at 12:01 +0200, Paolo Bonzini wrote:
> On 20/08/20 11:13, Maxim Levitsky wrote:
> > + u32 clean = nested_vmcb->control.clean;
> > +
> > + if (svm->nested.vmcb_gpa != vmcb_gpa) {
> > + svm->nested.vmcb_gpa = vmcb_gpa;
> > + clean = 0;
> > + }
>
> You probably should set clean to 0 also if the guest doesn't have the
> VMCBCLEAN feature (so, you first need an extra patch to add the
> VMCBCLEAN feature to cpufeatures.h). It's probably best to cache the
> guest vmcbclean in struct vcpu_svm, too.

Right, I totally forgot about this one.

One thing why I made this patch optional, is that I can instead drop it,
and not 'read back' the saved area on vmexit, this will probably be faster
that what this optimization does. What do you think? Is this patch worth it?
(I submitted it because I already implemented this and wanted to hear opinion
on this).

Best regards,
Maxim Levitsky

>
> Paolo
>