[PATCH v7 0/2] KVM: VMX: Workaround VMX preemption timer erratum
Sean Christopherson <[email protected]>
| Newsgroups | org.kernel.vger.kvm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
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]. v7: - Ensure the timer doesn't exceed the architectural max. [Sashiko] v6: - https://lore.kernel.org/all/[email protected] - 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/[email protected] - 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/[email protected] v3: https://lore.kernel.org/all/[email protected] v2: https://lore.kernel.org/all/[email protected] v1: https://lore.kernel.org/all/[email protected] 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.508.g3f0d502094-goog