From ce3c30f14f1eed9ace2028b48c7e8f6cdd6b65cb Mon Sep 17 00:00:00 2001 From: Deepak Nibade Date: Fri, 31 Mar 2017 12:16:33 +0530 Subject: 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 instead of linux APIs Jira NVGPU-13 Change-Id: Id96ba76e20fa9ecad016cd5d5a6a7d40579a70f2 Signed-off-by: Deepak Nibade Reviewed-on: http://git-master/r/1453043 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/gk20a/mm_gk20a.h | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'drivers/gpu/nvgpu/gk20a/mm_gk20a.h') 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 @@ #include #include +#include #ifdef CONFIG_ARM64 #define outer_flush_range(a, b) @@ -196,7 +197,7 @@ struct priv_cmd_entry { struct mapped_buffer_node { struct vm_gk20a *vm; - struct rb_node node; + struct nvgpu_rbtree_node node; struct list_head unmap_list; struct nvgpu_list_node va_buffers_list; struct vm_reserved_va_node *va_node; @@ -231,6 +232,13 @@ mapped_buffer_node_from_va_buffers_list(struct nvgpu_list_node *node) ((uintptr_t)node - offsetof(struct mapped_buffer_node, va_buffers_list)); }; +static inline struct mapped_buffer_node * +mapped_buffer_from_rbtree_node(struct nvgpu_rbtree_node *node) +{ + return (struct mapped_buffer_node *) + ((uintptr_t)node - offsetof(struct mapped_buffer_node, node)); +}; + struct vm_reserved_va_node { struct nvgpu_list_node reserved_va_list; struct nvgpu_list_node va_buffers_list; @@ -306,7 +314,7 @@ struct vm_gk20a { struct nvgpu_allocator user; struct nvgpu_allocator user_lp; - struct rb_root mapped_buffers; + struct nvgpu_rbtree_node *mapped_buffers; struct nvgpu_list_node reserved_va_list; -- cgit v1.2.2