Lines Matching defs:node

104 static bool sdma_rb_filter(struct mmu_rb_node *node, unsigned long addr,
1305 static void free_system_node(struct sdma_mmu_node *node)
1307 if (node->npages) {
1308 unpin_vector_pages(mm_from_sdma_node(node), node->pages, 0,
1309 node->npages);
1310 atomic_sub(node->npages, &node->pq->n_locked);
1312 kfree(node);
1344 struct sdma_mmu_node *node, int npages)
1364 SDMA_DBG(req, "Acquire user pages start_address %lx node->npages %u npages %u",
1365 start_address, node->npages, npages);
1375 unpin_vector_pages(current->mm, pages, node->npages, pinned);
1379 node->rb.addr = start_address;
1380 node->rb.len = length;
1381 node->pages = pages;
1382 node->npages = npages;
1401 struct sdma_mmu_node *node;
1404 node = kzalloc(sizeof(*node), GFP_KERNEL);
1405 if (!node)
1409 kref_init(&node->rb.refcount);
1412 kref_get(&node->rb.refcount);
1414 node->pq = pq;
1415 ret = pin_system_pages(req, start, len, node, PFN_DOWN(len));
1417 ret = hfi1_mmu_rb_insert(pq->handler, &node->rb);
1419 free_system_node(node);
1421 *node_p = node;
1426 kfree(node);
1450 struct sdma_mmu_node *node =
1454 SDMA_DBG(req, "node %p start %llx end %llu", node, start, end);
1455 if (!node) {
1468 if (node->rb.addr <= start) {
1473 *node_p = node;
1477 SDMA_DBG(req, "prepend: node->rb.addr %lx, node->rb.refcount %d",
1478 node->rb.addr, kref_read(&node->rb.refcount));
1479 prepend_len = node->rb.addr - start;
1482 * This node will not be returned, instead a new node
1485 kref_put(&node->rb.refcount, hfi1_mmu_rb_release);
1487 /* Prepend a node to cover the beginning of the allocation */
1499 struct mmu_rb_node *node = ctx;
1501 kref_get(&node->refcount);
1506 struct sdma_mmu_node *node = ctx;
1508 kref_put(&node->rb.refcount, hfi1_mmu_rb_release);
1660 static bool sdma_rb_filter(struct mmu_rb_node *node, unsigned long addr,
1663 return (bool)(node->addr == addr);
1667 * Return 1 to remove the node from the rb tree and call the remove op.
1674 struct sdma_mmu_node *node =
1678 /* this node will be evicted, add its pages to our count */
1679 evict_data->cleared += node->npages;
1685 return 1; /* remove this node */
1690 struct sdma_mmu_node *node =
1693 free_system_node(node);