In one embodiment, a system comprises one or more input/output (I/O)
devices; an I/O memory management unit (IOMMU) coupled to receive memory
requests sourced by the I/O devices and configured to provide address
translation for the memory requests; and a virtual machine monitor (VMM)
configured to manage one or more virtual machines on the system, wherein
the VMM is configured to virtualize the IOMMU, providing one or more
virtual IOMMUs for use by one or more virtual machines.