diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2017-03-31 02:46:33 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-04-06 13:57:28 -0400 |
commit | ce3c30f14f1eed9ace2028b48c7e8f6cdd6b65cb (patch) | |
tree | f4fcc21aeccd99aa56d19ca67fdbee38dc4e311a /drivers/gpu/nvgpu/gk20a/mm_gk20a.h | |
parent | 6dda47a114d1ecbef4f5fa77e8100d795ee23ff1 (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.h | 12 |
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 | ||
197 | struct mapped_buffer_node { | 198 | struct 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 | ||
235 | static inline struct mapped_buffer_node * | ||
236 | mapped_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 | |||
234 | struct vm_reserved_va_node { | 242 | struct 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 | ||