Lines Matching refs:node

107 				 struct drm_mm_node *node,  in drm_mm_insert_helper()  argument
118 BUG_ON(node->allocated); in drm_mm_insert_helper()
147 node->start = adj_start; in drm_mm_insert_helper()
148 node->size = size; in drm_mm_insert_helper()
149 node->mm = mm; in drm_mm_insert_helper()
150 node->color = color; in drm_mm_insert_helper()
151 node->allocated = 1; in drm_mm_insert_helper()
153 INIT_LIST_HEAD(&node->hole_stack); in drm_mm_insert_helper()
154 list_add(&node->node_list, &hole_node->node_list); in drm_mm_insert_helper()
156 BUG_ON(node->start + node->size > adj_end); in drm_mm_insert_helper()
158 node->hole_follows = 0; in drm_mm_insert_helper()
159 if (__drm_mm_hole_node_start(node) < hole_end) { in drm_mm_insert_helper()
160 list_add(&node->hole_stack, &mm->hole_stack); in drm_mm_insert_helper()
161 node->hole_follows = 1; in drm_mm_insert_helper()
179 int drm_mm_reserve_node(struct drm_mm *mm, struct drm_mm_node *node) in drm_mm_reserve_node() argument
182 u64 end = node->start + node->size; in drm_mm_reserve_node()
186 BUG_ON(node == NULL); in drm_mm_reserve_node()
190 if (hole_start > node->start || hole_end < end) in drm_mm_reserve_node()
193 node->mm = mm; in drm_mm_reserve_node()
194 node->allocated = 1; in drm_mm_reserve_node()
196 INIT_LIST_HEAD(&node->hole_stack); in drm_mm_reserve_node()
197 list_add(&node->node_list, &hole->node_list); in drm_mm_reserve_node()
199 if (node->start == hole_start) { in drm_mm_reserve_node()
204 node->hole_follows = 0; in drm_mm_reserve_node()
206 list_add(&node->hole_stack, &mm->hole_stack); in drm_mm_reserve_node()
207 node->hole_follows = 1; in drm_mm_reserve_node()
232 int drm_mm_insert_node_generic(struct drm_mm *mm, struct drm_mm_node *node, in drm_mm_insert_node_generic() argument
245 drm_mm_insert_helper(hole_node, node, size, alignment, color, aflags); in drm_mm_insert_node_generic()
251 struct drm_mm_node *node, in drm_mm_insert_helper_range() argument
263 BUG_ON(!hole_node->hole_follows || node->allocated); in drm_mm_insert_helper_range()
294 node->start = adj_start; in drm_mm_insert_helper_range()
295 node->size = size; in drm_mm_insert_helper_range()
296 node->mm = mm; in drm_mm_insert_helper_range()
297 node->color = color; in drm_mm_insert_helper_range()
298 node->allocated = 1; in drm_mm_insert_helper_range()
300 INIT_LIST_HEAD(&node->hole_stack); in drm_mm_insert_helper_range()
301 list_add(&node->node_list, &hole_node->node_list); in drm_mm_insert_helper_range()
303 BUG_ON(node->start < start); in drm_mm_insert_helper_range()
304 BUG_ON(node->start < adj_start); in drm_mm_insert_helper_range()
305 BUG_ON(node->start + node->size > adj_end); in drm_mm_insert_helper_range()
306 BUG_ON(node->start + node->size > end); in drm_mm_insert_helper_range()
308 node->hole_follows = 0; in drm_mm_insert_helper_range()
309 if (__drm_mm_hole_node_start(node) < hole_end) { in drm_mm_insert_helper_range()
310 list_add(&node->hole_stack, &mm->hole_stack); in drm_mm_insert_helper_range()
311 node->hole_follows = 1; in drm_mm_insert_helper_range()
332 int drm_mm_insert_node_in_range_generic(struct drm_mm *mm, struct drm_mm_node *node, in drm_mm_insert_node_in_range_generic() argument
347 drm_mm_insert_helper_range(hole_node, node, in drm_mm_insert_node_in_range_generic()
362 void drm_mm_remove_node(struct drm_mm_node *node) in drm_mm_remove_node() argument
364 struct drm_mm *mm = node->mm; in drm_mm_remove_node()
367 if (WARN_ON(!node->allocated)) in drm_mm_remove_node()
370 BUG_ON(node->scanned_block || node->scanned_prev_free in drm_mm_remove_node()
371 || node->scanned_next_free); in drm_mm_remove_node()
374 list_entry(node->node_list.prev, struct drm_mm_node, node_list); in drm_mm_remove_node()
376 if (node->hole_follows) { in drm_mm_remove_node()
377 BUG_ON(__drm_mm_hole_node_start(node) == in drm_mm_remove_node()
378 __drm_mm_hole_node_end(node)); in drm_mm_remove_node()
379 list_del(&node->hole_stack); in drm_mm_remove_node()
381 BUG_ON(__drm_mm_hole_node_start(node) != in drm_mm_remove_node()
382 __drm_mm_hole_node_end(node)); in drm_mm_remove_node()
391 list_del(&node->node_list); in drm_mm_remove_node()
392 node->allocated = 0; in drm_mm_remove_node()
634 bool drm_mm_scan_add_block(struct drm_mm_node *node) in drm_mm_scan_add_block() argument
636 struct drm_mm *mm = node->mm; in drm_mm_scan_add_block()
643 BUG_ON(node->scanned_block); in drm_mm_scan_add_block()
644 node->scanned_block = 1; in drm_mm_scan_add_block()
646 prev_node = list_entry(node->node_list.prev, struct drm_mm_node, in drm_mm_scan_add_block()
649 node->scanned_preceeds_hole = prev_node->hole_follows; in drm_mm_scan_add_block()
651 list_del(&node->node_list); in drm_mm_scan_add_block()
652 node->node_list.prev = &prev_node->node_list; in drm_mm_scan_add_block()
653 node->node_list.next = &mm->prev_scanned_node->node_list; in drm_mm_scan_add_block()
654 mm->prev_scanned_node = node; in drm_mm_scan_add_block()
697 bool drm_mm_scan_remove_block(struct drm_mm_node *node) in drm_mm_scan_remove_block() argument
699 struct drm_mm *mm = node->mm; in drm_mm_scan_remove_block()
704 BUG_ON(!node->scanned_block); in drm_mm_scan_remove_block()
705 node->scanned_block = 0; in drm_mm_scan_remove_block()
707 prev_node = list_entry(node->node_list.prev, struct drm_mm_node, in drm_mm_scan_remove_block()
710 prev_node->hole_follows = node->scanned_preceeds_hole; in drm_mm_scan_remove_block()
711 list_add(&node->node_list, &prev_node->node_list); in drm_mm_scan_remove_block()
713 return (drm_mm_hole_node_end(node) > mm->scan_hit_start && in drm_mm_scan_remove_block()
714 node->start < mm->scan_hit_end); in drm_mm_scan_remove_block()