Lines Matching refs:uiomr

86 				int dmasync, struct usnic_uiom_reg *uiomr)  in usnic_uiom_get_pages()  argument
88 struct list_head *chunk_list = &uiomr->chunk_list; in usnic_uiom_get_pages()
125 uiomr->owning_mm = mm = current->mm; in usnic_uiom_get_pages()
188 mmgrab(uiomr->owning_mm); in usnic_uiom_get_pages()
215 struct usnic_uiom_reg *uiomr, in __usnic_uiom_reg_release() argument
224 npages = PAGE_ALIGN(uiomr->length + uiomr->offset) >> PAGE_SHIFT; in __usnic_uiom_reg_release()
225 vpn_start = (uiomr->va & PAGE_MASK) >> PAGE_SHIFT; in __usnic_uiom_reg_release()
240 usnic_uiom_put_pages(&uiomr->chunk_list, dirty & writable); in __usnic_uiom_reg_release()
245 struct usnic_uiom_reg *uiomr) in usnic_uiom_map_sorted_intervals() argument
255 struct usnic_uiom_pd *pd = uiomr->pd; in usnic_uiom_map_sorted_intervals()
256 long int va = uiomr->va & PAGE_MASK; in usnic_uiom_map_sorted_intervals()
259 flags |= (uiomr->writable) ? IOMMU_WRITE : 0; in usnic_uiom_map_sorted_intervals()
260 chunk = list_first_entry(&uiomr->chunk_list, struct usnic_uiom_chunk, in usnic_uiom_map_sorted_intervals()
338 struct usnic_uiom_reg *uiomr; in usnic_uiom_reg_get() local
359 uiomr = kmalloc(sizeof(*uiomr), GFP_KERNEL); in usnic_uiom_reg_get()
360 if (!uiomr) in usnic_uiom_reg_get()
363 uiomr->va = va_base; in usnic_uiom_reg_get()
364 uiomr->offset = offset; in usnic_uiom_reg_get()
365 uiomr->length = size; in usnic_uiom_reg_get()
366 uiomr->writable = writable; in usnic_uiom_reg_get()
367 uiomr->pd = pd; in usnic_uiom_reg_get()
370 uiomr); in usnic_uiom_reg_get()
389 err = usnic_uiom_map_sorted_intervals(&sorted_diff_intervals, uiomr); in usnic_uiom_reg_get()
408 return uiomr; in usnic_uiom_reg_get()
415 usnic_uiom_put_pages(&uiomr->chunk_list, 0); in usnic_uiom_reg_get()
417 mmdrop(uiomr->owning_mm); in usnic_uiom_reg_get()
419 kfree(uiomr); in usnic_uiom_reg_get()
423 static void __usnic_uiom_release_tail(struct usnic_uiom_reg *uiomr) in __usnic_uiom_release_tail() argument
425 mmdrop(uiomr->owning_mm); in __usnic_uiom_release_tail()
426 kfree(uiomr); in __usnic_uiom_release_tail()
429 static inline size_t usnic_uiom_num_pages(struct usnic_uiom_reg *uiomr) in usnic_uiom_num_pages() argument
431 return PAGE_ALIGN(uiomr->length + uiomr->offset) >> PAGE_SHIFT; in usnic_uiom_num_pages()
434 void usnic_uiom_reg_release(struct usnic_uiom_reg *uiomr) in usnic_uiom_reg_release() argument
436 __usnic_uiom_reg_release(uiomr->pd, uiomr, 1); in usnic_uiom_reg_release()
438 atomic64_sub(usnic_uiom_num_pages(uiomr), &uiomr->owning_mm->pinned_vm); in usnic_uiom_reg_release()
439 __usnic_uiom_release_tail(uiomr); in usnic_uiom_reg_release()