All of lore.kernel.org
 help / color / mirror / Atom feed
From: Haozhong Zhang <haozhong.zhang@intel.com>
To: xen-devel@lists.xen.org
Cc: Haozhong Zhang <haozhong.zhang@intel.com>,
	Kevin Tian <kevin.tian@intel.com>, Wei Liu <wei.liu2@citrix.com>,
	Ian Campbell <ian.campbell@citrix.com>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	Jun Nakajima <jun.nakajima@intel.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Ian Jackson <ian.jackson@eu.citrix.com>,
	Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>,
	Jan Beulich <jbeulich@suse.com>, Keir Fraser <keir@xen.org>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Subject: [PATCH 12/13] vmx: Add a call-back to apply TSC scaling ratio to hardware
Date: Mon, 28 Sep 2015 15:13:57 +0800	[thread overview]
Message-ID: <1443424438-13404-13-git-send-email-haozhong.zhang@intel.com> (raw)
In-Reply-To: <1443424438-13404-1-git-send-email-haozhong.zhang@intel.com>

This patch adds a new call-back setup_tsc_scaling in struct
hvm_function_table to apply the TSC scaling ratio to hardware. For VMX,
it writes the TSC scaling ratio to VMCS field TSC_MULTIPLIER.

Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
---
 xen/arch/x86/hvm/hvm.c        | 1 +
 xen/arch/x86/hvm/svm/svm.c    | 5 +++++
 xen/arch/x86/hvm/vmx/vmx.c    | 8 ++++++++
 xen/include/asm-x86/hvm/hvm.h | 3 +++
 4 files changed, 17 insertions(+)

diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 3522d20..2d8a148 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -376,6 +376,7 @@ void hvm_setup_tsc_scaling(struct vcpu *v)
     }
 
     v->arch.tsc_scaling_ratio = ratio;
+    hvm_funcs.setup_tsc_scaling(v);
 }
 
 void hvm_set_guest_tsc_fixed(struct vcpu *v, u64 guest_tsc, u64 at_tsc)
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 73bc863..d890c1f 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -2236,6 +2236,10 @@ static void svm_invlpg_intercept(unsigned long vaddr)
     svm_asid_g_invlpg(curr, vaddr);
 }
 
+static void svm_setup_tsc_scaling(struct vcpu *v)
+{
+}
+
 static struct hvm_function_table __initdata svm_function_table = {
     .name                 = "SVM",
     .cpu_up_prepare       = svm_cpu_up_prepare,
@@ -2289,6 +2293,7 @@ static struct hvm_function_table __initdata svm_function_table = {
     .max_tsc_scaling_ratio       = MAX_TSC_RATIO,
     .tsc_scaling_ratio_frac_bits = 32,
     .tsc_scaling_ratio_rsvd      = TSC_RATIO_RSVD_BITS,
+    .setup_tsc_scaling           = svm_setup_tsc_scaling,
 };
 
 void svm_vmexit_handler(struct cpu_user_regs *regs)
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 163974d..c4a7b81 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -1100,6 +1100,13 @@ static void vmx_handle_cd(struct vcpu *v, unsigned long value)
     }
 }
 
+static void vmx_setup_tsc_scaling(struct vcpu *v)
+{
+    vmx_vmcs_enter(v);
+    __vmwrite(TSC_MULTIPLIER, v->arch.tsc_scaling_ratio);
+    vmx_vmcs_exit(v);
+}
+
 static void vmx_set_tsc_offset(struct vcpu *v, u64 offset, u64 at_tsc)
 {
     uint64_t host_tsc, guest_tsc;
@@ -1986,6 +1993,7 @@ static struct hvm_function_table __initdata vmx_function_table = {
     .max_tsc_scaling_ratio       = VMX_TSC_MULTIPLIER_MAX,
     .tsc_scaling_ratio_frac_bits = 48,
     .tsc_scaling_ratio_rsvd      = 0x0ULL,
+    .setup_tsc_scaling           = vmx_setup_tsc_scaling,
 };
 
 const struct hvm_function_table * __init start_vmx(void)
diff --git a/xen/include/asm-x86/hvm/hvm.h b/xen/include/asm-x86/hvm/hvm.h
index f63fe93..9f8b6d5 100644
--- a/xen/include/asm-x86/hvm/hvm.h
+++ b/xen/include/asm-x86/hvm/hvm.h
@@ -226,6 +226,9 @@ struct hvm_function_table {
     void (*altp2m_vcpu_update_vmfunc_ve)(struct vcpu *v);
     bool_t (*altp2m_vcpu_emulate_ve)(struct vcpu *v);
     int (*altp2m_vcpu_emulate_vmfunc)(struct cpu_user_regs *regs);
+
+    /* setup TSC scaling */
+    void (*setup_tsc_scaling)(struct vcpu *v);
 };
 
 extern struct hvm_function_table hvm_funcs;
-- 
2.4.8

  parent reply	other threads:[~2015-09-28  7:13 UTC|newest]

Thread overview: 117+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-28  7:13 [PATCH 00/13] Add VMX TSC scaling support Haozhong Zhang
2015-09-28  7:13 ` [PATCH 01/13] x86/time.c: Use system time to calculate elapsed_nsec in tsc_get_info() Haozhong Zhang
2015-10-09  6:51   ` Jan Beulich
2015-10-09 13:41     ` Boris Ostrovsky
2015-10-09 14:00       ` Haozhong Zhang
2015-10-09 15:11         ` Jan Beulich
2015-10-09 16:09           ` Boris Ostrovsky
2015-10-09 16:19             ` Jan Beulich
2015-10-09 16:31               ` Boris Ostrovsky
2015-10-09 16:51                 ` Haozhong Zhang
2015-10-09 18:59                   ` Boris Ostrovsky
2015-10-09 14:39       ` Jan Beulich
2015-10-09 15:37         ` Boris Ostrovsky
2015-10-09 16:39           ` Haozhong Zhang
2015-10-09 16:44             ` Boris Ostrovsky
2015-10-09 14:35     ` Haozhong Zhang
2015-10-09 14:43       ` Jan Beulich
2015-10-09 15:56         ` Boris Ostrovsky
2015-10-14  2:45     ` Haozhong Zhang
2015-10-14  9:40       ` Jan Beulich
2015-10-14 10:00         ` Haozhong Zhang
2015-10-14 10:20           ` Jan Beulich
2015-10-14 10:24             ` Haozhong Zhang
2015-09-28  7:13 ` [PATCH 02/13] x86/time.c: Get the correct guest TSC rate " Haozhong Zhang
2015-09-28  7:13 ` [PATCH 03/13] x86/hvm: Collect information of TSC scaling ratio Haozhong Zhang
2015-10-22 12:53   ` Jan Beulich
2015-10-22 14:40     ` Haozhong Zhang
2015-10-22 14:51       ` Jan Beulich
2015-10-22 15:57         ` Haozhong Zhang
2015-09-28  7:13 ` [PATCH 04/13] x86/hvm: Setup " Haozhong Zhang
2015-10-22 13:13   ` Jan Beulich
2015-10-22 15:55     ` Haozhong Zhang
2015-10-22 16:05       ` Jan Beulich
2015-10-22 16:39         ` Haozhong Zhang
2015-10-23  7:44     ` Haozhong Zhang
2015-10-23  7:59       ` Jan Beulich
2015-10-23  8:18         ` Haozhong Zhang
2015-10-23  8:31           ` Jan Beulich
2015-10-23  8:40             ` Haozhong Zhang
2015-10-23  9:18               ` Jan Beulich
2015-09-28  7:13 ` [PATCH 05/13] x86/hvm: Replace architecture TSC scaling by a common function Haozhong Zhang
2015-10-22 13:52   ` Jan Beulich
2015-10-23  0:49     ` Haozhong Zhang
2015-09-28  7:13 ` [PATCH 06/13] x86/hvm: Scale host TSC when setting/getting guest TSC Haozhong Zhang
2015-10-22 14:17   ` Jan Beulich
2015-10-22 15:44     ` Boris Ostrovsky
2015-10-22 16:23       ` Haozhong Zhang
2015-10-27 20:16       ` Aravind Gopalakrishnan
2015-10-28  1:51         ` Haozhong Zhang
2015-11-09  7:43         ` Haozhong Zhang
2015-11-12 13:50           ` George Dunlap
2015-10-22 16:03     ` Haozhong Zhang
2015-10-27  1:54     ` Haozhong Zhang
2015-10-27  8:15       ` Jan Beulich
2015-10-27  8:25         ` Haozhong Zhang
2015-10-27  8:44     ` Haozhong Zhang
2015-10-27 13:10       ` Boris Ostrovsky
2015-10-27 13:55         ` Boris Ostrovsky
2015-10-27 16:13           ` haozhong.zhang
2015-10-27 16:13         ` haozhong.zhang
2015-09-28  7:13 ` [PATCH 07/13] x86/hvm: Move saving/loading vcpu's TSC to common code Haozhong Zhang
2015-10-22 14:54   ` Jan Beulich
2015-09-28  7:13 ` [PATCH 08/13] x86/hvm: Detect TSC scaling through hvm_funcs in tsc_set_info() Haozhong Zhang
2015-10-22 15:01   ` Jan Beulich
2015-09-28  7:13 ` [PATCH 09/13] x86/time.c: Scale host TSC in pvclock properly Haozhong Zhang
2015-09-28 16:36   ` Boris Ostrovsky
2015-09-29  0:19     ` Haozhong Zhang
2015-10-22 15:50   ` Boris Ostrovsky
2015-10-22 16:44     ` Haozhong Zhang
2015-10-22 19:15       ` Boris Ostrovsky
2015-09-28  7:13 ` [PATCH 10/13] vmx: Detect and initialize VMX RDTSC(P) scaling Haozhong Zhang
2015-10-27 13:19   ` Jan Beulich
2015-10-27 16:17     ` Haozhong Zhang
2015-09-28  7:13 ` [PATCH 11/13] vmx: Use scaled host TSC to calculate TSC offset Haozhong Zhang
2015-10-22 15:55   ` Boris Ostrovsky
2015-10-22 17:12     ` Haozhong Zhang
2015-10-22 19:19       ` Boris Ostrovsky
2015-10-23  0:52         ` Haozhong Zhang
2015-10-27 13:29   ` Jan Beulich
2015-10-27 16:21     ` Haozhong Zhang
2015-09-28  7:13 ` Haozhong Zhang [this message]
2015-09-28 16:02   ` [PATCH 12/13] vmx: Add a call-back to apply TSC scaling ratio to hardware Boris Ostrovsky
2015-09-29  1:07     ` Haozhong Zhang
2015-09-29  9:33       ` Andrew Cooper
2015-09-29 10:02         ` Haozhong Zhang
2015-09-29 10:25           ` Andrew Cooper
2015-09-29 13:59             ` Haozhong Zhang
2015-10-27 13:33   ` Jan Beulich
2015-10-28  2:41     ` Haozhong Zhang
2015-09-28  7:13 ` [PATCH 13/13] tools/libxl: Add 'vtsc_khz' option to set guest TSC rate Haozhong Zhang
2015-09-28 11:47   ` Julien Grall
2015-09-28 12:11     ` Haozhong Zhang
2015-09-28 14:19   ` Wei Liu
2015-09-29  0:40     ` Haozhong Zhang
2015-09-29  9:20       ` Wei Liu
2015-09-29  9:50         ` Haozhong Zhang
2015-09-29 10:24           ` Julien Grall
2015-09-29 10:07       ` Ian Campbell
2015-09-29 10:33         ` Wei Liu
2015-09-29 12:57         ` Haozhong Zhang
2015-09-29 10:04   ` Ian Campbell
2015-09-29 10:13     ` Haozhong Zhang
2015-09-29 10:24       ` Andrew Cooper
2015-09-29 10:28         ` Ian Campbell
2015-09-29 10:31           ` Andrew Cooper
2015-09-29 13:53           ` Haozhong Zhang
2015-09-29 13:56             ` Andrew Cooper
2015-09-29 14:01               ` Haozhong Zhang
2015-09-29 14:37                 ` Ian Campbell
2015-09-29 15:16                   ` Haozhong Zhang
2015-09-28 10:51 ` [PATCH 00/13] Add VMX TSC scaling support Andrew Cooper
2015-09-28 13:48   ` Boris Ostrovsky
2015-11-22 17:54 ` Haozhong Zhang
2015-11-23 15:37   ` Boris Ostrovsky
2015-11-24 13:05     ` Haozhong Zhang
2015-11-24 14:19       ` Boris Ostrovsky
2015-11-24 14:25       ` Haozhong Zhang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1443424438-13404-13-git-send-email-haozhong.zhang@intel.com \
    --to=haozhong.zhang@intel.com \
    --cc=Aravind.Gopalakrishnan@amd.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=ian.campbell@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=jbeulich@suse.com \
    --cc=jun.nakajima@intel.com \
    --cc=keir@xen.org \
    --cc=kevin.tian@intel.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=suravee.suthikulpanit@amd.com \
    --cc=wei.liu2@citrix.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.