x86/timer: Force PIT initialization when !X86_FEATURE_ARAT
authorJan Stancek <jstancek@redhat.com>
Sat, 7 Sep 2019 22:50:40 +0000 (00:50 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Sun, 8 Sep 2019 07:01:15 +0000 (09:01 +0200)
commitafa8b475c1aec185a8e106c48b3832e0b88bc2de
tree31c65e7de8fcd3604497fcd8bf93b65cc3ed6cf7
parente16c2983fba0fa6763e43ad10916be35e3d8dc05
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@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/kernel/apic/apic.c