Commit afa8b475 authored by Jan Stancek's avatar Jan Stancek Committed by Thomas Gleixner

x86/timer: Force PIT initialization when !X86_FEATURE_ARAT

KVM guests with commit c8c40767 ("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: c8c40767 ("x86/timer: Skip PIT initialization on modern chipsets")
Signed-off-by: default avatarJan Stancek <jstancek@redhat.com>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent e16c2983
...@@ -834,6 +834,10 @@ bool __init apic_needs_pit(void) ...@@ -834,6 +834,10 @@ bool __init apic_needs_pit(void)
if (!boot_cpu_has(X86_FEATURE_APIC)) if (!boot_cpu_has(X86_FEATURE_APIC))
return true; 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 */ /* Deadline timer is based on TSC so no further PIT action required */
if (boot_cpu_has(X86_FEATURE_TSC_DEADLINE_TIMER)) if (boot_cpu_has(X86_FEATURE_TSC_DEADLINE_TIMER))
return false; return false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment