[<prev] [next>] [day] [month] [year] [list]
Message-ID: <156792642964.24167.6604165442907782350.tip-bot2@tip-bot2>
Date: Sun, 08 Sep 2019 07:07:09 -0000
From: "tip-bot2 for Jan Stancek" <tip-bot2@...utronix.de>
To: linux-tip-commits@...r.kernel.org
Cc: Jan Stancek <jstancek@...hat.com>,
Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...nel.org>, Borislav Petkov <bp@...en8.de>,
linux-kernel@...r.kernel.org
Subject: [tip: x86/urgent] x86/timer: Force PIT initialization when !X86_FEATURE_ARAT
The following commit has been merged into the x86/urgent branch of tip:
Commit-ID: afa8b475c1aec185a8e106c48b3832e0b88bc2de
Gitweb: https://git.kernel.org/tip/afa8b475c1aec185a8e106c48b3832e0b88bc2de
Author: Jan Stancek <jstancek@...hat.com>
AuthorDate: Sun, 08 Sep 2019 00:50:40 +02:00
Committer: Thomas Gleixner <tglx@...utronix.de>
CommitterDate: Sun, 08 Sep 2019 09:01:15 +02:00
x86/timer: Force PIT initialization when !X86_FEATURE_ARAT
KVM guests with commit c8c4076723da ("x86/timer: Skip PIT initialization on
modern chipsets") applied to guest kernel have been observed to have
unusually higher CPU usage with symptoms of increase in vm exits for HLT
and MSW_WRITE (MSR_IA32_TSCDEADLINE).
This is caused by older QEMUs lacking support for X86_FEATURE_ARAT. lapic
clock retains CLOCK_EVT_FEAT_C3STOP and nohz stays inactive. There's no
usable broadcast device either.
Do the PIT initialization if guest CPU lacks X86_FEATURE_ARAT. On real
hardware it shouldn't matter as ARAT and DEADLINE come together.
Fixes: c8c4076723da ("x86/timer: Skip PIT initialization on modern chipsets")
Signed-off-by: Jan Stancek <jstancek@...hat.com>
Signed-off-by: Thomas Gleixner <tglx@...utronix.de>
---
arch/x86/kernel/apic/apic.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
index dba2828..f91b3ff 100644
--- a/arch/x86/kernel/apic/apic.c
+++ b/arch/x86/kernel/apic/apic.c
@@ -834,6 +834,10 @@ bool __init apic_needs_pit(void)
if (!boot_cpu_has(X86_FEATURE_APIC))
return true;
+ /* Virt guests may lack ARAT, but still have DEADLINE */
+ if (!boot_cpu_has(X86_FEATURE_ARAT))
+ return true;
+
/* Deadline timer is based on TSC so no further PIT action required */
if (boot_cpu_has(X86_FEATURE_TSC_DEADLINE_TIMER))
return false;
Powered by blists - more mailing lists