[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] vmx: last branch recording MSR emulation



On 9/8/07 13:20, "Jan Beulich" <jbeulich@xxxxxxxxxx> wrote:

> .. to have feature parity with SVM.
> 
> This required adding infrastructure to make use of VMX' MSR save/
> restore feature as well as making the MSR intercept bitmap per-VM.

> +    rdmsr(MSR_IA32_VMX_MISC, vmx_msr_low, vmx_msr_high);
> +    /* 16-byte entries in 512-entry steps */
> +    vmx_msr_max_order = ((vmx_msr_low >> 25) & 7) + 13 - PAGE_SHIFT;

It's not clear to me from the reference manual how VMX_MISC[25:27] is
supposed to be interpreted. The manual claims in G.5 that if the value is N
then the maximum number of MSRs is (N+1)*512. Note that the formula is
linear in N, not exponential, so I think turning N into an order variable
(vmx_msr_max_order) is incorrect.

However, the manual then confuses me. In 20.7.2 it says "it is recommended
that [MSR-store] count not exceed 512 bytes". This doesn't tally with the
formula G.5 which would imply that the smallest limit would be 512 *MSRs*,
not 512 bytes. I wonder if 20.7.2 is incorrect?

I'd like to get this latter point clarified (I cc'ed Xin Li at Intel to see
if he has any idea). If the smallest limit is indeed 512 MSRs then I see
little point in interrogating VMX_MISC at all, or including limit-checking
code. We're absolutely nowhere near pushing the limit of 512 MSRS. Also that
limit requires 8kB of MSR data -- we can't really guarantee success of
contiguous multi-page allocations anyway (as you have seen) so actually we'd
like to keep to a 256-MSR limit for that reason.

 -- Keir



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.