diff options
author | Konsta Holtta <kholtta@nvidia.com> | 2015-03-05 06:18:30 -0500 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2015-04-04 21:57:23 -0400 |
commit | 5f6cc1289e4282ac034bd97a67a86e05b82915d0 (patch) | |
tree | eb3aafce96250a8a13e297b4c721588f28e743b1 /drivers/gpu/nvgpu/gk20a/cde_gk20a.c | |
parent | 325e0587d9180b05d59869679fc06b0ba979d973 (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.c | 32 |
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 | ||
1059 | exit_unlock: | 1053 | exit_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; |