diff options
Diffstat (limited to 'drivers/gpu/nvgpu/common/mm')
-rw-r--r-- | drivers/gpu/nvgpu/common/mm/nvgpu_mem.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/common/mm/nvgpu_mem.c b/drivers/gpu/nvgpu/common/mm/nvgpu_mem.c index 52d20883..faee482d 100644 --- a/drivers/gpu/nvgpu/common/mm/nvgpu_mem.c +++ b/drivers/gpu/nvgpu/common/mm/nvgpu_mem.c | |||
@@ -22,6 +22,7 @@ | |||
22 | 22 | ||
23 | #include <nvgpu/kmem.h> | 23 | #include <nvgpu/kmem.h> |
24 | #include <nvgpu/nvgpu_mem.h> | 24 | #include <nvgpu/nvgpu_mem.h> |
25 | #include <nvgpu/dma.h> | ||
25 | 26 | ||
26 | #include "gk20a/gk20a.h" | 27 | #include "gk20a/gk20a.h" |
27 | 28 | ||
@@ -56,3 +57,14 @@ void nvgpu_sgt_free(struct nvgpu_sgt *sgt, struct gk20a *g) | |||
56 | if (sgt && sgt->ops->sgt_free) | 57 | if (sgt && sgt->ops->sgt_free) |
57 | sgt->ops->sgt_free(g, sgt); | 58 | sgt->ops->sgt_free(g, sgt); |
58 | } | 59 | } |
60 | |||
61 | u64 nvgpu_mem_iommu_translate(struct gk20a *g, u64 phys) | ||
62 | { | ||
63 | /* ensure it is not vidmem allocation */ | ||
64 | WARN_ON(is_vidmem_page_alloc(phys)); | ||
65 | |||
66 | if (nvgpu_iommuable(g) && g->ops.mm.get_iommu_bit) | ||
67 | return phys | 1ULL << g->ops.mm.get_iommu_bit(g); | ||
68 | |||
69 | return phys; | ||
70 | } | ||