Re: [PATCH] KVM: nVMX: Handle split-lock #AC exceptions that happen in L2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 6/23/2021 1:22 AM, Sean Christopherson wrote:
Mark #ACs that won't be reinjected to the guest as wanted by L0 so that
KVM handles split-lock #AC from L2 instead of forwarding the exception to
L1.  Split-lock #AC isn't yet virtualized, i.e. L1 will treat it like a
regular #AC and do the wrong thing, e.g. reinject it into L2.

Fixes: e6f8b6c12f03 ("KVM: VMX: Extend VMXs #AC interceptor to handle split lock #AC in guest")
Cc: Xiaoyao Li <xiaoyao.li@xxxxxxxxx>
Signed-off-by: Sean Christopherson <seanjc@xxxxxxxxxx>
---
  arch/x86/kvm/vmx/nested.c | 3 +++
  arch/x86/kvm/vmx/vmcs.h   | 5 +++++
  arch/x86/kvm/vmx/vmx.c    | 4 ++--
  arch/x86/kvm/vmx/vmx.h    | 1 +
  4 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c
index 183fd9d62fc5..fa3f50f0a3fa 100644
--- a/arch/x86/kvm/vmx/nested.c
+++ b/arch/x86/kvm/vmx/nested.c
@@ -5833,6 +5833,9 @@ static bool nested_vmx_l0_wants_exit(struct kvm_vcpu *vcpu,
  		else if (is_breakpoint(intr_info) &&
  			 vcpu->guest_debug & KVM_GUESTDBG_USE_SW_BP)
  			return true;
+		else if (is_alignment_check(intr_info) &&
+			 !vmx_guest_inject_ac(vcpu))
+			return true;

Why choose to check in nested_vmx_l0_wants_exit, not in nested_vmx_l1_wants_exit()?

  		return false;
  	case EXIT_REASON_EXTERNAL_INTERRUPT:
  		return true;



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux