[PATCH v6 0/2] KVM: VMX: Workaround VMX preemption timer erratum
From: Sean Christopherson
Date: Wed Jul 29 2026 - 10:03:54 EST
Due to a widespread Intel erratum (e.g. EMR158), programming the VMX
preemption timer with certain large values may cause the timer to expire
earlier than expected. The recommended workaround is to cap the timer value
to strictly less than 2^25 * CPUID.15H:EBX[31:0] / CPUID.15H:EAX[31:0].
v6:
- Collect reviews. [Chao, Binbin]
- Massage the wording in patch 1's changelog. [Binbin]
- Use an inclusive "max" instead of an exclusive "limit".
- Define a local ARCHITECTURAL_MAX_VALUE instead of open coding it in multiple
locations.
- Don't apply the workaround when running as a guest.
- WARN if the CPUID.0x15 information would result in max value of 0.
v5:
- https://lore.kernel.org/all/20260724234914.987987-1-jmattson@xxxxxxxxxx
- Include Sean's preparatory patch burying VMX preemption timer code under
CONFIG_X86_64=y [Sean]
- Replace div_u64() with direct division (/)
v4: https://lore.kernel.org/all/20260722143024.3938899-1-jmattson@xxxxxxxxxx
v3: https://lore.kernel.org/all/20260722040311.3369898-1-jmattson@xxxxxxxxxx
v2: https://lore.kernel.org/all/20260720231639.1592848-1-jmattson@xxxxxxxxxx
v1: https://lore.kernel.org/all/20260720205230.1457146-1-jmattson@xxxxxxxxxx
Jim Mattson (1):
KVM: VMX: Cap VMX preemption timer to work around Intel erratum
Sean Christopherson (1):
KVM: VMX: Bury all of the VMX preemption timer code under
CONFIG_X86_64=y
arch/x86/kvm/vmx/vmx.c | 158 ++++++++++++++++++++++++++---------------
1 file changed, 102 insertions(+), 56 deletions(-)
base-commit: 3c7d7f908d574277a845423ec32250a8d8df44c8
--
2.55.0.487.gaf234c4eb3-goog