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

[Xen-devel] RE: Saving/Restoring IA32_TSC_AUX MSR



Hi Jun --

> But it's possible that multiple domains use the pvrdtscp 
> algorithm, and the incarnation number is domain specific.

OK, I see.  The code for writing TSC_AUX is in
__update_vcpu_system_time() not in context switch.

> We also have the issue when adding RDTSCP support for
> HVM guests.

Only if you expose the rdtscp bit via cpuid.  This could
certainly be done but, as I said, is probably pointless.
(The pvrdtscp algorithm uses the instruction whether or
not the rdtscp bit is set in cpuid, since Xen emulates
it -- for PV domains only now -- if the physical machine
doesn't support the instruction.

Dan

> -----Original Message-----
> From: Nakajima, Jun [mailto:jun.nakajima@xxxxxxxxx]
> Sent: Wednesday, December 09, 2009 10:08 AM
> To: Dan Magenheimer; xen-devel@xxxxxxxxxxxxxxxxxxx
> Subject: RE: Saving/Restoring IA32_TSC_AUX MSR
> 
> 
> Dan Magenheimer wrote on Wed, 9 Dec 2009 at 08:59:59:
> 
> > Hi Jun --
> > 
> 
> Dan,
> 
> > Xen doesn't expose the TSC rdtscp bit so assumes that
> > no guests depend on it.  So no save/restore of TSC_AUX
> > is necessary.  Xen could provide support for the TSC
> 
> But it's possible that multiple domains use the pvrdtscp 
> algorithm, and the incarnation number is domain specific. We 
> also have the issue when adding RDTSCP support for HVM guests.
> 
> > rdtscp bit and allow a guest OS to manage TSC_AUX, but
> > the existing use of TSC_AUX by Linux would fail to
> > provide the desired result across migration, so there's
> > little point.  Also the pvrdtscp algorithm now assumes
> > that Xen itself is responsible for updating TSC_AUX
> > whenever a migration (across physical machines) occurs.
> > 
> > The #define for write_rdtscp_aux is from Linux source,
> > so I didn't change the code and define the constant.
> > 
> > Dan
> > 
> >> -----Original Message-----
> >> From: Nakajima, Jun [mailto:jun.nakajima@xxxxxxxxx]
> >> Sent: Wednesday, December 09, 2009 9:42 AM
> >> To: xen-devel@xxxxxxxxxxxxxxxxxxx
> >> Cc: Dan Magenheimer
> >> Subject: Saving/Restoring IA32_TSC_AUX MSR
> >> 
> >> 
> >> I see the code like (in arch/x86/time.c), and wondering how
> >> IA32_TSC_AUX MSR is saved/restored at domain switch time.
> >> 
> >>     if ( (d->arch.tsc_mode ==  TSC_MODE_PVRDTSCP) &&
> >>          boot_cpu_has(X86_FEATURE_RDTSCP) )
> >>         write_rdtscp_aux(d->arch.incarnation);
> >> 
> >> BTW,
> >> 
> >> include/asm-x86/msr.h
> >> #define write_rdtscp_aux(val) wrmsr(0xc0000103, (val), 0)
> >> 
> >> We should write like wrmsr(MSR_TSC_AUX, (val), 0) by adding
> >> +#define MSR_TSC_AUX               0xc0000103 /* Auxiliary TSC */
> >> in include/asm-x86/msr-index.h
> >> 
> >> Thanks,
> >> Jun
> >> ---
> >> Intel Open Source Technology Center
> >> 
> >>
> 
> Jun
> ___
> Intel Open Source Technology Center
> 
> 
> 
>

_______________________________________________
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®.