[Devel] [PATCH VHS7 00/11] RFC: fix L2 hang on SVM with fresh L1 kernels

Alexander Mikhalitsyn alexander.mikhalitsyn at virtuozzo.com
Thu Jun 23 12:55:12 MSK 2022


We noticed, that on new AMD Rome and AMD Milan processors L2
VM getting hang.

We have checked that this happens for both:
- AMD EPYC 7261 (Rome)
- AMD EPYC 7443P (Milan)

but Intel (VMX) is not affected.

Another key observation here is that L2 hang happens not in all
cases, but only when L1 kernel is "sufficiently new".

Example:

VHS 7 (host) -> CentOS 8 (L1) -> CentOS 8 (L2)    HANG
VHS 7 (host) -> CentOS 7 (L1) -> CentOS 7 (L2)    WORKS
CentOS 8 (host) -> CentOS 8 (L1) -> CentOS 8 (L2) WORKS

After bisecting L1 kernel it was found that problem is introduced by commit:
c9d40913ac5 ("KVM: x86: enable event window in inject_pending_event")

I've tried to revert this commit for L1 kernel and it started work!

Of course, this is not a solution, and I decided to port this commit for L0
kernel (which is RHEL 7 based for VHS 7) with hope that it helps.

This is first attempt to port desired commit. I've tried to take as few
commits as possible.

https://jira.sw.ru/browse/PSBM-139278

Liran Alon (1):
  KVM: nVMX: Require immediate-exit when event reinjected to L2 and L1
    event pending

Paolo Bonzini (8):
  KVM: nSVM: implement check_nested_events for interrupts
  KVM: SVM: introduce nested_run_pending
  KVM: nSVM: Report NMIs as allowed when in L2 and Exit-on-NMI is set
  KVM: SVM: Split out architectural interrupt/NMI/SMI blocking checks
  KVM: x86: replace is_smm checks with kvm_x86_ops.smi_allowed
  KVM: x86: Replace late check_nested_events() hack with more precise
    fix
  KVM: x86: track manually whether an event has been injected
  KVM: x86: enable event window in inject_pending_event

Sean Christopherson (1):
  KVM: nVMX: Properly handle userspace interrupt window request

ZhuangYanying (1):
  KVM: x86: Fix nmi injection failure when vcpu got blocked

 arch/x86/include/asm/kvm_host.h |  10 +-
 arch/x86/kvm/mmu.c              |   2 +-
 arch/x86/kvm/svm.c              | 155 +++++++++++++++++++++----------
 arch/x86/kvm/vmx.c              |  61 +++++++------
 arch/x86/kvm/x86.c              | 157 ++++++++++++++++++--------------
 5 files changed, 238 insertions(+), 147 deletions(-)

-- 
2.36.1



More information about the Devel mailing list