• Home
  • Raw
  • Download

Lines Matching refs:node

106 static noinline void save_stack(struct drm_mm_node *node)  in save_stack()  argument
121 node->stack = depot_save_stack(&trace, GFP_NOWAIT); in save_stack()
126 struct drm_mm_node *node; in show_leaks() local
134 list_for_each_entry(node, drm_mm_nodes(mm), node_list) { in show_leaks()
140 if (!node->stack) { in show_leaks()
142 node->start, node->size); in show_leaks()
146 depot_fetch_stack(node->stack, &trace); in show_leaks()
149 node->start, node->size, buf); in show_leaks()
158 static void save_stack(struct drm_mm_node *node) { } in save_stack() argument
162 #define START(node) ((node)->start) argument
163 #define LAST(node) ((node)->start + (node)->size - 1) argument
178 struct drm_mm_node *node) in drm_mm_interval_tree_add_node() argument
185 node->__subtree_last = LAST(node); in drm_mm_interval_tree_add_node()
191 if (parent->__subtree_last >= node->__subtree_last) in drm_mm_interval_tree_add_node()
194 parent->__subtree_last = node->__subtree_last; in drm_mm_interval_tree_add_node()
209 if (parent->__subtree_last < node->__subtree_last) in drm_mm_interval_tree_add_node()
210 parent->__subtree_last = node->__subtree_last; in drm_mm_interval_tree_add_node()
211 if (node->start < parent->start) in drm_mm_interval_tree_add_node()
219 rb_link_node(&node->rb, rb, link); in drm_mm_interval_tree_add_node()
220 rb_insert_augmented_cached(&node->rb, &mm->interval_tree, leftmost, in drm_mm_interval_tree_add_node()
226 u64 x = expr(node); \
234 rb_link_node(&node->member, rb, link); \
235 rb_insert_color(&node->member, &root); \
241 static void add_hole(struct drm_mm_node *node) in add_hole() argument
243 struct drm_mm *mm = node->mm; in add_hole()
245 node->hole_size = in add_hole()
246 __drm_mm_hole_node_end(node) - __drm_mm_hole_node_start(node); in add_hole()
247 DRM_MM_BUG_ON(!drm_mm_hole_follows(node)); in add_hole()
252 list_add(&node->hole_stack, &mm->hole_stack); in add_hole()
255 static void rm_hole(struct drm_mm_node *node) in rm_hole() argument
257 DRM_MM_BUG_ON(!drm_mm_hole_follows(node)); in rm_hole()
259 list_del(&node->hole_stack); in rm_hole()
260 rb_erase(&node->rb_hole_size, &node->mm->holes_size); in rm_hole()
261 rb_erase(&node->rb_hole_addr, &node->mm->holes_addr); in rm_hole()
262 node->hole_size = 0; in rm_hole()
264 DRM_MM_BUG_ON(drm_mm_hole_follows(node)); in rm_hole()
303 struct drm_mm_node *node = NULL; in find_hole() local
309 node = rb_hole_addr_to_node(*link); in find_hole()
310 hole_start = __drm_mm_hole_node_start(node); in find_hole()
313 link = &node->rb_hole_addr.rb_left; in find_hole()
314 else if (addr > hole_start + node->hole_size) in find_hole()
315 link = &node->rb_hole_addr.rb_right; in find_hole()
320 return node; in find_hole()
351 struct drm_mm_node *node, in next_hole() argument
357 return rb_hole_size_to_node(rb_next(&node->rb_hole_size)); in next_hole()
360 return rb_hole_addr_to_node(rb_next(&node->rb_hole_addr)); in next_hole()
363 return rb_hole_addr_to_node(rb_prev(&node->rb_hole_addr)); in next_hole()
366 node = list_next_entry(node, hole_stack); in next_hole()
367 return &node->hole_stack == &mm->hole_stack ? NULL : node; in next_hole()
385 int drm_mm_reserve_node(struct drm_mm *mm, struct drm_mm_node *node) in drm_mm_reserve_node() argument
387 u64 end = node->start + node->size; in drm_mm_reserve_node()
392 end = node->start + node->size; in drm_mm_reserve_node()
393 if (unlikely(end <= node->start)) in drm_mm_reserve_node()
397 hole = find_hole(mm, node->start); in drm_mm_reserve_node()
405 mm->color_adjust(hole, node->color, &adj_start, &adj_end); in drm_mm_reserve_node()
407 if (adj_start > node->start || adj_end < end) in drm_mm_reserve_node()
410 node->mm = mm; in drm_mm_reserve_node()
412 list_add(&node->node_list, &hole->node_list); in drm_mm_reserve_node()
413 drm_mm_interval_tree_add_node(hole, node); in drm_mm_reserve_node()
414 node->allocated = true; in drm_mm_reserve_node()
415 node->hole_size = 0; in drm_mm_reserve_node()
418 if (node->start > hole_start) in drm_mm_reserve_node()
421 add_hole(node); in drm_mm_reserve_node()
423 save_stack(node); in drm_mm_reserve_node()
445 struct drm_mm_node * const node, in drm_mm_insert_node_in_range() argument
512 node->mm = mm; in drm_mm_insert_node_in_range()
513 node->size = size; in drm_mm_insert_node_in_range()
514 node->start = adj_start; in drm_mm_insert_node_in_range()
515 node->color = color; in drm_mm_insert_node_in_range()
516 node->hole_size = 0; in drm_mm_insert_node_in_range()
518 list_add(&node->node_list, &hole->node_list); in drm_mm_insert_node_in_range()
519 drm_mm_interval_tree_add_node(hole, node); in drm_mm_insert_node_in_range()
520 node->allocated = true; in drm_mm_insert_node_in_range()
526 add_hole(node); in drm_mm_insert_node_in_range()
528 save_stack(node); in drm_mm_insert_node_in_range()
544 void drm_mm_remove_node(struct drm_mm_node *node) in drm_mm_remove_node() argument
546 struct drm_mm *mm = node->mm; in drm_mm_remove_node()
549 DRM_MM_BUG_ON(!node->allocated); in drm_mm_remove_node()
550 DRM_MM_BUG_ON(node->scanned_block); in drm_mm_remove_node()
552 prev_node = list_prev_entry(node, node_list); in drm_mm_remove_node()
554 if (drm_mm_hole_follows(node)) in drm_mm_remove_node()
555 rm_hole(node); in drm_mm_remove_node()
557 drm_mm_interval_tree_remove(node, &mm->interval_tree); in drm_mm_remove_node()
558 list_del(&node->node_list); in drm_mm_remove_node()
559 node->allocated = false; in drm_mm_remove_node()
695 struct drm_mm_node *node) in drm_mm_scan_add_block() argument
703 DRM_MM_BUG_ON(node->mm != mm); in drm_mm_scan_add_block()
704 DRM_MM_BUG_ON(!node->allocated); in drm_mm_scan_add_block()
705 DRM_MM_BUG_ON(node->scanned_block); in drm_mm_scan_add_block()
706 node->scanned_block = true; in drm_mm_scan_add_block()
714 hole = list_prev_entry(node, node_list); in drm_mm_scan_add_block()
715 DRM_MM_BUG_ON(list_next_entry(hole, node_list) != node); in drm_mm_scan_add_block()
716 __list_del_entry(&node->node_list); in drm_mm_scan_add_block()
786 struct drm_mm_node *node) in drm_mm_scan_remove_block() argument
790 DRM_MM_BUG_ON(node->mm != scan->mm); in drm_mm_scan_remove_block()
791 DRM_MM_BUG_ON(!node->scanned_block); in drm_mm_scan_remove_block()
792 node->scanned_block = false; in drm_mm_scan_remove_block()
794 DRM_MM_BUG_ON(!node->mm->scan_active); in drm_mm_scan_remove_block()
795 node->mm->scan_active--; in drm_mm_scan_remove_block()
805 prev_node = list_prev_entry(node, node_list); in drm_mm_scan_remove_block()
807 list_next_entry(node, node_list)); in drm_mm_scan_remove_block()
808 list_add(&node->node_list, &prev_node->node_list); in drm_mm_scan_remove_block()
810 return (node->start + node->size > scan->hit_start && in drm_mm_scan_remove_block()
811 node->start < scan->hit_end); in drm_mm_scan_remove_block()