WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel][PATCH 02/02] VMX: Add HVM RDTSCP support

>>> "Xu, Dongxiao" <dongxiao.xu@xxxxxxxxx> 11.12.09 12:53 >>>
>Add RDTSCP instruction support for HVM VMX guest.
> - RDTSCP is introduced in Nehalem processor on Intel platform. Like RDTSC,
>RDTSCP will return the TSC value, besides, it will return the low 32bit of
>TSC_AUX MSR. Currently Linux kernel will write (node_id << 12 | process_id)
>into that MSR, so that when guest execs RDTSCP, it will also get processor
>information.
> - This instruction is supported for HVM only when the hardware has this
>capability (indicated by cpuid).

This

>--- a/xen/arch/x86/hvm/vmx/vmx.c       Tue Dec 08 14:14:27 2009 +0000
>+++ b/xen/arch/x86/hvm/vmx/vmx.c       Fri Dec 11 19:10:53 2009 +0800
>@@ -138,7 +138,7 @@ static DEFINE_PER_CPU(struct vmx_msr_sta
> 
> static u32 msr_index[VMX_MSR_COUNT] =
> {
>-    MSR_LSTAR, MSR_STAR, MSR_SYSCALL_MASK
>+    MSR_LSTAR, MSR_STAR, MSR_SYSCALL_MASK, MSR_TSC_AUX
> };
> 
> static void vmx_save_host_msrs(void)
>@@ -146,8 +146,11 @@ static void vmx_save_host_msrs(void)
>     struct vmx_msr_state *host_msr_state = &this_cpu(host_msr_state);
>     int i;
> 
>-    for ( i = 0; i < VMX_MSR_COUNT; i++ )
>+    for ( i = 0; i < VMX_MSR_COUNT - 1; i++ )
>         rdmsrl(msr_index[i], host_msr_state->msrs[i]);
>+
>+    if ( cpu_has_rdtscp )
>+        rdmsrl(MSR_TSC_AUX, host_msr_state->msrs[VMX_INDEX_MSR_TSC_AUX]);
> }
> 
> #define WRITE_MSR(address)                                              \

seems to be calling for future problems - if anyone adds an element to
msr_index[] before MSR_TSC_AUX, the logic will silently break. A
BUILD_BUG_ON() and a comment would be the minimum thing to add
in my opinion.

Jan


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