summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
diff options
context:
space:
mode:
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,