Lines Matching refs:vma
580 static int uio_find_mem_index(struct vm_area_struct *vma) in uio_find_mem_index() argument
582 struct uio_device *idev = vma->vm_private_data; in uio_find_mem_index()
584 if (vma->vm_pgoff < MAX_UIO_MAPS) { in uio_find_mem_index()
585 if (idev->info->mem[vma->vm_pgoff].size == 0) in uio_find_mem_index()
587 return (int)vma->vm_pgoff; in uio_find_mem_index()
592 static int uio_vma_fault(struct vm_area_struct *vma, struct vm_fault *vmf) in uio_vma_fault() argument
594 struct uio_device *idev = vma->vm_private_data; in uio_vma_fault()
599 int mi = uio_find_mem_index(vma); in uio_vma_fault()
623 static int uio_mmap_logical(struct vm_area_struct *vma) in uio_mmap_logical() argument
625 vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP; in uio_mmap_logical()
626 vma->vm_ops = &uio_logical_vm_ops; in uio_mmap_logical()
636 static int uio_mmap_physical(struct vm_area_struct *vma) in uio_mmap_physical() argument
638 struct uio_device *idev = vma->vm_private_data; in uio_mmap_physical()
639 int mi = uio_find_mem_index(vma); in uio_mmap_physical()
647 if (vma->vm_end - vma->vm_start > mem->size) in uio_mmap_physical()
650 vma->vm_ops = &uio_physical_vm_ops; in uio_mmap_physical()
651 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); in uio_mmap_physical()
662 return remap_pfn_range(vma, in uio_mmap_physical()
663 vma->vm_start, in uio_mmap_physical()
665 vma->vm_end - vma->vm_start, in uio_mmap_physical()
666 vma->vm_page_prot); in uio_mmap_physical()
669 static int uio_mmap(struct file *filep, struct vm_area_struct *vma) in uio_mmap() argument
677 if (vma->vm_end < vma->vm_start) in uio_mmap()
680 vma->vm_private_data = idev; in uio_mmap()
682 mi = uio_find_mem_index(vma); in uio_mmap()
686 requested_pages = vma_pages(vma); in uio_mmap()
693 ret = idev->info->mmap(idev->info, vma); in uio_mmap()
699 return uio_mmap_physical(vma); in uio_mmap()
702 return uio_mmap_logical(vma); in uio_mmap()