Changeset 75413 in vbox
- Timestamp:
- Nov 13, 2018 4:55:09 AM (6 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
-
include/VBox/vmm/cpum.h (modified) (1 diff)
-
src/VBox/VMM/VMMAll/CPUMAllRegs.cpp (modified) (2 diffs)
-
src/VBox/VMM/VMMR3/EM.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/cpum.h
r75320 r75413 1435 1435 VMM_INT_DECL(void) CPUMSvmVmRunSaveHostState(PCPUMCTX pCtx, uint8_t cbInstr); 1436 1436 VMM_INT_DECL(uint64_t) CPUMApplyNestedGuestTscOffset(PVMCPU pVCpu, uint64_t uTicks); 1437 VMM_INT_DECL(bool) CPUMCanVmxNstGstTakePhysIntr(PVMCPU pVCpu, PCCPUMCTX pCtx); 1438 VMM_INT_DECL(bool) CPUMCanVmxNstGstTakeVirtIntr(PVMCPU pVCpu, PCCPUMCTX pCtx); 1437 1439 /** @} */ 1438 1440 -
trunk/src/VBox/VMM/VMMAll/CPUMAllRegs.cpp
r75109 r75413 2649 2649 2650 2650 /** 2651 * Checks whether the VMX nested-guest is in a state to receive physical (APIC) 2652 * interrupts. 2653 * 2654 * @returns VBox status code. 2655 * @retval true if it's ready, false otherwise. 2656 * 2657 * @param pVCpu The cross context virtual CPU structure of the calling EMT. 2658 * @param pCtx The guest-CPU context. 2659 */ 2660 VMM_INT_DECL(bool) CPUMCanVmxNstGstTakePhysIntr(PVMCPU pVCpu, PCCPUMCTX pCtx) 2661 { 2662 #ifdef IN_RC 2663 RT_NOREF2(pVCpu, pCtx); 2664 AssertReleaseFailedReturn(false); 2665 #else 2666 RT_NOREF(pVCpu); 2667 Assert(CPUMIsGuestInVmxNonRootMode(pCtx)); 2668 Assert(pCtx->hwvirt.fGif); /* Always true on Intel. */ 2669 2670 return (pCtx->eflags.u & X86_EFL_IF); 2671 #endif 2672 } 2673 2674 /** 2675 * Checks whether the VMX nested-guest is in a state to receive virtual interrupts 2676 * (those injected with the "virtual-interrupt delivery" feature). 2677 * 2678 * @returns VBox status code. 2679 * @retval true if it's ready, false otherwise. 2680 * 2681 * @param pVCpu The cross context virtual CPU structure of the calling EMT. 2682 * @param pCtx The guest-CPU context. 2683 */ 2684 VMM_INT_DECL(bool) CPUMCanVmxNstGstTakeVirtIntr(PVMCPU pVCpu, PCCPUMCTX pCtx) 2685 { 2686 #ifdef IN_RC 2687 RT_NOREF2(pVCpu, pCtx); 2688 AssertReleaseFailedReturn(false); 2689 #else 2690 RT_NOREF(pVCpu); 2691 Assert(CPUMIsGuestInVmxNonRootMode(pCtx)); 2692 Assert(pCtx->hwvirt.fGif); /* Always true on Intel. */ 2693 2694 return false; /** @todo NSTVMX: Currently not implemented. */ 2695 #endif 2696 } 2697 2698 2699 /** 2651 2700 * Checks whether the SVM nested-guest is in a state to receive physical (APIC) 2652 2701 * interrupts. … … 2657 2706 * @param pVCpu The cross context virtual CPU structure of the calling EMT. 2658 2707 * @param pCtx The guest-CPU context. 2659 *2660 * @sa hmR0SvmCanNstGstTakePhysIntr.2661 2708 */ 2662 2709 VMM_INT_DECL(bool) CPUMCanSvmNstGstTakePhysIntr(PVMCPU pVCpu, PCCPUMCTX pCtx) -
trunk/src/VBox/VMM/VMMR3/EM.cpp
r74899 r75413 1769 1769 *pfInjected = false; 1770 1770 1771 /** @todo NSTVMX: Virtual interrupt injection. */ 1772 if (pVCpu->cpum.GstCtx.eflags.Bits.u1IF) 1771 if (CPUMCanVmxNstGstTakePhysIntr(pVCpu, &pVCpu->cpum.GstCtx)) 1773 1772 { 1774 1773 Assert(!VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_INHIBIT_INTERRUPTS)); … … 1801 1800 } 1802 1801 } 1802 1803 /** @todo NSTVMX: Virtual interrupt injection, virtual-interrupt delivery. */ 1803 1804 1804 1805 return VINF_NO_CHANGE;
Note:
See TracChangeset
for help on using the changeset viewer.

