• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/pci/

Lines Matching refs:iovad

23 init_iova_domain(struct iova_domain *iovad, unsigned long pfn_32bit)
25 spin_lock_init(&iovad->iova_rbtree_lock);
26 iovad->rbroot = RB_ROOT;
27 iovad->cached32_node = NULL;
28 iovad->dma_32bit_pfn = pfn_32bit;
32 __get_cached_rbnode(struct iova_domain *iovad, unsigned long *limit_pfn)
34 if ((*limit_pfn != iovad->dma_32bit_pfn) ||
35 (iovad->cached32_node == NULL))
36 return rb_last(&iovad->rbroot);
38 struct rb_node *prev_node = rb_prev(iovad->cached32_node);
40 container_of(iovad->cached32_node, struct iova, node);
47 __cached_rbnode_insert_update(struct iova_domain *iovad,
50 if (limit_pfn != iovad->dma_32bit_pfn)
52 iovad->cached32_node = &new->node;
56 __cached_rbnode_delete_update(struct iova_domain *iovad, struct iova *free)
61 if (!iovad->cached32_node)
63 curr = iovad->cached32_node;
67 iovad->cached32_node = rb_next(&free->node);
85 static int __alloc_and_insert_iova_range(struct iova_domain *iovad,
95 spin_lock_irqsave(&iovad->iova_rbtree_lock, flags);
97 curr = __get_cached_rbnode(iovad, &limit_pfn);
123 spin_unlock_irqrestore(&iovad->iova_rbtree_lock, flags);
142 entry = &iovad->rbroot.rb_node;
160 rb_insert_color(&new->node, &iovad->rbroot);
162 __cached_rbnode_insert_update(iovad, saved_pfn, new);
164 spin_unlock_irqrestore(&iovad->iova_rbtree_lock, flags);
193 * @iovad - iova domain in question
203 alloc_iova(struct iova_domain *iovad, unsigned long size,
220 ret = __alloc_and_insert_iova_range(iovad, size, limit_pfn,
233 * @iovad - iova domain in question.
238 struct iova *find_iova(struct iova_domain *iovad, unsigned long pfn)
244 spin_lock_irqsave(&iovad->iova_rbtree_lock, flags);
245 node = iovad->rbroot.rb_node;
251 spin_unlock_irqrestore(&iovad->iova_rbtree_lock, flags);
267 spin_unlock_irqrestore(&iovad->iova_rbtree_lock, flags);
273 * @iovad: iova domain in question.
278 __free_iova(struct iova_domain *iovad, struct iova *iova)
282 spin_lock_irqsave(&iovad->iova_rbtree_lock, flags);
283 __cached_rbnode_delete_update(iovad, iova);
284 rb_erase(&iova->node, &iovad->rbroot);
285 spin_unlock_irqrestore(&iovad->iova_rbtree_lock, flags);
291 * @iovad: - iova domain in question.
297 free_iova(struct iova_domain *iovad, unsigned long pfn)
299 struct iova *iova = find_iova(iovad, pfn);
301 __free_iova(iovad, iova);
307 * @iovad: - iova domain in question.
310 void put_iova_domain(struct iova_domain *iovad)
315 spin_lock_irqsave(&iovad->iova_rbtree_lock, flags);
316 node = rb_first(&iovad->rbroot);
319 rb_erase(node, &iovad->rbroot);
321 node = rb_first(&iovad->rbroot);
323 spin_unlock_irqrestore(&iovad->iova_rbtree_lock, flags);
338 __insert_new_range(struct iova_domain *iovad,
349 iova_insert_rbtree(&iovad->rbroot, iova);
365 * @iovad: - iova domain pointer
372 reserve_iova(struct iova_domain *iovad,
380 spin_lock_irqsave(&iovad->iova_rbtree_lock, flags);
381 for (node = rb_first(&iovad->rbroot); node; node = rb_next(node)) {
397 iova = __insert_new_range(iovad, pfn_lo, pfn_hi);
400 spin_unlock_irqrestore(&iovad->iova_rbtree_lock, flags);