Hi Kyungmin,
Kyungmin Park kmpark@infradead.org wrote @ Thu, 20 Jun 2013 08:50:14 +0200:
On Thu, Jun 20, 2013 at 2:49 PM, Hiroshi Doyu hdoyu@nvidia.com wrote:
Support read-only mapping via struct dma_attrs.
Signed-off-by: Hiroshi Doyu hdoyu@nvidia.com
drivers/iommu/tegra-smmu.c | 41 +++++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 12 deletions(-)
diff --git a/drivers/iommu/tegra-smmu.c b/drivers/iommu/tegra-smmu.c index fab1f19..3aff4cd 100644 --- a/drivers/iommu/tegra-smmu.c +++ b/drivers/iommu/tegra-smmu.c @@ -862,12 +862,13 @@ static size_t __smmu_iommu_unmap_largepage(struct smmu_as *as, dma_addr_t iova) }
static int __smmu_iommu_map_pfn(struct smmu_as *as, dma_addr_t iova,
unsigned long pfn)
unsigned long pfn, int prot)
Can you find 'prot' is used at other arch? In previous patch, you cast
{amd,intel}_iommu_map() take the IOMMU standard flags below and translate it into each H/W dependent bits.
#define IOMMU_READ (1) #define IOMMU_WRITE (2) #define IOMMU_CACHE (4) /* DMA cache coherency */
The others like OMAP/MSM pass their H/W dependent bits all the way. I think that they don't use IOMMU via DMA mapping API.
it as 'int' but below code cast it as 'struct dma_attr' again. doesn't it better to use 'struct dma_attr' as parameter to avoid double cast? Of course you have to modify existing APIs to use 'struct dma_attr'.
If DMA mapping API is considered as the standard frontend of IOMMU(API), that may be an option.