[PATCH v3 0/5] KVM: Fix multiple issues in handling pending/injected events

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

 



Hi,

This series aim to fix multiple issues in how KVM defines & handles
pending vs. injected events. Both in non-nested and nested
scenarios.

The 1st patch removes wrong unnecessary code of clearing pending
NMI/interrupt when injecting event in real-mode when coming from
one of the VMCS event-injection methods (vmx_queue_exception(),
vmx_inject_nmi(), vmx_inject_irq()).

The 2nd patch renames interrupt.pending to interrupt.injected in
order to better represent it's meaning and make it aligned with the
meaning of "pending" & "injected" event for exceptions & NMIs.
A "pending" event should represent an event that it's side-effect
have not been applied yet. In contrast, an "injected" event should
represent an event that it's side-effect have been applied.

The 3rd patch fix some misleading comments in inject_pending_events()
regarding why exception.pending blocks re-injection of NMI/Interrupt
and why it is evaluated first among the pending events.

The 4th patch fixes a critical bug in nVMX which cause L1 to
lose an IPI when it is sent in the exact moment a destination L2 CPU
exits to L0 due to event-delivery.

The last patch removes now irrelevant code which sets
KVM_REQ_EVENT on conditions when it is unnecessary.

Changes from v1 to v2:
* Move bail-out of inject_pending_event() on event re-injection to be
  after we evaluated pending exception.
* Removed patch moving call to vmx_complete_nested_posted_interrupt()
  in vmx_check_nested_events() to start of function.
  Decided to handle that in another patch series.

Changes from v2 to v3:
* Removed patches related to user-mode management of
  {interrupt,exception}.{pending.injected}.
  Handling them requires delicate backwards-compatabile work.
  Therefore, decided to handle that in another patch series.
* Modified patch renaming interrupt.pending to interrupt.injected to
  clarify issues with interrupt.pending usage in case
  !lapic_in_kernel(vcpu). Added relevant FIXME comments.
  Will be handled in future patches.

Regards,
-Liran Alon



[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