Messages in this thread | | | Subject | Re: [PATCH] KVM: nVMX: Handle split-lock #AC exceptions that happen in L2 | From | Xiaoyao Li <> | Date | Wed, 23 Jun 2021 10:43:31 +0800 |
| |
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@intel.com> > Signed-off-by: Sean Christopherson <seanjc@google.com> > --- > 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;
| |