| 986 | } |
| 987 | |
| 988 | static void |
| 989 | svm_save_intinfo(struct svm_softc *svm_sc, int vcpu) |
| 990 | { |
| 991 | struct vmcb_ctrl *ctrl; |
| 992 | uint64_t intinfo; |
| 993 | |
| 994 | ctrl = svm_get_vmcb_ctrl(svm_sc, vcpu); |
| 995 | intinfo = ctrl->exitintinfo; |
| 996 | if (!VMCB_EXITINTINFO_VALID(intinfo)) |
| 997 | return; |
| 998 | |
| 999 | /* |
| 1000 | * From APMv2, Section "Intercepts during IDT interrupt delivery" |
| 1001 | * |
| 1002 | * If a #VMEXIT happened during event delivery then record the event |
| 1003 | * that was being delivered. |
| 1004 | */ |
| 1005 | VCPU_CTR2(svm_sc->vm, vcpu, "SVM:Pending INTINFO(0x%lx), vector=%d.\n", |
| 1006 | intinfo, VMCB_EXITINTINFO_VECTOR(intinfo)); |
| 1007 | vmm_stat_incr(svm_sc->vm, vcpu, VCPU_EXITINTINFO, 1); |
| 1008 | vm_exit_intinfo(svm_sc->vm, vcpu, intinfo); |
| 1009 | } |
| 1010 | |
| 1011 | #ifdef INVARIANTS |
| 1012 | static __inline int |
no test coverage detected