Re: Handle multiple interrupts injection in one vmexit

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

 



Thanks Jan.

On Mon, May 26, 2014 at 6:44 PM, Jan Kiszka <jan.kiszka@xxxxxx> wrote:
> On 2014-05-26 15:51, Arthur Chunqi Li wrote:
>> Hi there,
>>
>> External interrupts are injected in function vcpu_enter_guest, with
>> checking KVM_REQ_EVENT. If there are more than one interrupts in one
>> vmexit (e.g. nmi and external events occur concurrently in one
>> vmexit), KVM will handle only one interrupt of the highest priority
>> (e.g. NMI), right? So only NMI is injected in this vmexit, thus when
>> will the other external events injected? I don't see any extra setting
>> of KVM_REQ_EVENT to handle the lower priority interrupts injection in
>> KVM.
>
> [you should mention that you are talking about x86 here]
>
> If both events are pending, inject_pending_event will try to inject the
> NMI. vcpu_enter_guest will then notice that there are still pending
> interrupts and request the interrupt window vmexit. If the NMI should be
> blocked, an NMI window exit is requested. But on NMI injection, another
> KVM_REQ_EVENT is send (see e.g. handle_nmi_window in vmx.c).
>
Yes, I see the Bit 2 (Interrupt-window exiting) and Bit 22 (NMI-window
exiting) on Primary Processor-Based VM-Execution Controls is used to
handle simultaneous (or contiguous) interrupt/NMI injection. See Intel
SDM Chapter 24.6.2 if any other guys need this information.

Arthur
> Jan
>
>



-- 
Arthur Chunqi Li
Department of Computer Science
School of EECS
Peking University
Beijing, China
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[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