Lines Matching refs:node

23 static bool sdma_rb_filter(struct mmu_rb_node *node, unsigned long addr,
72 static inline struct mm_struct *mm_from_sdma_node(struct sdma_mmu_node *node)
74 return node->rb.handler->mn.mm;
77 static void free_system_node(struct sdma_mmu_node *node)
79 if (node->npages) {
80 unpin_vector_pages(mm_from_sdma_node(node), node->pages, 0,
81 node->npages);
82 atomic_sub(node->npages, &node->pq->n_locked);
84 kfree(node);
116 struct sdma_mmu_node *node, int npages)
136 SDMA_DBG(req, "Acquire user pages start_address %lx node->npages %u npages %u",
137 start_address, node->npages, npages);
147 unpin_vector_pages(current->mm, pages, node->npages, pinned);
151 node->rb.addr = start_address;
152 node->rb.len = length;
153 node->pages = pages;
154 node->npages = npages;
173 struct sdma_mmu_node *node;
176 node = kzalloc(sizeof(*node), GFP_KERNEL);
177 if (!node)
181 kref_init(&node->rb.refcount);
184 kref_get(&node->rb.refcount);
186 node->pq = pq;
187 ret = pin_system_pages(req, start, len, node, PFN_DOWN(len));
189 ret = hfi1_mmu_rb_insert(pq->handler, &node->rb);
191 free_system_node(node);
193 *node_p = node;
198 kfree(node);
221 struct sdma_mmu_node *node =
225 SDMA_DBG(req, "node %p start %llx end %llu", node, start, end);
226 if (!node) {
239 if (node->rb.addr <= start) {
244 *node_p = node;
248 SDMA_DBG(req, "prepend: node->rb.addr %lx, node->rb.refcount %d",
249 node->rb.addr, kref_read(&node->rb.refcount));
250 prepend_len = node->rb.addr - start;
253 * This node will not be returned, instead a new node
256 kref_put(&node->rb.refcount, hfi1_mmu_rb_release);
258 /* Prepend a node to cover the beginning of the allocation */
270 struct mmu_rb_node *node = ctx;
272 kref_get(&node->refcount);
277 struct sdma_mmu_node *node = ctx;
279 kref_put(&node->rb.refcount, hfi1_mmu_rb_release);
440 static bool sdma_rb_filter(struct mmu_rb_node *node, unsigned long addr,
443 return (bool)(node->addr == addr);
447 * Return 1 to remove the node from the rb tree and call the remove op.
454 struct sdma_mmu_node *node =
458 /* this node will be evicted, add its pages to our count */
459 evict_data->cleared += node->npages;
465 return 1; /* remove this node */
470 struct sdma_mmu_node *node =
473 free_system_node(node);