1. A system comprising: 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 each virtual machine includes a virtual machine memory configured to store one or more data structures to communicate with a virtual IOMMU in the virtual machine, and wherein the VMM is configured to maintain a separate set of the one or more data structures which are accessable to the IOMMU, and wherein the VMM is configured to transfer information between the separate set of the one or more data structures and the one or more data structures in each virtual machine to virtualize the IOMMU into separate virtual IOMMUs for each respective virtual machine.