summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
diff options
context:
space:
mode:
authorArto Merilainen <amerilainen@nvidia.com>2014-07-21 03:19:27 -0400
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:10:32 -0400
commit4cb6f6b357963b2eab6a0d02974a6f64c874bd89 (patch)
treebf188670cdb38bf3ca849ca931568125e4681978 /drivers/gpu/nvgpu/gk20a/mm_gk20a.c
parent9b00f352423d4bd90d10cf598e6ce8a750cdd869 (diff)
gpu: nvgpu: Add helpers for backing store access
This patch adds mm helpers to access compression backing store from in-kernel shader. Bug 1409151 Change-Id: Icb4f6dc0b5a35fdb97bc4221ab3657866f775fae Signed-off-by: Arto Merilainen <amerilainen@nvidia.com> Reviewed-on: http://git-master/r/440263 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Lauri Peltonen <lpeltonen@nvidia.com> GVS: Gerrit_Virtual_Submit
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,