From: Sean Christopherson <sean.j.christopherson@intel.com>
To: Jim Mattson <jmattson@google.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
Vitaly Kuznetsov <vkuznets@redhat.com>,
Wanpeng Li <wanpengli@tencent.com>,
Joerg Roedel <joro@8bytes.org>, kvm list <kvm@vger.kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
Oliver Upton <oupton@google.com>, Peter Shier <pshier@google.com>
Subject: Re: [PATCH 12/13] KVM: x86: Replace late check_nested_events() hack with more precise fix
Date: Tue, 28 Apr 2020 15:20:10 -0700 [thread overview]
Message-ID: <20200428222010.GN12735@linux.intel.com> (raw)
In-Reply-To: <CALMp9eTiGdYPpejAOLNz7zzqP1wPXb_zSL02F27VMHeHGzANJg@mail.gmail.com>
On Tue, Apr 28, 2020 at 03:12:51PM -0700, Jim Mattson wrote:
> On Wed, Apr 22, 2020 at 7:26 PM Sean Christopherson
> <sean.j.christopherson@intel.com> wrote:
> > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
> > index 7c49a7dc601f..d9d6028a77e0 100644
> > --- a/arch/x86/kvm/x86.c
> > +++ b/arch/x86/kvm/x86.c
> > @@ -7755,24 +7755,10 @@ static int inject_pending_event(struct kvm_vcpu *vcpu)
> > --vcpu->arch.nmi_pending;
> > vcpu->arch.nmi_injected = true;
> > kvm_x86_ops.set_nmi(vcpu);
> > - } else if (kvm_cpu_has_injectable_intr(vcpu)) {
> > - /*
> > - * Because interrupts can be injected asynchronously, we are
> > - * calling check_nested_events again here to avoid a race condition.
> > - * See https://lkml.org/lkml/2014/7/2/60 for discussion about this
> > - * proposal and current concerns. Perhaps we should be setting
> > - * KVM_REQ_EVENT only on certain events and not unconditionally?
> > - */
> > - if (is_guest_mode(vcpu) && kvm_x86_ops.check_nested_events) {
> > - r = kvm_x86_ops.check_nested_events(vcpu);
> > - if (r != 0)
> > - return r;
> > - }
> > - if (kvm_x86_ops.interrupt_allowed(vcpu)) {
> > - kvm_queue_interrupt(vcpu, kvm_cpu_get_interrupt(vcpu),
> > - false);
> > - kvm_x86_ops.set_irq(vcpu);
> > - }
> > + } else if (kvm_cpu_has_injectable_intr(vcpu) &&
> > + kvm_x86_ops.interrupt_injection_allowed(vcpu)) {
> > + kvm_queue_interrupt(vcpu, kvm_cpu_get_interrupt(vcpu), false);
> > + kvm_x86_ops.set_irq(vcpu);
> > }
> So, that's what this mess was all about! Well, this certainly looks better.
Right? I can't count the number of times I've looked at this code and
wondered what the hell it was doing.
Side topic, I just realized you're reviewing my original series. Paolo
commandeered it to extend it to SVM. https://patchwork.kernel.org/cover/11508679/
next prev parent reply other threads:[~2020-04-28 22:20 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-23 2:25 [PATCH 00/13] KVM: x86: Event fixes and cleanup Sean Christopherson
2020-04-23 2:25 ` [PATCH 01/13] KVM: nVMX: Preserve exception priority irrespective of exiting behavior Sean Christopherson
2020-04-28 18:54 ` Jim Mattson
2020-04-28 20:07 ` Oliver Upton
2020-04-23 2:25 ` [PATCH 02/13] KVM: nVMX: Open a window for pending nested VMX preemption timer Sean Christopherson
2020-04-28 21:39 ` Jim Mattson
2020-04-23 2:25 ` [PATCH 03/13] KVM: x86: Set KVM_REQ_EVENT if run is canceled with req_immediate_exit set Sean Christopherson
2020-04-28 21:41 ` Jim Mattson
2020-04-23 2:25 ` [PATCH 04/13] KVM: x86: Make return for {interrupt_nmi}_allowed() a bool instead of int Sean Christopherson
2020-04-28 21:42 ` Jim Mattson
2020-04-23 2:25 ` [PATCH 05/13] KVM: nVMX: Move nested_exit_on_nmi() to nested.h Sean Christopherson
2020-04-28 21:44 ` Jim Mattson
2020-04-23 2:25 ` [PATCH 06/13] KVM: nVMX: Report NMIs as allowed when in L2 and Exit-on-NMI is set Sean Christopherson
2020-04-28 21:46 ` Jim Mattson
2020-04-23 2:25 ` [PATCH 07/13] KVM: VMX: Split out architectural interrupt/NMI blocking checks Sean Christopherson
2020-04-28 21:57 ` Jim Mattson
2020-04-23 2:25 ` [PATCH 08/13] KVM: nVMX: Preserve IRQ/NMI priority irrespective of exiting behavior Sean Christopherson
2020-04-28 21:58 ` Jim Mattson
2020-04-23 2:25 ` [PATCH 09/13] KVM: nVMX: Prioritize SMI over nested IRQ/NMI Sean Christopherson
2020-04-28 22:04 ` Jim Mattson
2020-04-28 22:59 ` Sean Christopherson
2020-04-28 23:16 ` Jim Mattson
2020-04-29 14:50 ` Sean Christopherson
2020-04-29 20:06 ` Sean Christopherson
2020-04-28 23:23 ` Jim Mattson
2020-04-23 2:25 ` [PATCH 10/13] KVM: x86: WARN on injected+pending exception even in nested case Sean Christopherson
2020-04-28 22:05 ` Jim Mattson
2020-04-23 2:25 ` [PATCH 11/13] KVM: VMX: Use vmx_interrupt_blocked() directly from vmx_handle_exit() Sean Christopherson
2020-04-28 22:07 ` Jim Mattson
2020-04-23 2:25 ` [PATCH 12/13] KVM: x86: Replace late check_nested_events() hack with more precise fix Sean Christopherson
2020-04-23 11:00 ` Paolo Bonzini
2020-04-28 22:12 ` Jim Mattson
2020-04-28 22:20 ` Sean Christopherson [this message]
2020-04-29 8:36 ` Paolo Bonzini
2020-04-29 16:45 ` Sean Christopherson
2020-04-29 16:58 ` Paolo Bonzini
2020-04-29 17:07 ` Sean Christopherson
2020-04-23 2:25 ` [PATCH 13/13] KVM: VMX: Use vmx_get_rflags() to query RFLAGS in vmx_interrupt_blocked() Sean Christopherson
2020-04-28 22:13 ` Jim Mattson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200428222010.GN12735@linux.intel.com \
--to=sean.j.christopherson@intel.com \
--cc=jmattson@google.com \
--cc=joro@8bytes.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=oupton@google.com \
--cc=pbonzini@redhat.com \
--cc=pshier@google.com \
--cc=vkuznets@redhat.com \
--cc=wanpengli@tencent.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.