[PATCH] iommu: omap_iovmm: support non page-aligned buffers in iommu_vmap
From: Ohad Ben-Cohen <hidden>
Date: 2011-08-31 17:16:18
Also in:
linux-omap
Hi Laurent, Joerg, On Wed, Aug 31, 2011 at 7:56 PM, Laurent Pinchart [off-list ref] wrote:
On Wednesday 31 August 2011 15:06:42 Roedel, Joerg wrote:quoted
Do you mean the parts of the pages you map to the device that are not in the requested range (basically everything before offset and all after size)? This issue exists in other iommu drivers as well. It is inherent to how the dma-api is defined and how the iommu hardware works. The dma-api can work on byte granularity while the hardware usually only works on page granularity.True, but if we implement address rounding transparently in the IOMMU layer Ohad's concern can be valid, depending on whether the device is trusted. If we decide to push address rounding to the drivers that decision can be made on a per-device basis. However, drivers are usually not aware of what granularity the IOMMU works on, so that wouldn't be straightforward and clean.
I think the confusion lies in the fact that omap's iovmm should be treated as the DMA-API (which will soon replace it altogether anyway) and not as an IOMMU driver, and in that sense, Laurent's patch does sound reasonable. However, one needs to keep this in mind (e.g. map only page-aligned buffers ?) when using the upcoming iommu-based DMA-API with untrusted devices (such as remote processors running arbitrary code). It is completely wrong to allow these devices access to random physical memory regions. We might want to come up with a way to prevent this from happening... Thanks, Ohad.