From: Sean Christopherson <sean.j.christopherson@intel.com>
To: "Paolo Bonzini" <pbonzini@redhat.com>,
"Radim Krčmář" <rkrcmar@redhat.com>
Cc: kvm@vger.kernel.org,
Sean Christopherson <sean.j.christopherson@intel.com>,
Liran Alon <liran.alon@oracle.com>,
Wanpeng Li <wanpengli@tencent.com>
Subject: [PATCH 4/7] KVM: lapic: Allow user to override auto-tuning of timer advancement
Date: Fri, 12 Apr 2019 13:18:31 -0700 [thread overview]
Message-ID: <20190412201834.10831-5-sean.j.christopherson@intel.com> (raw)
In-Reply-To: <20190412201834.10831-1-sean.j.christopherson@intel.com>
Disable auto-tuning the timer advancement if the user specifies an
explicit value via the module param. Aside from the obvious override
capability, this also allows the KVM admin to set the advancement
beyond the internally-capped max of 5000ns.
Cc: Wanpeng Li <wanpengli@tencent.com>
Fixes: 3b8a5df6c4dc6 ("KVM: LAPIC: Tune lapic_timer_advance_ns automatically")
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
---
arch/x86/kvm/lapic.c | 2 ++
arch/x86/kvm/lapic.h | 2 ++
arch/x86/kvm/x86.c | 2 +-
3 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
index 70a0acd98e9e..c43cd26f040b 100644
--- a/arch/x86/kvm/lapic.c
+++ b/arch/x86/kvm/lapic.c
@@ -2286,6 +2286,8 @@ int kvm_create_lapic(struct kvm_vcpu *vcpu, u32 timer_advance_ns)
HRTIMER_MODE_ABS_PINNED);
apic->lapic_timer.timer.function = apic_timer_fn;
apic->lapic_timer.timer_advance_ns = timer_advance_ns;
+ if (timer_advance_ns != LAPIC_TIMER_ADVANCE_DEFAULT_NS)
+ apic->lapic_timer.timer_advance_adjust_done = true;
/*
* APIC is created enabled. This will prevent kvm_lapic_set_base from
diff --git a/arch/x86/kvm/lapic.h b/arch/x86/kvm/lapic.h
index 3e97f8a68967..c7233629c05b 100644
--- a/arch/x86/kvm/lapic.h
+++ b/arch/x86/kvm/lapic.h
@@ -16,6 +16,8 @@
#define APIC_BUS_CYCLE_NS 1
#define APIC_BUS_FREQUENCY (1000000000ULL / APIC_BUS_CYCLE_NS)
+#define LAPIC_TIMER_ADVANCE_DEFAULT_NS 1000
+
enum lapic_mode {
LAPIC_MODE_DISABLED = 0,
LAPIC_MODE_INVALID = X2APIC_ENABLE,
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index b303a21a2bc2..709a8bf5ae0e 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -137,7 +137,7 @@ static u32 __read_mostly tsc_tolerance_ppm = 250;
module_param(tsc_tolerance_ppm, uint, S_IRUGO | S_IWUSR);
/* lapic timer advance (tscdeadline mode only) in nanoseconds */
-static u32 __read_mostly lapic_timer_advance_ns = 1000;
+static u32 __read_mostly lapic_timer_advance_ns = LAPIC_TIMER_ADVANCE_DEFAULT_NS;
module_param(lapic_timer_advance_ns, uint, S_IRUGO | S_IWUSR);
static bool __read_mostly vector_hashing = true;
--
2.21.0
next prev parent reply other threads:[~2019-04-12 20:18 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-12 20:18 [PATCH 0/7] KVM: lapic: Fix a variety of timer adv issues Sean Christopherson
2019-04-12 20:18 ` [PATCH 1/7] KVM: lapic: Hard cap the auto-calculated timer advancement Sean Christopherson
2019-04-14 10:22 ` Liran Alon
2019-04-12 20:18 ` [PATCH 2/7] KVM: lapic: Delay 1ns at a time when waiting for timer to "expire" Sean Christopherson
2019-04-14 11:25 ` Liran Alon
2019-04-15 16:11 ` Sean Christopherson
2019-04-15 17:06 ` Liran Alon
2019-04-16 11:02 ` Paolo Bonzini
2019-04-16 11:04 ` Liran Alon
2019-04-16 11:09 ` Paolo Bonzini
2019-04-12 20:18 ` [PATCH 3/7] KVM: lapic: Track lapic timer advance per vCPU Sean Christopherson
2019-04-14 11:29 ` Liran Alon
2019-04-12 20:18 ` Sean Christopherson [this message]
2019-04-14 11:35 ` [PATCH 4/7] KVM: lapic: Allow user to override auto-tuning of timer advancement Liran Alon
2019-04-15 16:23 ` Sean Christopherson
2019-04-15 17:10 ` Liran Alon
2019-04-12 20:18 ` [PATCH 5/7] KVM: lapic: Busy wait for timer to expire when using hv_timer Sean Christopherson
2019-04-14 11:47 ` Liran Alon
2019-04-12 20:18 ` [PATCH 6/7] KVM: lapic: Clean up the code for handling of a pre-expired hv_timer Sean Christopherson
2019-04-14 12:15 ` Liran Alon
2019-04-15 16:32 ` Sean Christopherson
2019-04-15 17:25 ` Liran Alon
2019-04-16 16:39 ` Sean Christopherson
2019-04-16 16:48 ` Liran Alon
2019-04-16 17:27 ` Sean Christopherson
2019-04-16 17:27 ` Liran Alon
2019-04-16 11:14 ` Paolo Bonzini
2019-04-12 20:18 ` [PATCH 7/7] KVM: VMX: Skip delta_tsc shift-and-divide if the dividend is zero Sean Christopherson
2019-04-14 12:21 ` Liran Alon
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=20190412201834.10831-5-sean.j.christopherson@intel.com \
--to=sean.j.christopherson@intel.com \
--cc=kvm@vger.kernel.org \
--cc=liran.alon@oracle.com \
--cc=pbonzini@redhat.com \
--cc=rkrcmar@redhat.com \
--cc=wanpengli@tencent.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox