diff options
author | Hiroshi Doyu <hdoyu@nvidia.com> | 2014-11-19 01:43:08 -0500 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2015-03-18 15:12:21 -0400 |
commit | 75af9eb590ade86fb69c6013d6eb78fa3ddbd654 (patch) | |
tree | 872bf1c730981430c27523d1bfc7b8b1212d8503 /drivers/gpu/nvgpu/gk20a | |
parent | 8af8c35741d2161749d1d0de3208a30793745360 (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')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 16 |
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 | ||
1665 | u64 gk20a_mm_iova_addr(struct gk20a *g, struct scatterlist *sgl) | 1665 | u64 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 | ||
1677 | static int update_gmmu_ptes_locked(struct vm_gk20a *vm, | 1679 | static int update_gmmu_ptes_locked(struct vm_gk20a *vm, |