summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
diff options
context:
space:
mode:
authorHiroshi Doyu <hdoyu@nvidia.com>2014-11-19 01:43:08 -0500
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:12:21 -0400
commit75af9eb590ade86fb69c6013d6eb78fa3ddbd654 (patch)
tree872bf1c730981430c27523d1bfc7b8b1212d8503 /drivers/gpu/nvgpu/gk20a/mm_gk20a.c
parent8af8c35741d2161749d1d0de3208a30793745360 (diff)
gpu: nvgpu: detect iommu'ability dynamically
A device can be iommu'able whenever it's registered so that this patch detects its iommu'ability dynamically. Bug 1577389 Change-Id: I8ea20e5dd997fc1a399f517c17783323f238ecc3 Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com> Reviewed-on: http://git-master/r/606019 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/mm_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/mm_gk20a.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
index 03a5dabb..9fdbf2b7 100644
--- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
@@ -1664,14 +1664,16 @@ u64 gk20a_mm_smmu_vaddr_translate(struct gk20a *g, dma_addr_t iova)
1664 1664
1665u64 gk20a_mm_iova_addr(struct gk20a *g, struct scatterlist *sgl) 1665u64 gk20a_mm_iova_addr(struct gk20a *g, struct scatterlist *sgl)
1666{ 1666{
1667 u64 result = sg_phys(sgl); 1667 if (!device_is_iommuable(dev_from_gk20a(g)))
1668#ifdef CONFIG_TEGRA_IOMMU_SMMU 1668 return sg_phys(sgl);
1669
1670 if (sg_dma_address(sgl) == 0)
1671 return sg_phys(sgl);
1672
1669 if (sg_dma_address(sgl) == DMA_ERROR_CODE) 1673 if (sg_dma_address(sgl) == DMA_ERROR_CODE)
1670 result = 0; 1674 return 0;
1671 else if (sg_dma_address(sgl)) 1675
1672 result = gk20a_mm_smmu_vaddr_translate(g, sg_dma_address(sgl)); 1676 return gk20a_mm_smmu_vaddr_translate(g, sg_dma_address(sgl));
1673#endif
1674 return result;
1675} 1677}
1676 1678
1677static int update_gmmu_ptes_locked(struct vm_gk20a *vm, 1679static int update_gmmu_ptes_locked(struct vm_gk20a *vm,