Changeset 85895 in vbox
- Timestamp:
- Aug 27, 2020 7:14:53 AM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 140077
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Bus/DevIommuAmd.cpp
r85860 r85895 456 456 * @{ */ 457 457 /** Log prefix string. */ 458 #define IOMMU_LOG_PFX " AMD_IOMMU"458 #define IOMMU_LOG_PFX "IOMMU-AMD" 459 459 /** The current saved state version. */ 460 460 #define IOMMU_SAVED_STATE_VERSION 1 … … 2595 2595 { 2596 2596 IOMMU_ASSERT_LOCKED(pDevIns); 2597 LogFlowFunc(("\n")); 2597 2598 2598 2599 PIOMMU pThis = PDMDEVINS_2_DATA(pDevIns, PIOMMU); 2599 2600 if ( !ASMAtomicXchgBool(&pThis->fCmdThreadSignaled, true) 2600 2601 && ASMAtomicReadBool(&pThis->fCmdThreadSleeping)) 2602 { 2603 LogFlowFunc(("Signaling command thread\n")); 2601 2604 PDMDevHlpSUPSemEventSignal(pDevIns, pThis->hEvtCmdThread); 2605 } 2602 2606 } 2603 2607 … … 4442 4446 4443 4447 PIOMMU pThis = PDMDEVINS_2_DATA(pDevIns, PIOMMU); 4448 LogFlowFunc(("uDevId=%#x uIova=%#RX64 cbRead=%u\n", uDevId, uIova, cbRead)); 4444 4449 4445 4450 /* Addresses are forwarded without translation when the IOMMU is disabled. */ … … 4479 4484 4480 4485 PIOMMU pThis = PDMDEVINS_2_DATA(pDevIns, PIOMMU); 4486 LogFlowFunc(("uDevId=%#x uIova=%#RX64 cbWrite=%u\n", uDevId, uIova, cbWrite)); 4481 4487 4482 4488 /* Addresses are forwarded without translation when the IOMMU is disabled. */ … … 4791 4797 4792 4798 PIOMMU pThis = PDMDEVINS_2_DATA(pDevIns, PIOMMU); 4799 LogFlowFunc(("uDevId=%#x\n", uDevId)); 4793 4800 4794 4801 /* Interrupts are forwarded with remapping when the IOMMU is disabled. */ … … 4815 4822 Assert(!(off & (cb - 1))); 4816 4823 4824 LogFlowFunc(("off=%RGp cb=%u\n", off, cb)); 4825 4817 4826 uint64_t const uValue = cb == 8 ? *(uint64_t const *)pv : *(uint32_t const *)pv; 4818 4827 return iommuAmdWriteRegister(pDevIns, off, cb, uValue); … … 4828 4837 Assert(cb == 4 || cb == 8); 4829 4838 Assert(!(off & (cb - 1))); 4839 4840 LogFlowFunc(("off=%RGp cb=%u\n", off, cb)); 4830 4841 4831 4842 uint64_t uResult; … … 5087 5098 { 5088 5099 RT_NOREF(pThread); 5089 5100 LogFlowFunc(("\n")); 5090 5101 PIOMMU pThis = PDMDEVINS_2_DATA(pDevIns, PIOMMU); 5091 5102 return PDMDevHlpSUPSemEventSignal(pDevIns, pThis->hEvtCmdThread); … … 5099 5110 unsigned cb, uint32_t *pu32Value) 5100 5111 { 5112 LogFlowFunc(("\n")); 5101 5113 /** @todo IOMMU: PCI config read stat counter. */ 5102 5114 VBOXSTRICTRC rcStrict = PDMDevHlpPCIConfigRead(pDevIns, pPciDev, uAddress, cb, pu32Value); … … 5114 5126 { 5115 5127 PIOMMU pThis = PDMDEVINS_2_DATA(pDevIns, PIOMMU); 5128 LogFlowFunc(("\n")); 5116 5129 5117 5130 /* … … 5149 5162 if (pThis->IommuBar.n.u1Enable) 5150 5163 { 5151 Assert(pThis->hMmio == NIL_IOMMMIOHANDLE); 5164 Assert(pThis->hMmio != NIL_IOMMMIOHANDLE); 5165 Assert(PDMDevHlpMmioGetMappingAddress(pDevIns, pThis->hMmio) == NIL_RTGCPHYS); 5152 5166 Assert(!pThis->ExtFeat.n.u1PerfCounterSup); /* Base is 16K aligned when performance counters aren't supported. */ 5153 5167 RTGCPHYS const GCPhysMmioBase = RT_MAKE_U64(pThis->IommuBar.au32[0] & 0xffffc000, pThis->IommuBar.au32[1]); … … 5751 5765 /** @todo IOMMU: Save state. */ 5752 5766 RT_NOREF2(pDevIns, pSSM); 5767 LogFlowFunc(("\n")); 5753 5768 return VERR_NOT_IMPLEMENTED; 5754 5769 } … … 5762 5777 /** @todo IOMMU: Load state. */ 5763 5778 RT_NOREF4(pDevIns, pSSM, uVersion, uPass); 5779 LogFlowFunc(("\n")); 5764 5780 return VERR_NOT_IMPLEMENTED; 5765 5781 } … … 5781 5797 PDMPCIDEV_ASSERT_VALID(pDevIns, pPciDev); 5782 5798 5799 LogFlowFunc(("\n")); 5800 5783 5801 memset(&pThis->aDevTabBaseAddrs[0], 0, sizeof(pThis->aDevTabBaseAddrs)); 5784 5802 … … 5844 5862 PDMPciDevSetDWord(pPciDev, IOMMU_PCI_OFF_BASE_ADDR_REG_LO, 0); 5845 5863 PDMPciDevSetDWord(pPciDev, IOMMU_PCI_OFF_BASE_ADDR_REG_HI, 0); 5864 5865 /* 5866 * I ASSUME all MMIO regions mapped by a PDM device are automatically unmapped 5867 * on VM reset. If not, we need to enable the following... 5868 */ 5869 #if 0 5870 /* Unmap the MMIO region on reset if it has been mapped previously. */ 5871 Assert(pThis->hMmio != NIL_IOMMMIOHANDLE); 5872 if (PDMDevHlpMmioGetMappingAddress(pDevIns, pThis->hMmio) != NIL_RTGCPHYS) 5873 PDMDevHlpMmioUnmap(pDevIns, pThis->hMmio); 5874 #endif 5846 5875 } 5847 5876 … … 5853 5882 { 5854 5883 PDMDEV_CHECK_VERSIONS_RETURN_QUIET(pDevIns); 5855 PIOMMU pThis= PDMDEVINS_2_DATA(pDevIns, PIOMMU);5884 PIOMMU pThis = PDMDEVINS_2_DATA(pDevIns, PIOMMU); 5856 5885 LogFlowFunc(("\n")); 5857 5886 … … 5872 5901 { 5873 5902 PDMDEV_CHECK_VERSIONS_RETURN(pDevIns); 5874 RT_NOREF2(iInstance, pCfg); 5875 LogFlowFunc(("\n")); 5903 RT_NOREF(pCfg); 5876 5904 5877 5905 PIOMMU pThis = PDMDEVINS_2_DATA(pDevIns, PIOMMU); 5878 5906 PIOMMUCC pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PIOMMUCC); 5879 5907 pThisCC->pDevInsR3 = pDevIns; 5908 5909 LogFlowFunc(("iInstance=%d\n", iInstance)); 5880 5910 5881 5911 /* … … 6034 6064 * Create the command thread and its event semaphore. 6035 6065 */ 6066 char szDevIommu[64]; 6067 RT_ZERO(szDevIommu); 6068 RTStrPrintf(szDevIommu, sizeof(szDevIommu), "IOMMU-%u", iInstance); 6036 6069 rc = PDMDevHlpThreadCreate(pDevIns, &pThisCC->pCmdThread, pThis, iommuAmdR3CmdThread, iommuAmdR3CmdThreadWakeUp, 6037 0 /* cbStack */, RTTHREADTYPE_IO, "AMD-IOMMU");6070 0 /* cbStack */, RTTHREADTYPE_IO, szDevIommu); 6038 6071 AssertLogRelRCReturn(rc, rc); 6039 6072
Note:
See TracChangeset
for help on using the changeset viewer.