On Wed, Jun 02, 2010 at 11:42:01AM +0200, Joerg Roedel wrote: > On Tue, Jun 01, 2010 at 12:55:32PM +0300, Michael S. Tsirkin wrote: > > > There seems to be some misunderstanding. The userspace interface > > proposed forces a separate domain per device and forces userspace to > > repeat iommu programming for each device. We are better off sharing a > > domain between devices and programming the iommu once. > > > > The natural way to do this is to have an iommu driver for programming > > iommu. > > IMO a seperate iommu-userspace driver is a nightmare for a userspace > interface. It is just too complicated to use. One advantage would be that we can reuse the uio framework for the devices themselves. So an existing app can just program an iommu for DMA and keep using uio for interrupts and access. > We can solve the problem > of multiple devices-per-domain with an ioctl which allows binding one > uio-device to the address-space on another. This would imply switching an iommu domain for a device while it could potentially be doing DMA. No idea whether this can be done in a safe manner. Forcing iommu assignment to be done as a first step seems much saner. > Thats much simpler. > > Joerg So instead of dev = open(); ioctl(dev, ASSIGN, iommu) mmap and if we for ioctl mmap will fail we have dev = open(); if (ndevices > 0) ioctl(devices[0], ASSIGN, dev) mmap And if we forget ioctl we get errors from device. Seems more complicated to me. There will also always exist the confusion: address space for which device are we modifying? With a separate driver for iommu, we can safely check that binding is done correctly. -- MST -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html