summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/cde_gk20a.c
diff options
context:
space:
mode:
authorKonsta Holtta <kholtta@nvidia.com>2015-03-05 06:18:30 -0500
committerDan Willemsen <dwillemsen@nvidia.com>2015-04-04 21:57:23 -0400
commit5f6cc1289e4282ac034bd97a67a86e05b82915d0 (patch)
treeeb3aafce96250a8a13e297b4c721588f28e743b1 /drivers/gpu/nvgpu/gk20a/cde_gk20a.c
parent325e0587d9180b05d59869679fc06b0ba979d973 (diff)
Revert "gpu: nvgpu: cache cde compbits buf mappings"
This reverts commit 9968badd26490a9d399f526fc57a9defd161dd6c. The commit accidentally introduced some memory leaks. Change-Id: I00d8d4452a152a8a2fe2d90fb949cdfee0de4c69 Signed-off-by: Konsta Holtta <kholtta@nvidia.com> Reviewed-on: http://git-master/r/714288 Reviewed-by: Juha Tukkinen <jtukkinen@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/cde_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/cde_gk20a.c32
1 files changed, 14 insertions, 18 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/cde_gk20a.c b/drivers/gpu/nvgpu/gk20a/cde_gk20a.c
index 095f69c7..ea01914c 100644
--- a/drivers/gpu/nvgpu/gk20a/cde_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/cde_gk20a.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Color decompression engine support 2 * Color decompression engine support
3 * 3 *
4 * Copyright (c) 2014-2015, NVIDIA Corporation. All rights reserved. 4 * Copyright (c) 2014, NVIDIA Corporation. All rights reserved.
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify it 6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms and conditions of the GNU General Public License, 7 * under the terms and conditions of the GNU General Public License,
@@ -979,23 +979,17 @@ __releases(&cde_app->mutex)
979 map_size = compbits_buf->size - map_offset; 979 map_size = compbits_buf->size - map_offset;
980 } 980 }
981 981
982 /* map the destination buffer, if not cached yet */ 982 /* map the destination buffer */
983 /* races protected by the cde app mutex above */ 983 get_dma_buf(compbits_buf); /* a ref for gk20a_vm_map */
984 map_vaddr = gk20a_vm_cde_mapped(cde_ctx->vm, compbits_buf); 984 map_vaddr = gk20a_vm_map(cde_ctx->vm, compbits_buf, 0,
985 NVGPU_MAP_BUFFER_FLAGS_CACHEABLE_TRUE,
986 compbits_kind, NULL, true,
987 gk20a_mem_flag_none,
988 map_offset, map_size);
985 if (!map_vaddr) { 989 if (!map_vaddr) {
986 /* take a ref for gk20a_vm_map, pair is in (cached) unmap */ 990 dma_buf_put(compbits_buf);
987 get_dma_buf(compbits_buf); 991 err = -EINVAL;
988 map_vaddr = gk20a_vm_map(cde_ctx->vm, compbits_buf, 0, 992 goto exit_unlock;
989 NVGPU_MAP_BUFFER_FLAGS_CACHEABLE_TRUE,
990 compbits_kind, NULL, true,
991 gk20a_mem_flag_none,
992 map_offset, map_size);
993 if (!map_vaddr) {
994 dma_buf_put(compbits_buf);
995 err = -EINVAL;
996 goto exit_unlock;
997 }
998 gk20a_vm_mark_cde_mapped(cde_ctx->vm, compbits_buf, map_vaddr);
999 } 993 }
1000 994
1001 /* store source buffer compression tags */ 995 /* store source buffer compression tags */
@@ -1058,7 +1052,9 @@ __releases(&cde_app->mutex)
1058 1052
1059exit_unlock: 1053exit_unlock:
1060 1054
1061 /* leave map_vaddr mapped - released when unmapped from userspace */ 1055 /* unmap the buffers - channel holds references to them now */
1056 if (map_vaddr)
1057 gk20a_vm_unmap(cde_ctx->vm, map_vaddr);
1062 1058
1063 mutex_unlock(&g->cde_app.mutex); 1059 mutex_unlock(&g->cde_app.mutex);
1064 return err; 1060 return err;