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.c25
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 };
112static const u64 gmmu_page_masks[gmmu_nr_page_sizes] = { ~0xfffLL, ~0x1ffffLL }; 112static const u64 gmmu_page_masks[gmmu_nr_page_sizes] = { ~0xfffLL, ~0x1ffffLL };
113 113
114struct gk20a_comptags {
115 u32 offset;
116 u32 lines;
117};
118
119struct gk20a_dmabuf_priv { 114struct 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 195void gk20a_get_comptags(struct device *dev, struct dma_buf *dmabuf,
201static 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
1535dma_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
1542void gk20a_gmmu_unmap(struct vm_gk20a *vm, 1549void gk20a_gmmu_unmap(struct vm_gk20a *vm,
1543 u64 vaddr, 1550 u64 vaddr,
1544 u64 size, 1551 u64 size,