summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/mm_gk20a.h
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2017-03-31 02:46:33 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-04-06 13:57:28 -0400
commitce3c30f14f1eed9ace2028b48c7e8f6cdd6b65cb (patch)
treef4fcc21aeccd99aa56d19ca67fdbee38dc4e311a /drivers/gpu/nvgpu/gk20a/mm_gk20a.h
parent6dda47a114d1ecbef4f5fa77e8100d795ee23ff1 (diff)
gpu: nvgpu: use nvgpu rbtree to store mapped buffers
Use nvgpu rbtree instead of linux rbtree to store mapped buffers for each VM Move to use "struct nvgpu_rbtree_node" instead of "struct rb_node" And similarly use rbtree APIs from <nvgpu/rbtree.h> instead of linux APIs Jira NVGPU-13 Change-Id: Id96ba76e20fa9ecad016cd5d5a6a7d40579a70f2 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/1453043 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/mm_gk20a.h')
-rw-r--r--drivers/gpu/nvgpu/gk20a/mm_gk20a.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.h b/drivers/gpu/nvgpu/gk20a/mm_gk20a.h
index a16ab588..b425ec5c 100644
--- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.h
@@ -26,6 +26,7 @@
26 26
27#include <nvgpu/allocator.h> 27#include <nvgpu/allocator.h>
28#include <nvgpu/list.h> 28#include <nvgpu/list.h>
29#include <nvgpu/rbtree.h>
29 30
30#ifdef CONFIG_ARM64 31#ifdef CONFIG_ARM64
31#define outer_flush_range(a, b) 32#define outer_flush_range(a, b)
@@ -196,7 +197,7 @@ struct priv_cmd_entry {
196 197
197struct mapped_buffer_node { 198struct mapped_buffer_node {
198 struct vm_gk20a *vm; 199 struct vm_gk20a *vm;
199 struct rb_node node; 200 struct nvgpu_rbtree_node node;
200 struct list_head unmap_list; 201 struct list_head unmap_list;
201 struct nvgpu_list_node va_buffers_list; 202 struct nvgpu_list_node va_buffers_list;
202 struct vm_reserved_va_node *va_node; 203 struct vm_reserved_va_node *va_node;
@@ -231,6 +232,13 @@ mapped_buffer_node_from_va_buffers_list(struct nvgpu_list_node *node)
231 ((uintptr_t)node - offsetof(struct mapped_buffer_node, va_buffers_list)); 232 ((uintptr_t)node - offsetof(struct mapped_buffer_node, va_buffers_list));
232}; 233};
233 234
235static inline struct mapped_buffer_node *
236mapped_buffer_from_rbtree_node(struct nvgpu_rbtree_node *node)
237{
238 return (struct mapped_buffer_node *)
239 ((uintptr_t)node - offsetof(struct mapped_buffer_node, node));
240};
241
234struct vm_reserved_va_node { 242struct vm_reserved_va_node {
235 struct nvgpu_list_node reserved_va_list; 243 struct nvgpu_list_node reserved_va_list;
236 struct nvgpu_list_node va_buffers_list; 244 struct nvgpu_list_node va_buffers_list;
@@ -306,7 +314,7 @@ struct vm_gk20a {
306 struct nvgpu_allocator user; 314 struct nvgpu_allocator user;
307 struct nvgpu_allocator user_lp; 315 struct nvgpu_allocator user_lp;
308 316
309 struct rb_root mapped_buffers; 317 struct nvgpu_rbtree_node *mapped_buffers;
310 318
311 struct nvgpu_list_node reserved_va_list; 319 struct nvgpu_list_node reserved_va_list;
312 320