Changeset 83941 in vbox for trunk/src/VBox/VMM/VMMR0
- Timestamp:
- Apr 23, 2020 10:22:56 AM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 137493
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/PDMR0Device.cpp
r83850 r83941 274 274 #endif 275 275 276 #ifdef VBOX_WITH_IOMMU_AMD 277 /** @todo IOMMU: Optimize/re-organize things here later. */ 278 PGVM pGVM = pDevIns->Internal.s.pGVM; 279 PPDMIOMMUR0 pIommu = &pGVM->pdmr0.s.aIommus[0]; 280 PPDMDEVINS pDevInsIommu = pIommu->CTX_SUFF(pDevIns); 281 if ( pDevInsIommu 282 && pDevInsIommu != pDevIns) 283 { 284 RTGCPHYS GCPhysOut; 285 uint16_t const uDeviceId = VBOX_PCI_BUSDEVFN_MAKE(pPciDev->Int.s.idxPdmBus, pPciDev->uDevFn); 286 int rc = pIommu->pfnMemRead(pDevInsIommu, uDeviceId, GCPhys, cbRead, &GCPhysOut); 287 if (RT_FAILURE(rc)) 288 { 289 Log(("pdmR0DevHlp_PCIPhysRead: IOMMU translation failed. uDeviceId=%#x GCPhys=%#RGp cb=%u rc=%Rrc\n", uDeviceId, 290 GCPhys, cbRead, rc)); 291 return rc; 292 } 293 } 294 #endif 295 276 296 return pDevIns->pHlpR0->pfnPhysRead(pDevIns, GCPhys, pvBuf, cbRead); 277 297 } … … 299 319 pDevIns, pDevIns->iInstance, VERR_PDM_NOT_PCI_BUS_MASTER, GCPhys, cbWrite)); 300 320 return VERR_PDM_NOT_PCI_BUS_MASTER; 321 } 322 #endif 323 324 #ifdef VBOX_WITH_IOMMU_AMD 325 /** @todo IOMMU: Optimize/re-organize things here later. */ 326 PGVM pGVM = pDevIns->Internal.s.pGVM; 327 PPDMIOMMUR0 pIommu = &pGVM->pdmr0.s.aIommus[0]; 328 PPDMDEVINS pDevInsIommu = pIommu->CTX_SUFF(pDevIns); 329 if ( pDevInsIommu 330 && pDevInsIommu != pDevIns) 331 { 332 RTGCPHYS GCPhysOut; 333 uint16_t const uDeviceId = VBOX_PCI_BUSDEVFN_MAKE(pPciDev->Int.s.idxPdmBus, pPciDev->uDevFn); 334 int rc = pIommu->pfnMemWrite(pDevInsIommu, uDeviceId, GCPhys, cbWrite, &GCPhysOut); 335 if (RT_FAILURE(rc)) 336 { 337 Log(("pdmR0DevHlp_PCIPhysWrite: IOMMU translation failed. uDeviceId=%#x GCPhys=%#RGp cb=%u rc=%Rrc\n", uDeviceId, 338 GCPhys, cbWrite, rc)); 339 return rc; 340 } 301 341 } 302 342 #endif
Note:
See TracChangeset
for help on using the changeset viewer.