On Thu, Oct 29, 2015 at 09:32:32AM +0200, Shamir Rabinovitch wrote: > For the IB case, setting and tearing DMA mappings for the drivers data buffers > is expensive. But we could for example consider to map all the HW control objects > that validate the HW access to the drivers data buffers as IOMMU protected and so > have IOMMU protection on those critical objects while having fast set-up/tear-down > of driver data buffers. The HW control objects have stable mapping for the lifetime > of the system. So the case of using both types of DMA mappings is still valid. How do you envision this per-mapping by-pass to work? For the DMA-API mappings you have only one device address space. For by-pass to work, you need to map all physical memory of the machine into this space, which leaves the question where you want to put the window for remapping. You surely have to put it after the physical mappings, but any protection will be gone, as the device can access all physical memory. So instead of working around the shortcomings of DMA-API implementations, can you present us some numbers and analysis of how bad the performance impact with an IOMMU is and what causes it? I know that we have lock-contention issues in our IOMMU drivers, which can be fixed. Maybe the performance problems you are seeing can be fixed too, when you give us more details about them. Joerg -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html