VirtualBox

Changeset 90028 in vbox for trunk/src/VBox/Main/src-client


Ignore:
Timestamp:
Jul 5, 2021 2:25:35 PM (4 years ago)
Author:
vboxsync
Message:

AMD IOMMU: bugref:9654 Fixed address translations resulting in non-contiguous physical regions.
Fixed IOMMU from trying to remap MSIs generated by itself (e.g, IOPF).
Fixed destroying the IOTLB cache properly on VM reset.
Fixed some missing conditions in I/O page walk (reserved bits checks).
Slightly faster IOVA skipped bits checking in I/O page walk.
Added a couple of extra statistics to track non-contiguous translations and usage of non-standard page sizes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp

    r89953 r90028  
    16031603                InsertConfigNode(pInst,    "Config", &pCfg);
    16041604                hrc = pBusMgr->assignPCIDevice("iommu-amd", pInst);                         H();
     1605
     1606                /* The AMD IOMMU device needs to know which PCI slot it's in, see @bugref{9654#c104}. */
     1607                {
     1608                    PCIBusAddress Address;
     1609                    if (pBusMgr->findPCIAddress("iommu-amd", 0, Address))
     1610                    {
     1611                        uint32_t const u32IommuAddress = (Address.miDevice << 16) | Address.miFn;
     1612                        InsertConfigInteger(pCfg, "PCIAddress", u32IommuAddress);
     1613                    }
     1614                    else
     1615                        return VMR3SetError(pUVM, VERR_INVALID_PARAMETER, RT_SRC_POS,
     1616                                            N_("Failed to find PCI address of the assigned IOMMU device!"));
     1617                }
    16051618
    16061619                PCIBusAddress PCIAddr = PCIBusAddress((int32_t)uIoApicPciAddress);
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