• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/infiniband/core/

Lines Matching refs:umem

34  * $Id: umem.c,v 1.1.1.1 2007/10/11 23:31:50 Exp $
43 static void __ib_umem_release(struct ib_device *dev, struct ib_umem *umem, int dirty)
48 list_for_each_entry_safe(chunk, tmp, &umem->chunk_list, list) {
52 if (umem->writable && dirty)
71 struct ib_umem *umem;
85 umem = kmalloc(sizeof *umem, GFP_KERNEL);
86 if (!umem)
89 umem->context = context;
90 umem->length = size;
91 umem->offset = addr & ~PAGE_MASK;
92 umem->page_size = PAGE_SIZE;
100 umem->writable = !!(access & ~IB_ACCESS_REMOTE_READ);
102 INIT_LIST_HEAD(&umem->chunk_list);
106 kfree(umem);
110 npages = PAGE_ALIGN(size + umem->offset) >> PAGE_SHIFT;
128 1, !umem->writable, page_list, NULL);
169 list_add_tail(&chunk->list, &umem->chunk_list);
177 __ib_umem_release(context->device, umem, 0);
178 kfree(umem);
185 return ret < 0 ? ERR_PTR(ret) : umem;
191 struct ib_umem *umem = container_of(work, struct ib_umem, work);
193 down_write(&umem->mm->mmap_sem);
194 umem->mm->locked_vm -= umem->diff;
195 up_write(&umem->mm->mmap_sem);
196 mmput(umem->mm);
197 kfree(umem);
202 * @umem: umem struct to release
204 void ib_umem_release(struct ib_umem *umem)
206 struct ib_ucontext *context = umem->context;
210 __ib_umem_release(umem->context->device, umem, 1);
214 kfree(umem);
218 diff = PAGE_ALIGN(umem->length + umem->offset) >> PAGE_SHIFT;
230 INIT_WORK(&umem->work, ib_umem_account);
231 umem->mm = mm;
232 umem->diff = diff;
234 schedule_work(&umem->work);
243 kfree(umem);
247 int ib_umem_page_count(struct ib_umem *umem)
254 shift = ilog2(umem->page_size);
257 list_for_each_entry(chunk, &umem->chunk_list, list)