]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/commit
MFC 260802,260836,260863,261001,261074,261617:
authorjhb <jhb@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Fri, 23 May 2014 19:39:58 +0000 (19:39 +0000)
committerjhb <jhb@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Fri, 23 May 2014 19:39:58 +0000 (19:39 +0000)
commit1f03f19f7760a337b168869a79c76d4f6e680a47
tree0272484c7f91c54548c248b986be0f4bb4eb1e90
parent9d51c2b453f1e562594faac3d97ba00d0d65f56e
MFC 260802,260836,260863,261001,261074,261617:
Various fixes for NMI and interrupt injection.
- If a VM-exit happens during an NMI injection then clear the "NMI Blocking"
  bit in the Guest Interruptibility-state VMCS field.
- If the guest exits due to a fault while it is executing IRET then restore
  the state of "Virtual NMI blocking" in the guest's interruptibility-state
  field before resuming the guest.
- Inject a pending NMI only if NMI_BLOCKING, MOVSS_BLOCKING, STI_BLOCKING
  are all clear. If any of these bits are set then enable "NMI window
  exiting" and inject the NMI in the VM-exit handler.
- Handle a VM-exit due to a NMI properly by vectoring to the host's NMI
  handler via a software interrupt.
- Set "Interrupt Window Exiting" in the case where there is a vector to be
  injected into the vcpu but the VM-entry interruption information field
  already has the valid bit set.
- For VM-exits due to an NMI, handle the NMI with interrupts disabled in
  addition to "blocking by NMI" already established by the VM-exit.

git-svn-id: svn://svn.freebsd.org/base/stable/10@266593 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/amd64/vmm/intel/vmcs.h
sys/amd64/vmm/intel/vmx.c
sys/amd64/vmm/vmm_stat.c
sys/amd64/vmm/vmm_stat.h