Messages in this thread | | | Date | Mon, 28 Sep 2015 20:28:57 -0700 | Subject | Re: [PATCH 01/12] KVM: x86: Collect information for setting TSC scaling ratio | From | Eric Northup <> |
| |
On Sun, Sep 27, 2015 at 10:38 PM, Haozhong Zhang <haozhong.zhang@intel.com> wrote: > > The number of bits of the fractional part of the 64-bit TSC scaling > ratio in VMX and SVM is different. This patch makes the architecture > code to collect the number of fractional bits and other related > information into variables that can be accessed in the common code. > > Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com> > --- > arch/x86/include/asm/kvm_host.h | 8 ++++++++ > arch/x86/kvm/svm.c | 5 +++++ > arch/x86/kvm/x86.c | 8 ++++++++ > 3 files changed, 21 insertions(+) > > diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h > index 2beee03..5b9b86e 100644 > --- a/arch/x86/include/asm/kvm_host.h > +++ b/arch/x86/include/asm/kvm_host.h > @@ -965,6 +965,14 @@ extern bool kvm_has_tsc_control; > extern u32 kvm_min_guest_tsc_khz; > /* maximum supported tsc_khz for guests */ > extern u32 kvm_max_guest_tsc_khz; > +/* number of bits of the fractional part of the TSC scaling ratio */ > +extern u8 kvm_tsc_scaling_ratio_frac_bits; > +/* reserved bits of TSC scaling ratio (SBZ) */ > +extern u64 kvm_tsc_scaling_ratio_rsvd; > +/* default TSC scaling ratio (= 1.0) */ > +extern u64 kvm_default_tsc_scaling_ratio; > +/* maximum allowed value of TSC scaling ratio */ > +extern u64 kvm_max_tsc_scaling_ratio;
Do we need all 3 of kvm_max_guest_tsc_khz, kvm_max_tsc_scaling_ratio, and kvm_tsc_scaling_ratio_rsvd (since only SVM has reserved bits - and just for complaining if the high bits are set, which can already be expressed by max_tsc_scaling ratio)
kvm_max_tsc_scaling_ratio seems to be write-only.
> > enum emulation_result { > EMULATE_DONE, /* no further processing */ > diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c > index 94b7d15..eff7db7 100644 > --- a/arch/x86/kvm/svm.c > +++ b/arch/x86/kvm/svm.c > @@ -963,7 +963,12 @@ static __init int svm_hardware_setup(void) > max = min(0x7fffffffULL, __scale_tsc(tsc_khz, TSC_RATIO_MAX)); > > kvm_max_guest_tsc_khz = max; > + > + kvm_max_tsc_scaling_ratio = TSC_RATIO_MAX; > + kvm_tsc_scaling_ratio_frac_bits = 32; > + kvm_tsc_scaling_ratio_rsvd = TSC_RATIO_RSVD; > } > + kvm_default_tsc_scaling_ratio = TSC_RATIO_DEFAULT; > > if (nested) { > printk(KERN_INFO "kvm: Nested Virtualization enabled\n"); > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index 991466b..f888225 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -106,6 +106,14 @@ bool kvm_has_tsc_control; > EXPORT_SYMBOL_GPL(kvm_has_tsc_control); > u32 kvm_max_guest_tsc_khz; > EXPORT_SYMBOL_GPL(kvm_max_guest_tsc_khz); > +u8 kvm_tsc_scaling_ratio_frac_bits; > +EXPORT_SYMBOL_GPL(kvm_tsc_scaling_ratio_frac_bits); > +u64 kvm_tsc_scaling_ratio_rsvd; > +EXPORT_SYMBOL_GPL(kvm_tsc_scaling_ratio_rsvd); > +u64 kvm_default_tsc_scaling_ratio; > +EXPORT_SYMBOL_GPL(kvm_default_tsc_scaling_ratio); > +u64 kvm_max_tsc_scaling_ratio; > +EXPORT_SYMBOL_GPL(kvm_max_tsc_scaling_ratio); > > /* tsc tolerance in parts per million - default to 1/2 of the NTP threshold */ > static u32 tsc_tolerance_ppm = 250; > -- > 2.4.8 > > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html
| |