- Timestamp:
- Sep 9, 2020 3:23:22 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Bus/DevIommuAmd.cpp
r86031 r86075 2818 2818 IOMMU_ASSERT_NOT_LOCKED(pDevIns); 2819 2819 2820 LogFlowFunc(("\n"));2821 2822 2820 PIOMMU pThis = PDMDEVINS_2_DATA(pDevIns, PIOMMU); 2823 2821 STAM_COUNTER_INC(&pThis->StatCmd); … … 2836 2834 if (!(pCmdComWait->au64[0] & ~IOMMU_CMD_COM_WAIT_QWORD_0_VALID_MASK)) 2837 2835 { 2838 /* If Completion Store is requested, write the StoreData to the specified address. */2836 /* If Completion Store is requested, write the StoreData to the specified address. */ 2839 2837 if (pCmdComWait->n.u1Store) 2840 2838 { … … 2851 2849 } 2852 2850 2853 IOMMU_LOCK(pDevIns);2854 2855 /* Indicate that this command has completed. */2856 ASMAtomicOrU64(&pThis->Status.u64, IOMMU_STATUS_COMPLETION_WAIT_INTR);2857 2858 2851 /* If the command requests an interrupt and completion wait interrupts are enabled, raise it. */ 2859 2852 if (pCmdComWait->n.u1Interrupt) 2860 2853 { 2854 IOMMU_LOCK(pDevIns); 2855 ASMAtomicOrU64(&pThis->Status.u64, IOMMU_STATUS_COMPLETION_WAIT_INTR); 2861 2856 IOMMU_CTRL_T const Ctrl = iommuAmdGetCtrl(pThis); 2862 if (Ctrl.n.u1CompWaitIntrEn) 2857 bool const fRaiseInt = Ctrl.n.u1CompWaitIntrEn; 2858 IOMMU_UNLOCK(pDevIns); 2859 2860 if (fRaiseInt) 2863 2861 iommuAmdRaiseMsiInterrupt(pDevIns); 2864 2862 } 2865 2863 2866 IOMMU_UNLOCK(pDevIns);2867 2864 return VINF_SUCCESS; 2868 2865 }
Note:
See TracChangeset
for help on using the changeset viewer.