IOMMU comes to Solaris x86
This weekend, the code for the IOMMU for Solaris on Intel ( PSARC 2008/560 ) was pushed . This has potentially profound ramifications for folks working on Solaris device drivers, and I thought I'd take some time to talk about them. First off, it needs to be noted that we've had an IOMMU on Solaris SPARC pretty much for as long as we've had Solaris on SPARC. (In fact, most SPARC platforms have to use an IOMMU -- they have no choice.) But on x86 this technology is new. The benefits that IOMMU brings are many fold. It virtually guarantees that all DMA requests can be set up with a single DMA cookie, reducing complexity and eliminating the use of bounce buffers by the DMA framework -- even for old devices with unfortunate restrictions (such as an inability to perform dual address cycles on PCI -- i.e. no 64-bit support.) Such restrictions are actually fairly common place. It allows for strong isolation to be given for devices that can be accessed via other virtual machines