Re: [PATCH 3/3] KVM: SVM: enable LBRV virtualization

Joerg Roedel
2008-02-13T10:03:54Z

On Wed, Feb 13, 2008 at 11:50:58AM +0200, Avi Kivity wrote:
> Joerg Roedel wrote:
> >@@ -1224,6 +1261,15 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, unsigned ecx, u64 data)
> > if (data != 0)
> > goto unhandled;
> > break;
> >+ case MSR_IA32_DEBUGCTLMSR:
> >+ svm->vmcb->save.dbgctl = data;
> >+ if (!svm_has(SVM_FEATURE_LBRV))
> >+ break;
> >+ if (data & (1ULL<<0))
> >+ svm_enable_lbrv(svm);
> >+ else
> >+ svm_disable_lbrv(svm);
> >+ break;
> > default:
> > unhandled:
> > return kvm_set_msr_common(vcpu, ecx, data);
> >
>
> This still has the same issue as the previous patchset: if the guest enables some other bit
> in MSR_IA32_DEBUCTLMSR, we silently ignore it. We should either pr_unimpl() on such bits or
> not handle them (ultimately injecting a #GP).

Thats not true. The patch saves the MSR value in vmcb->save.dbgctl. This
value is returned on reads of that MSR. So no bit is ignored. This value
in the VMCB is also used as the guests copy of that MSR if LBR
virtualization is enabled. But another issue, I should ensure the guest
does not set reserved bits in that MSR.

> Also, I'd like a simple patch for 2.6.25 to add support for Windows x86 on AMD. So if the
> first patch in the series can add support for the bits that Windows sets in
> MSR_IA32_DEBUGCTLMSR (I imagine it just writes zero?) then I can queue that for 2.6.25 and
> the rest for 2.6.26.

Ok, I will work that into the patchset.

Joerg

--
| AMD Saxony Limited Liability Company & Co. KG
Operating | Wilschdorfer Landstr. 101, 01109 Dresden, Germany
System | Register Court Dresden: HRA 4896
Research | General Partner authorized to represent:
Center | AMD Saxony LLC (Wilmington, Delaware, US)
| General Manager of AMD Saxony LLC: Dr. Hans-R. Deppe, Thomas McCoy