Lines Matching refs:vmap
481 struct vm_area_struct *vmap; in linux_cdev_pager_fault() local
483 vmap = linux_cdev_handle_find(vm_obj->handle); in linux_cdev_pager_fault()
485 MPASS(vmap != NULL); in linux_cdev_pager_fault()
486 MPASS(vmap->vm_private_data == vm_obj->handle); in linux_cdev_pager_fault()
488 if (likely(vmap->vm_ops != NULL && offset < vmap->vm_len)) { in linux_cdev_pager_fault()
489 vm_paddr_t paddr = IDX_TO_OFF(vmap->vm_pfn) + offset; in linux_cdev_pager_fault()
528 struct vm_area_struct *vmap; in linux_cdev_pager_populate() local
534 vmap = linux_cdev_handle_find(vm_obj->handle); in linux_cdev_pager_populate()
535 MPASS(vmap != NULL); in linux_cdev_pager_populate()
536 MPASS(vmap->vm_private_data == vm_obj->handle); in linux_cdev_pager_populate()
540 down_write(&vmap->vm_mm->mmap_sem); in linux_cdev_pager_populate()
541 if (unlikely(vmap->vm_ops == NULL)) { in linux_cdev_pager_populate()
551 vmf.vma = vmap; in linux_cdev_pager_populate()
553 vmap->vm_pfn_count = 0; in linux_cdev_pager_populate()
554 vmap->vm_pfn_pcount = &vmap->vm_pfn_count; in linux_cdev_pager_populate()
555 vmap->vm_obj = vm_obj; in linux_cdev_pager_populate()
557 err = vmap->vm_ops->fault(vmap, &vmf); in linux_cdev_pager_populate()
559 while (vmap->vm_pfn_count == 0 && err == VM_FAULT_NOPAGE) { in linux_cdev_pager_populate()
561 err = vmap->vm_ops->fault(vmap, &vmf); in linux_cdev_pager_populate()
580 *first = vmap->vm_pfn_first; in linux_cdev_pager_populate()
581 *last = *first + vmap->vm_pfn_count - 1; in linux_cdev_pager_populate()
588 up_write(&vmap->vm_mm->mmap_sem); in linux_cdev_pager_populate()
598 linux_cdev_handle_free(struct vm_area_struct *vmap) in linux_cdev_handle_free() argument
601 if (vmap->vm_file != NULL) in linux_cdev_handle_free()
602 fput(vmap->vm_file); in linux_cdev_handle_free()
605 mmput(vmap->vm_mm); in linux_cdev_handle_free()
607 kfree(vmap); in linux_cdev_handle_free()
611 linux_cdev_handle_remove(struct vm_area_struct *vmap) in linux_cdev_handle_remove() argument
614 TAILQ_REMOVE(&linux_vma_head, vmap, vm_entry); in linux_cdev_handle_remove()
621 struct vm_area_struct *vmap; in linux_cdev_handle_find() local
624 TAILQ_FOREACH(vmap, &linux_vma_head, vm_entry) { in linux_cdev_handle_find()
625 if (vmap->vm_private_data == handle) in linux_cdev_handle_find()
629 return (vmap); in linux_cdev_handle_find()
646 struct vm_area_struct *vmap; in linux_cdev_pager_dtor() local
648 vmap = linux_cdev_handle_find(handle); in linux_cdev_pager_dtor()
649 MPASS(vmap != NULL); in linux_cdev_pager_dtor()
655 linux_cdev_handle_remove(vmap); in linux_cdev_pager_dtor()
657 down_write(&vmap->vm_mm->mmap_sem); in linux_cdev_pager_dtor()
658 vm_ops = vmap->vm_ops; in linux_cdev_pager_dtor()
660 vm_ops->close(vmap); in linux_cdev_pager_dtor()
661 up_write(&vmap->vm_mm->mmap_sem); in linux_cdev_pager_dtor()
663 linux_cdev_handle_free(vmap); in linux_cdev_pager_dtor()
1231 struct vm_area_struct *vmap; in linux_file_mmap_single() local
1257 vmap = kzalloc(sizeof(*vmap), GFP_KERNEL); in linux_file_mmap_single()
1258 vmap->vm_start = 0; in linux_file_mmap_single()
1259 vmap->vm_end = size; in linux_file_mmap_single()
1260 vmap->vm_pgoff = *offset / PAGE_SIZE; in linux_file_mmap_single()
1261 vmap->vm_pfn = 0; in linux_file_mmap_single()
1262 vmap->vm_flags = vmap->vm_page_prot = (nprot & VM_PROT_ALL); in linux_file_mmap_single()
1263 vmap->vm_ops = NULL; in linux_file_mmap_single()
1264 vmap->vm_file = get_file(filp); in linux_file_mmap_single()
1265 vmap->vm_mm = mm; in linux_file_mmap_single()
1267 if (unlikely(down_write_killable(&vmap->vm_mm->mmap_sem))) { in linux_file_mmap_single()
1270 error = -OPW(fp, td, fop->mmap(filp, vmap)); in linux_file_mmap_single()
1272 up_write(&vmap->vm_mm->mmap_sem); in linux_file_mmap_single()
1276 linux_cdev_handle_free(vmap); in linux_file_mmap_single()
1280 attr = pgprot2cachemode(vmap->vm_page_prot); in linux_file_mmap_single()
1282 if (vmap->vm_ops != NULL) { in linux_file_mmap_single()
1287 if (vmap->vm_ops->open == NULL || in linux_file_mmap_single()
1288 vmap->vm_ops->close == NULL || in linux_file_mmap_single()
1289 vmap->vm_private_data == NULL) { in linux_file_mmap_single()
1291 linux_cdev_handle_free(vmap); in linux_file_mmap_single()
1295 vm_private_data = vmap->vm_private_data; in linux_file_mmap_single()
1316 TAILQ_INSERT_TAIL(&linux_vma_head, vmap, vm_entry); in linux_file_mmap_single()
1318 vm_no_fault = (vmap->vm_ops->fault == NULL); in linux_file_mmap_single()
1324 linux_cdev_handle_free(vmap); in linux_file_mmap_single()
1345 linux_cdev_handle_remove(vmap); in linux_file_mmap_single()
1347 linux_cdev_handle_free(vmap); in linux_file_mmap_single()
1356 (vm_paddr_t)vmap->vm_pfn << PAGE_SHIFT, vmap->vm_len); in linux_file_mmap_single()
1358 *object = vm_pager_allocate(OBJT_SG, sg, vmap->vm_len, in linux_file_mmap_single()
1361 linux_cdev_handle_free(vmap); in linux_file_mmap_single()
1814 vmap(struct page **pages, unsigned int count, unsigned long flags, int prot) in vmap() function