From: Marcelo Tosatti <mtosatti@redhat.com>
To: Gleb Natapov <gleb@redhat.com>
Cc: "Zhang, Yang Z" <yang.z.zhang@intel.com>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"Tian, Kevin" <kevin.tian@intel.com>
Subject: Re: [PATCH v3 3/4] x86, apicv: add virtual interrupt delivery support
Date: Wed, 5 Dec 2012 20:38:59 -0200 [thread overview]
Message-ID: <20121205223859.GA28330@amt.cnet> (raw)
In-Reply-To: <20121205111438.GN19514@redhat.com>
On Wed, Dec 05, 2012 at 01:14:38PM +0200, Gleb Natapov wrote:
> On Wed, Dec 05, 2012 at 03:43:41AM +0000, Zhang, Yang Z wrote:
> > >> @@ -5657,12 +5673,20 @@ static int vcpu_enter_guest(struct kvm_vcpu
> > > *vcpu)
> > >> }
> > >>
> > >> if (kvm_check_request(KVM_REQ_EVENT, vcpu) || req_int_win) {
> > >> + /* update archtecture specific hints for APIC
> > >> + * virtual interrupt delivery */
> > >> + if (kvm_x86_ops->update_irq)
> > >> + kvm_x86_ops->update_irq(vcpu);
> > >> +
> > >> inject_pending_event(vcpu);
> > >>
> > >> /* enable NMI/IRQ window open exits if needed */
> > >> if (vcpu->arch.nmi_pending)
> > >> kvm_x86_ops->enable_nmi_window(vcpu);
> > >> - else if (kvm_cpu_has_interrupt(vcpu) || req_int_win)
> > >> + else if (kvm_apic_vid_enabled(vcpu)) {
> > >> + if (kvm_cpu_has_extint(vcpu))
> > >> + kvm_x86_ops->enable_irq_window(vcpu);
> > >
> > > If RVI is non-zero, then interrupt window should not be enabled,
> > > accordingly to 29.2.2:
> > >
> > > "If a virtual interrupt has been recognized (see Section 29.2.1), it will
> > > be delivered at an instruction boundary when the following conditions all
> > > hold: (1) RFLAGS.IF = 1; (2) there is no blocking by STI; (3) there is no
> > > blocking by MOV SS or by POP SS; and (4) the “interrupt-window exiting”
> > > VM-execution control is 0."
> > Right. Must check RVI here.
> >
> Why? We request interrupt window here because there is ExtINT interrupt
> pending. ExtINT interrupt has a precedence over APIC interrupts (our
> current code is incorrect!), so we want vmexit as soon as interrupts are
> allowed to inject ExtINT and we do not want virtual interrupt to be
> delivered. I think the (4) there is exactly for this situation.
>
> --
> Gleb.
Right. BTW, delivery of ExtINT has no EOI, so there is no evaluation
of pending virtual interrupts. Therefore, shouldnt interrupt window be
enabled when injecting ExtINT so that evaluation of pending virtual
interrupts is performed on next vm-entry?
next prev parent reply other threads:[~2012-12-05 22:39 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-03 7:01 [PATCH v3 0/4] x86, apicv: Add APIC virtualization support Yang Zhang
2012-12-03 7:01 ` [PATCH v3 1/4] x86: PIT connects to pin 2 of IOAPIC Yang Zhang
2012-12-03 9:42 ` Gleb Natapov
2012-12-04 5:32 ` Zhang, Yang Z
2012-12-04 12:55 ` Gleb Natapov
2012-12-05 1:28 ` Zhang, Yang Z
2012-12-03 7:01 ` [PATCH v3 2/4] x86, apicv: add APICv register virtualization support Yang Zhang
2012-12-05 0:29 ` Marcelo Tosatti
2012-12-05 3:17 ` Zhang, Yang Z
2012-12-05 23:11 ` Marcelo Tosatti
2012-12-06 6:45 ` Gleb Natapov
2012-12-03 7:01 ` [PATCH v3 3/4] x86, apicv: add virtual interrupt delivery support Yang Zhang
2012-12-03 11:37 ` Gleb Natapov
2012-12-04 6:39 ` Zhang, Yang Z
2012-12-04 10:58 ` Gleb Natapov
2012-12-05 1:55 ` Zhang, Yang Z
2012-12-05 5:02 ` Gleb Natapov
2012-12-05 6:02 ` Zhang, Yang Z
2012-12-05 10:18 ` Gleb Natapov
2012-12-05 13:51 ` Zhang, Yang Z
2012-12-05 14:00 ` Gleb Natapov
2012-12-06 2:55 ` Zhang, Yang Z
2012-12-06 7:07 ` Gleb Natapov
2012-12-06 7:16 ` Zhang, Yang Z
2012-12-06 7:19 ` Gleb Natapov
2012-12-06 7:20 ` Zhang, Yang Z
2012-12-04 16:46 ` Michael S. Tsirkin
2012-12-05 2:00 ` Marcelo Tosatti
2012-12-05 3:43 ` Zhang, Yang Z
2012-12-05 11:14 ` Gleb Natapov
2012-12-05 14:16 ` Zhang, Yang Z
2012-12-05 14:34 ` Gleb Natapov
2012-12-06 2:58 ` Zhang, Yang Z
2012-12-05 22:38 ` Marcelo Tosatti [this message]
2012-12-06 9:28 ` Gleb Natapov
2012-12-06 11:35 ` Zhang, Yang Z
2012-12-05 22:31 ` Marcelo Tosatti
2012-12-06 3:31 ` Zhang, Yang Z
2012-12-06 5:02 ` Zhang, Yang Z
2012-12-06 6:36 ` Gleb Natapov
2012-12-06 6:56 ` Zhang, Yang Z
2012-12-06 20:08 ` Marcelo Tosatti
2012-12-07 1:00 ` Zhang, Yang Z
2012-12-07 7:28 ` Gleb Natapov
2012-12-03 7:01 ` [PATCH v3 4/4] x86, apicv: add virtual x2apic support Yang Zhang
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=20121205223859.GA28330@amt.cnet \
--to=mtosatti@redhat.com \
--cc=gleb@redhat.com \
--cc=kevin.tian@intel.com \
--cc=kvm@vger.kernel.org \
--cc=yang.z.zhang@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).