From 75af9eb590ade86fb69c6013d6eb78fa3ddbd654 Mon Sep 17 00:00:00 2001 From: Hiroshi Doyu Date: Wed, 19 Nov 2014 08:43:08 +0200 Subject: 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 Reviewed-on: http://git-master/r/606019 Reviewed-by: Terje Bergstrom --- drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'drivers/gpu/nvgpu/gk20a/mm_gk20a.c') 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) u64 gk20a_mm_iova_addr(struct gk20a *g, struct scatterlist *sgl) { - u64 result = sg_phys(sgl); -#ifdef CONFIG_TEGRA_IOMMU_SMMU + if (!device_is_iommuable(dev_from_gk20a(g))) + return sg_phys(sgl); + + if (sg_dma_address(sgl) == 0) + return sg_phys(sgl); + if (sg_dma_address(sgl) == DMA_ERROR_CODE) - result = 0; - else if (sg_dma_address(sgl)) - result = gk20a_mm_smmu_vaddr_translate(g, sg_dma_address(sgl)); -#endif - return result; + return 0; + + return gk20a_mm_smmu_vaddr_translate(g, sg_dma_address(sgl)); } static int update_gmmu_ptes_locked(struct vm_gk20a *vm, -- cgit v1.2.2