Lines Matching refs:uiomr
217 struct usnic_uiom_reg *uiomr, in __usnic_uiom_reg_release() argument
226 npages = PAGE_ALIGN(uiomr->length + uiomr->offset) >> PAGE_SHIFT; in __usnic_uiom_reg_release()
227 vpn_start = (uiomr->va & PAGE_MASK) >> PAGE_SHIFT; in __usnic_uiom_reg_release()
242 usnic_uiom_put_pages(&uiomr->chunk_list, dirty & writable); in __usnic_uiom_reg_release()
247 struct usnic_uiom_reg *uiomr) in usnic_uiom_map_sorted_intervals() argument
257 struct usnic_uiom_pd *pd = uiomr->pd; in usnic_uiom_map_sorted_intervals()
258 long int va = uiomr->va & PAGE_MASK; in usnic_uiom_map_sorted_intervals()
261 flags |= (uiomr->writable) ? IOMMU_WRITE : 0; in usnic_uiom_map_sorted_intervals()
262 chunk = list_first_entry(&uiomr->chunk_list, struct usnic_uiom_chunk, in usnic_uiom_map_sorted_intervals()
340 struct usnic_uiom_reg *uiomr; in usnic_uiom_reg_get() local
361 uiomr = kmalloc(sizeof(*uiomr), GFP_KERNEL); in usnic_uiom_reg_get()
362 if (!uiomr) in usnic_uiom_reg_get()
365 uiomr->va = va_base; in usnic_uiom_reg_get()
366 uiomr->offset = offset; in usnic_uiom_reg_get()
367 uiomr->length = size; in usnic_uiom_reg_get()
368 uiomr->writable = writable; in usnic_uiom_reg_get()
369 uiomr->pd = pd; in usnic_uiom_reg_get()
372 &uiomr->chunk_list); in usnic_uiom_reg_get()
391 err = usnic_uiom_map_sorted_intervals(&sorted_diff_intervals, uiomr); in usnic_uiom_reg_get()
410 return uiomr; in usnic_uiom_reg_get()
417 usnic_uiom_put_pages(&uiomr->chunk_list, 0); in usnic_uiom_reg_get()
420 kfree(uiomr); in usnic_uiom_reg_get()
424 void usnic_uiom_reg_release(struct usnic_uiom_reg *uiomr, int closing) in usnic_uiom_reg_release() argument
429 __usnic_uiom_reg_release(uiomr->pd, uiomr, 1); in usnic_uiom_reg_release()
433 kfree(uiomr); in usnic_uiom_reg_release()
437 diff = PAGE_ALIGN(uiomr->length + uiomr->offset) >> PAGE_SHIFT; in usnic_uiom_reg_release()
449 INIT_WORK(&uiomr->work, usnic_uiom_reg_account); in usnic_uiom_reg_release()
450 uiomr->mm = mm; in usnic_uiom_reg_release()
451 uiomr->diff = diff; in usnic_uiom_reg_release()
453 queue_work(usnic_uiom_wq, &uiomr->work); in usnic_uiom_reg_release()
462 kfree(uiomr); in usnic_uiom_reg_release()