diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/mm_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c index e580732a..e7a97207 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c | |||
@@ -111,11 +111,6 @@ static const u64 gmmu_page_offset_masks[gmmu_nr_page_sizes] = { 0xfffLL, | |||
111 | 0x1ffffLL }; | 111 | 0x1ffffLL }; |
112 | static const u64 gmmu_page_masks[gmmu_nr_page_sizes] = { ~0xfffLL, ~0x1ffffLL }; | 112 | static const u64 gmmu_page_masks[gmmu_nr_page_sizes] = { ~0xfffLL, ~0x1ffffLL }; |
113 | 113 | ||
114 | struct gk20a_comptags { | ||
115 | u32 offset; | ||
116 | u32 lines; | ||
117 | }; | ||
118 | |||
119 | struct gk20a_dmabuf_priv { | 114 | struct gk20a_dmabuf_priv { |
120 | struct mutex lock; | 115 | struct mutex lock; |
121 | 116 | ||
@@ -197,10 +192,8 @@ void gk20a_mm_unpin(struct device *dev, struct dma_buf *dmabuf, | |||
197 | mutex_unlock(&priv->lock); | 192 | mutex_unlock(&priv->lock); |
198 | } | 193 | } |
199 | 194 | ||
200 | 195 | void gk20a_get_comptags(struct device *dev, struct dma_buf *dmabuf, | |
201 | static void gk20a_get_comptags(struct device *dev, | 196 | struct gk20a_comptags *comptags) |
202 | struct dma_buf *dmabuf, | ||
203 | struct gk20a_comptags *comptags) | ||
204 | { | 197 | { |
205 | struct gk20a_dmabuf_priv *priv = dma_buf_get_drvdata(dmabuf, dev); | 198 | struct gk20a_dmabuf_priv *priv = dma_buf_get_drvdata(dmabuf, dev); |
206 | 199 | ||
@@ -1539,6 +1532,20 @@ u64 gk20a_gmmu_map(struct vm_gk20a *vm, | |||
1539 | return vaddr; | 1532 | return vaddr; |
1540 | } | 1533 | } |
1541 | 1534 | ||
1535 | dma_addr_t gk20a_mm_gpuva_to_iova(struct vm_gk20a *vm, u64 gpu_vaddr) | ||
1536 | { | ||
1537 | struct mapped_buffer_node *buffer; | ||
1538 | dma_addr_t addr = 0; | ||
1539 | |||
1540 | mutex_lock(&vm->update_gmmu_lock); | ||
1541 | buffer = find_mapped_buffer_locked(&vm->mapped_buffers, gpu_vaddr); | ||
1542 | if (buffer) | ||
1543 | addr = gk20a_mm_iova_addr(buffer->sgt->sgl); | ||
1544 | mutex_unlock(&vm->update_gmmu_lock); | ||
1545 | |||
1546 | return addr; | ||
1547 | } | ||
1548 | |||
1542 | void gk20a_gmmu_unmap(struct vm_gk20a *vm, | 1549 | void gk20a_gmmu_unmap(struct vm_gk20a *vm, |
1543 | u64 vaddr, | 1550 | u64 vaddr, |
1544 | u64 size, | 1551 | u64 size, |