Viommu: Efficient Iommu emulation
Direct device assignment, where a guest virtual mahine directly interacts with an I/O device without host ntervention, is appealing, because it allows an unmodied (non-hypervisor-aware) guest to achieve near-native erformance. But device assignment for unmodified uests suffers from two serious deficiencies: (1) it reuires pinning all of the guest's pages, thereby disalowing memory overcommitment, and (2) it exposes the uest's memory to buggy device drivers. We solve these problems by designing, implementing, nd exposing an emulated IOMMU (vIOMMU) to the nmodified guest. We employ two novel optimizations o make vIOMMU perform well: (1) waiting a few miliseconds before tearing down an IOMMU mapping in he hope it will be immediately reused (“optimistic tear-own”), and (2) running the vIOMMU on a sidecore, and hereby enabling for the first time the use of a sidecore by nmodified guests. Both optimizations are highly effecive in isolation. The former allows bare-metal to achieve 00% of a 10Gbps line rate. The combination of the two llows an unmodified guest to do the same.