• Home
  • Raw
  • Download

Lines Matching refs:node

84 	struct drm_mm_node *node;  in drm_mm_pre_get()  local
89 node = kzalloc(sizeof(*node), GFP_KERNEL); in drm_mm_pre_get()
92 if (unlikely(node == NULL)) { in drm_mm_pre_get()
98 list_add_tail(&node->node_list, &mm->unused_nodes); in drm_mm_pre_get()
106 struct drm_mm_node *node, in drm_mm_insert_helper() argument
116 BUG_ON(node->allocated); in drm_mm_insert_helper()
132 node->start = adj_start; in drm_mm_insert_helper()
133 node->size = size; in drm_mm_insert_helper()
134 node->mm = mm; in drm_mm_insert_helper()
135 node->color = color; in drm_mm_insert_helper()
136 node->allocated = 1; in drm_mm_insert_helper()
138 INIT_LIST_HEAD(&node->hole_stack); in drm_mm_insert_helper()
139 list_add(&node->node_list, &hole_node->node_list); in drm_mm_insert_helper()
141 BUG_ON(node->start + node->size > adj_end); in drm_mm_insert_helper()
143 node->hole_follows = 0; in drm_mm_insert_helper()
144 if (__drm_mm_hole_node_start(node) < hole_end) { in drm_mm_insert_helper()
145 list_add(&node->hole_stack, &mm->hole_stack); in drm_mm_insert_helper()
146 node->hole_follows = 1; in drm_mm_insert_helper()
155 struct drm_mm_node *hole, *node; in drm_mm_create_block() local
164 node = drm_mm_kmalloc(mm, atomic); in drm_mm_create_block()
165 if (unlikely(node == NULL)) in drm_mm_create_block()
168 node->start = start; in drm_mm_create_block()
169 node->size = size; in drm_mm_create_block()
170 node->mm = mm; in drm_mm_create_block()
171 node->allocated = 1; in drm_mm_create_block()
173 INIT_LIST_HEAD(&node->hole_stack); in drm_mm_create_block()
174 list_add(&node->node_list, &hole->node_list); in drm_mm_create_block()
181 node->hole_follows = 0; in drm_mm_create_block()
183 list_add(&node->hole_stack, &mm->hole_stack); in drm_mm_create_block()
184 node->hole_follows = 1; in drm_mm_create_block()
187 return node; in drm_mm_create_block()
201 struct drm_mm_node *node; in drm_mm_get_block_generic() local
203 node = drm_mm_kmalloc(hole_node->mm, atomic); in drm_mm_get_block_generic()
204 if (unlikely(node == NULL)) in drm_mm_get_block_generic()
207 drm_mm_insert_helper(hole_node, node, size, alignment, color); in drm_mm_get_block_generic()
209 return node; in drm_mm_get_block_generic()
218 int drm_mm_insert_node_generic(struct drm_mm *mm, struct drm_mm_node *node, in drm_mm_insert_node_generic() argument
229 drm_mm_insert_helper(hole_node, node, size, alignment, color); in drm_mm_insert_node_generic()
234 int drm_mm_insert_node(struct drm_mm *mm, struct drm_mm_node *node, in drm_mm_insert_node() argument
237 return drm_mm_insert_node_generic(mm, node, size, alignment, 0); in drm_mm_insert_node()
242 struct drm_mm_node *node, in drm_mm_insert_helper_range() argument
253 BUG_ON(!hole_node->hole_follows || node->allocated); in drm_mm_insert_helper_range()
274 node->start = adj_start; in drm_mm_insert_helper_range()
275 node->size = size; in drm_mm_insert_helper_range()
276 node->mm = mm; in drm_mm_insert_helper_range()
277 node->color = color; in drm_mm_insert_helper_range()
278 node->allocated = 1; in drm_mm_insert_helper_range()
280 INIT_LIST_HEAD(&node->hole_stack); in drm_mm_insert_helper_range()
281 list_add(&node->node_list, &hole_node->node_list); in drm_mm_insert_helper_range()
283 BUG_ON(node->start + node->size > adj_end); in drm_mm_insert_helper_range()
284 BUG_ON(node->start + node->size > end); in drm_mm_insert_helper_range()
286 node->hole_follows = 0; in drm_mm_insert_helper_range()
287 if (__drm_mm_hole_node_start(node) < hole_end) { in drm_mm_insert_helper_range()
288 list_add(&node->hole_stack, &mm->hole_stack); in drm_mm_insert_helper_range()
289 node->hole_follows = 1; in drm_mm_insert_helper_range()
301 struct drm_mm_node *node; in drm_mm_get_block_range_generic() local
303 node = drm_mm_kmalloc(hole_node->mm, atomic); in drm_mm_get_block_range_generic()
304 if (unlikely(node == NULL)) in drm_mm_get_block_range_generic()
307 drm_mm_insert_helper_range(hole_node, node, size, alignment, color, in drm_mm_get_block_range_generic()
310 return node; in drm_mm_get_block_range_generic()
319 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
331 drm_mm_insert_helper_range(hole_node, node, in drm_mm_insert_node_in_range_generic()
338 int drm_mm_insert_node_in_range(struct drm_mm *mm, struct drm_mm_node *node, in drm_mm_insert_node_in_range() argument
342 return drm_mm_insert_node_in_range_generic(mm, node, size, alignment, 0, start, end); in drm_mm_insert_node_in_range()
349 void drm_mm_remove_node(struct drm_mm_node *node) in drm_mm_remove_node() argument
351 struct drm_mm *mm = node->mm; in drm_mm_remove_node()
354 BUG_ON(node->scanned_block || node->scanned_prev_free in drm_mm_remove_node()
355 || node->scanned_next_free); in drm_mm_remove_node()
358 list_entry(node->node_list.prev, struct drm_mm_node, node_list); in drm_mm_remove_node()
360 if (node->hole_follows) { in drm_mm_remove_node()
361 BUG_ON(__drm_mm_hole_node_start(node) == in drm_mm_remove_node()
362 __drm_mm_hole_node_end(node)); in drm_mm_remove_node()
363 list_del(&node->hole_stack); in drm_mm_remove_node()
365 BUG_ON(__drm_mm_hole_node_start(node) != in drm_mm_remove_node()
366 __drm_mm_hole_node_end(node)); in drm_mm_remove_node()
375 list_del(&node->node_list); in drm_mm_remove_node()
376 node->allocated = 0; in drm_mm_remove_node()
385 void drm_mm_put_block(struct drm_mm_node *node) in drm_mm_put_block() argument
388 struct drm_mm *mm = node->mm; in drm_mm_put_block()
390 drm_mm_remove_node(node); in drm_mm_put_block()
394 list_add(&node->node_list, &mm->unused_nodes); in drm_mm_put_block()
397 kfree(node); in drm_mm_put_block()
582 int drm_mm_scan_add_block(struct drm_mm_node *node) in drm_mm_scan_add_block() argument
584 struct drm_mm *mm = node->mm; in drm_mm_scan_add_block()
591 BUG_ON(node->scanned_block); in drm_mm_scan_add_block()
592 node->scanned_block = 1; in drm_mm_scan_add_block()
594 prev_node = list_entry(node->node_list.prev, struct drm_mm_node, in drm_mm_scan_add_block()
597 node->scanned_preceeds_hole = prev_node->hole_follows; in drm_mm_scan_add_block()
599 list_del(&node->node_list); in drm_mm_scan_add_block()
600 node->node_list.prev = &prev_node->node_list; in drm_mm_scan_add_block()
601 node->node_list.next = &mm->prev_scanned_node->node_list; in drm_mm_scan_add_block()
602 mm->prev_scanned_node = node; in drm_mm_scan_add_block()
643 int drm_mm_scan_remove_block(struct drm_mm_node *node) in drm_mm_scan_remove_block() argument
645 struct drm_mm *mm = node->mm; in drm_mm_scan_remove_block()
650 BUG_ON(!node->scanned_block); in drm_mm_scan_remove_block()
651 node->scanned_block = 0; in drm_mm_scan_remove_block()
653 prev_node = list_entry(node->node_list.prev, struct drm_mm_node, in drm_mm_scan_remove_block()
656 prev_node->hole_follows = node->scanned_preceeds_hole; in drm_mm_scan_remove_block()
657 list_add(&node->node_list, &prev_node->node_list); in drm_mm_scan_remove_block()
659 return (drm_mm_hole_node_end(node) > mm->scan_hit_start && in drm_mm_scan_remove_block()
660 node->start < mm->scan_hit_end); in drm_mm_scan_remove_block()