VirtualBox

Changeset 87028 in vbox for trunk


Ignore:
Timestamp:
Dec 2, 2020 5:09:19 AM (4 years ago)
Author:
vboxsync
Message:

AMD IOMMU: bugref:9654 Devices/Graphics/DevVGA-SVGA: Use non-PCI guest memory read/write for bypassing the IOMMU for certain reads and writes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA-cmd.cpp

    r86905 r87028  
    673673        Log5Func(("%s phys=%RGp\n", (enmDirection == VMSVGAGboTransferDirection_Read) ? "READ" : "WRITE", GCPhys));
    674674
     675        /*
     676         * We are deliberately using the non-PCI version of PDMDevHlpPCIPhys[Read|Write] as the
     677         * guest-side VMSVGA driver seems to allocate non-DMA (regular physical) addresses,
     678         * see @bugref{9654#c75}.
     679         */
    675680        if (enmDirection == VMSVGAGboTransferDirection_Read)
    676             rc = PDMDevHlpPCIPhysRead(pSvgaR3State->pDevIns, GCPhys, pu8CurrentHost, cbToCopy);
     681            rc = PDMDevHlpPhysRead(pSvgaR3State->pDevIns, GCPhys, pu8CurrentHost, cbToCopy);
    677682        else
    678             rc = PDMDevHlpPCIPhysWrite(pSvgaR3State->pDevIns, GCPhys, pu8CurrentHost, cbToCopy);
     683            rc = PDMDevHlpPhysWrite(pSvgaR3State->pDevIns, GCPhys, pu8CurrentHost, cbToCopy);
    679684        AssertRCBreak(rc);
    680685
     
    63416346            Log5Func(("%s phys=%RGp\n", (enmTransferType == SVGA3D_WRITE_HOST_VRAM) ? "READ" : "WRITE", GCPhys));
    63426347
     6348            /*
     6349             * We are deliberately using the non-PCI version of PDMDevHlpPCIPhys[Read|Write] as the
     6350             * guest-side VMSVGA driver seems to allocate non-DMA (physical memory) addresses,
     6351             * see @bugref{9654#c75}.
     6352             */
    63436353            if (enmTransferType == SVGA3D_WRITE_HOST_VRAM)
    6344                 rc = PDMDevHlpPCIPhysRead(pDevIns, GCPhys, pbCurrentHost, cbToCopy);
     6354                rc = PDMDevHlpPhysRead(pDevIns, GCPhys, pbCurrentHost, cbToCopy);
    63456355            else
    6346                 rc = PDMDevHlpPCIPhysWrite(pDevIns, GCPhys, pbCurrentHost, cbToCopy);
     6356                rc = PDMDevHlpPhysWrite(pDevIns, GCPhys, pbCurrentHost, cbToCopy);
    63476357            AssertRCBreak(rc);
    63486358
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette