summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/common/linux
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/common/linux')
-rw-r--r--drivers/gpu/nvgpu/common/linux/comptags.c25
-rw-r--r--drivers/gpu/nvgpu/common/linux/dmabuf.c4
-rw-r--r--drivers/gpu/nvgpu/common/linux/vm.c3
3 files changed, 18 insertions, 14 deletions
diff --git a/drivers/gpu/nvgpu/common/linux/comptags.c b/drivers/gpu/nvgpu/common/linux/comptags.c
index f55989f7..92e8aa3e 100644
--- a/drivers/gpu/nvgpu/common/linux/comptags.c
+++ b/drivers/gpu/nvgpu/common/linux/comptags.c
@@ -46,7 +46,6 @@ int gk20a_alloc_comptags(struct gk20a *g,
46{ 46{
47 struct gk20a_dmabuf_priv *priv = dma_buf_get_drvdata(buf->dmabuf, 47 struct gk20a_dmabuf_priv *priv = dma_buf_get_drvdata(buf->dmabuf,
48 buf->dev); 48 buf->dev);
49 u32 ctaglines_allocsize;
50 u32 offset; 49 u32 offset;
51 int err; 50 int err;
52 51
@@ -56,18 +55,24 @@ int gk20a_alloc_comptags(struct gk20a *g,
56 if (!lines) 55 if (!lines)
57 return -EINVAL; 56 return -EINVAL;
58 57
59 ctaglines_allocsize = lines;
60
61 /* store the allocator so we can use it when we free the ctags */ 58 /* store the allocator so we can use it when we free the ctags */
62 priv->comptag_allocator = allocator; 59 priv->comptag_allocator = allocator;
63 err = gk20a_comptaglines_alloc(allocator, &offset, 60 err = gk20a_comptaglines_alloc(allocator, &offset, lines);
64 ctaglines_allocsize); 61 if (!err) {
65 if (err) 62 priv->comptags.offset = offset;
66 return err; 63 priv->comptags.lines = lines;
64 } else {
65 priv->comptags.offset = 0;
66 priv->comptags.lines = 0;
67 }
67 68
68 priv->comptags.offset = offset; 69 /*
69 priv->comptags.lines = lines; 70 * We don't report an error here if comptag alloc failed. The
70 priv->comptags.allocated_lines = ctaglines_allocsize; 71 * caller will simply fallback to incompressible kinds. It
72 * would not be safe to re-allocate comptags anyways on
73 * successive calls, as that would break map aliasing.
74 */
75 priv->comptags.allocated = true;
71 76
72 return 0; 77 return 0;
73} 78}
diff --git a/drivers/gpu/nvgpu/common/linux/dmabuf.c b/drivers/gpu/nvgpu/common/linux/dmabuf.c
index 6b44ff55..08cf5f2b 100644
--- a/drivers/gpu/nvgpu/common/linux/dmabuf.c
+++ b/drivers/gpu/nvgpu/common/linux/dmabuf.c
@@ -41,11 +41,11 @@ static void gk20a_mm_delete_priv(void *_priv)
41 41
42 g = priv->g; 42 g = priv->g;
43 43
44 if (priv->comptags.lines) { 44 if (priv->comptags.allocated && priv->comptags.lines) {
45 BUG_ON(!priv->comptag_allocator); 45 BUG_ON(!priv->comptag_allocator);
46 gk20a_comptaglines_free(priv->comptag_allocator, 46 gk20a_comptaglines_free(priv->comptag_allocator,
47 priv->comptags.offset, 47 priv->comptags.offset,
48 priv->comptags.allocated_lines); 48 priv->comptags.lines);
49 } 49 }
50 50
51 /* Free buffer states */ 51 /* Free buffer states */
diff --git a/drivers/gpu/nvgpu/common/linux/vm.c b/drivers/gpu/nvgpu/common/linux/vm.c
index d6d86c94..8e464627 100644
--- a/drivers/gpu/nvgpu/common/linux/vm.c
+++ b/drivers/gpu/nvgpu/common/linux/vm.c
@@ -132,7 +132,7 @@ struct nvgpu_mapped_buf *nvgpu_vm_find_mapping(struct vm_gk20a *vm,
132 nvgpu_log(g, gpu_dbg_map, 132 nvgpu_log(g, gpu_dbg_map,
133 "gv: 0x%04x_%08x + 0x%-7zu " 133 "gv: 0x%04x_%08x + 0x%-7zu "
134 "[dma: 0x%010llx, pa: 0x%010llx] " 134 "[dma: 0x%010llx, pa: 0x%010llx] "
135 "pgsz=%-3dKb as=%-2d ctags=%d start=%d " 135 "pgsz=%-3dKb as=%-2d "
136 "flags=0x%x apt=%s (reused)", 136 "flags=0x%x apt=%s (reused)",
137 u64_hi32(mapped_buffer->addr), u64_lo32(mapped_buffer->addr), 137 u64_hi32(mapped_buffer->addr), u64_lo32(mapped_buffer->addr),
138 os_buf->dmabuf->size, 138 os_buf->dmabuf->size,
@@ -140,7 +140,6 @@ struct nvgpu_mapped_buf *nvgpu_vm_find_mapping(struct vm_gk20a *vm,
140 (u64)sg_phys(mapped_buffer->os_priv.sgt->sgl), 140 (u64)sg_phys(mapped_buffer->os_priv.sgt->sgl),
141 vm->gmmu_page_sizes[mapped_buffer->pgsz_idx] >> 10, 141 vm->gmmu_page_sizes[mapped_buffer->pgsz_idx] >> 10,
142 vm_aspace_id(vm), 142 vm_aspace_id(vm),
143 mapped_buffer->ctag_lines, mapped_buffer->ctag_offset,
144 mapped_buffer->flags, 143 mapped_buffer->flags,
145 nvgpu_aperture_str(gk20a_dmabuf_aperture(g, os_buf->dmabuf))); 144 nvgpu_aperture_str(gk20a_dmabuf_aperture(g, os_buf->dmabuf)));
146 145