[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v4 00/10] Add VMX TSC scaling support
This patchset adds support for VMX TSC scaling feature which is available on Intel Skylake Server CPU. The specification of VMX TSC scaling can be found at http://www.intel.com/content/www/us/en/processors/timestamp-counter-scaling-virtualization-white-paper.html VMX TSC scaling allows guest TSC which is read by guest rdtsc(p) instructions increases in a rate that is customized by the hypervisor and can be different than the host TSC frequency. Basically, VMX TSC scaling adds a 64-bit field called TSC multiplier in VMCS so that, if VMX TSC scaling is enabled, TSC read by guest rdtsc(p) instructions will be calculated by the following formula: guest EDX:EAX = (Host TSC * TSC multiplier) >> 48 + VMX TSC Offset where, Host TSC = Host MSR_IA32_TSC + Host MSR_IA32_TSC_ADJUST. If the destination host supports VMX TSC scaling, this patchset allows guest programs in a HVM container in the default TSC mode or PVRDTSCP (native_paravirt) TSC mode to observe the same TSC frequency across the migration. Changes in v4: * v3 patch 1&2 have been committed so they are not included in v4. * v3 patch 11 "x86/hvm: Detect TSC scaling through hvm_funcs" is merged early into v4 patch 4 "x86/hvm: Collect information of TSC scaling ratio". * v4 patch 1 - 8 correspond to v3 patch 3 - 10. v4 patch 9 - 10 correspond to v3 patch 12 - 13. * Other changes are logged in each patch respectively. Changes in v3: * v2 patch 1&2 have been merged so they do not appear in v3. * Patch 1 - 6 correspond to v2 patch 3 - 8. Patch 7 is new. Patch 8 - 13 correspond to v2 patch 9 - 14. * Other changes are logged in each patch respectively. Changes in v2: * Remove unnecessary v1 patch 1&13. * Add and move all bug-fix patches to the beginning of this series. (Patch 1 - 6) * Update changes in tsc_set_info() and tsc_get_info() to make both functions consistent with each other. (Patch 2 - 4) * Move a part of scaling logic out of [vmx|svm]_set_tsc_offset(). (Patch 7) * Remove redundant hvm_funcs.tsc_scaling_ratio_rsvd. (Patch 8) * Reimplement functions that calculate TSC ratio and scale TSC. (Patch 9&10) * Merge setting VMX TSC multiplier into patch 13. * Move initialing tsc_scaling_ratio in VMX ahead to vmx_vcpu_initialise() so as to make construct_vmcs() naturally use this field instead of a constant. (Patch 13) * Update documents related to tsc_mode. * Other code cleanup and style fixes. Haozhong Zhang (10): x86/hvm: Scale host TSC when setting/getting guest TSC x86/time.c: Scale host TSC in pvclock properly svm: Remove redundant TSC scaling in svm_set_tsc_offset() x86/hvm: Collect information of TSC scaling ratio x86: Add functions for 64-bit integer arithmetic x86/hvm: Setup TSC scaling ratio x86/hvm: Replace architecture TSC scaling by a common function x86/hvm: Move saving/loading vcpu's TSC to common code vmx: Add VMX RDTSC(P) scaling support docs: Add descriptions of TSC scaling in xl.cfg and tscmode.txt docs/man/xl.cfg.pod.5 | 14 +++++++- docs/misc/tscmode.txt | 21 ++++++++++++ xen/arch/x86/hvm/hvm.c | 69 ++++++++++++++++++++++++++++++++------ xen/arch/x86/hvm/svm/svm.c | 36 +++++++++----------- xen/arch/x86/hvm/vmx/vmcs.c | 12 +++++-- xen/arch/x86/hvm/vmx/vmx.c | 25 +++++++++++--- xen/arch/x86/time.c | 38 ++++++++++++++++----- xen/include/asm-x86/hvm/hvm.h | 20 +++++++++++ xen/include/asm-x86/hvm/svm/svm.h | 3 -- xen/include/asm-x86/hvm/vcpu.h | 2 ++ xen/include/asm-x86/hvm/vmx/vmcs.h | 7 ++++ xen/include/asm-x86/math64.h | 47 ++++++++++++++++++++++++++ 12 files changed, 242 insertions(+), 52 deletions(-) create mode 100644 xen/include/asm-x86/math64.h -- 2.7.0 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |