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

Re: [Xen-devel] [PATCH 03/13] x86/hvm: Collect information of TSC scaling ratio



On Thu, Oct 22, 2015 at 06:53:27AM -0600, Jan Beulich wrote:
> >>> On 28.09.15 at 09:13, <haozhong.zhang@xxxxxxxxx> wrote:
> > Both VMX TSC scaling and SVM TSC ratio use the 64-bit TSC scaling ratio,
> > but the number of fractional bits of the ratio is different between VMX
> > and SVM. This patch makes the architecture code to collect the number of
> > fractional bits and other related information into fields of struct
> > hvm_function_table so that they can be used in the common code.
> > 
> > Signed-off-by: Haozhong Zhang <haozhong.zhang@xxxxxxxxx>
> > ---
> >  xen/arch/x86/hvm/svm/svm.c        |  9 +++++++++
> >  xen/arch/x86/hvm/vmx/vmx.c        |  2 ++
> >  xen/include/asm-x86/hvm/hvm.h     | 13 +++++++++++++
> >  xen/include/asm-x86/hvm/svm/svm.h |  1 +
> >  4 files changed, 25 insertions(+)
> > 
> > diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
> > index 8de41fa..94b9618 100644
> > --- a/xen/arch/x86/hvm/svm/svm.c
> > +++ b/xen/arch/x86/hvm/svm/svm.c
> > @@ -1428,6 +1428,9 @@ const struct hvm_function_table * __init 
> > start_svm(void)
> >      if ( !cpu_has_svm_nrips )
> >          clear_bit(SVM_FEATURE_DECODEASSISTS, &svm_feature_flags);
> >  
> > +    if ( cpu_has_tsc_ratio )
> > +        svm_function_table.tsc_scaling_supported = 1;
> > +
> >  #define P(p,s) if ( p ) { printk(" - %s\n", s); printed = 1; }
> >      P(cpu_has_svm_npt, "Nested Page Tables (NPT)");
> >      P(cpu_has_svm_lbrv, "Last Branch Record (LBR) Virtualisation");
> > @@ -2283,6 +2286,12 @@ static struct hvm_function_table __initdata 
> > svm_function_table = {
> >      .nhvm_vmcx_hap_enabled = nsvm_vmcb_hap_enabled,
> >      .nhvm_intr_blocked = nsvm_intr_blocked,
> >      .nhvm_hap_walk_L1_p2m = nsvm_hap_walk_L1_p2m,
> > +
> > +    .tsc_scaling_supported       = 0,
> 
> This is not needed.
> 
> > --- a/xen/arch/x86/hvm/vmx/vmx.c
> > +++ b/xen/arch/x86/hvm/vmx/vmx.c
> > @@ -1968,6 +1968,8 @@ static struct hvm_function_table __initdata 
> > vmx_function_table = {
> >      .altp2m_vcpu_update_vmfunc_ve = vmx_vcpu_update_vmfunc_ve,
> >      .altp2m_vcpu_emulate_ve = vmx_vcpu_emulate_ve,
> >      .altp2m_vcpu_emulate_vmfunc = vmx_vcpu_emulate_vmfunc,
> > +    /* support for VMX RDTSC(P) scaling */
> > +    .tsc_scaling_supported       = 0,
> 
> Same here.
>

I'll remove them in the next version.

> > --- a/xen/include/asm-x86/hvm/svm/svm.h
> > +++ b/xen/include/asm-x86/hvm/svm/svm.h
> > @@ -96,6 +96,7 @@ extern u32 svm_feature_flags;
> >  
> >  /* TSC rate */
> >  #define DEFAULT_TSC_RATIO       0x0000000100000000ULL
> > +#define MAX_TSC_RATIO           0x000000ffffffffffULL
> >  #define TSC_RATIO_RSVD_BITS     0xffffff0000000000ULL
> 
> How about 
> 
> #define MAX_TSC_RATIO           (~TSC_RATIO_RSVD_BITS)
>

Yes.

> ? (But of course it's not really clear in which way this is to
> be used as "maximum" without seeing the code using it. I.e.
> it's not clear whether you don't really just mean to specify
> all the valid bits in the MSR.)
>

The reserved bits are used to calculate the maximum TSC ratio which is
used in hvm_setup_tsc_scaling() in patch 4 to check the whether a TSC
scaling ratio is legal.

> Jan
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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