Lines Matching refs:vma
50 struct vm_area_struct *vma; member
54 static void drm_vm_open(struct vm_area_struct *vma);
55 static void drm_vm_close(struct vm_area_struct *vma);
58 struct vm_area_struct *vma) in drm_io_prot() argument
60 pgprot_t tmp = vm_get_page_prot(vma->vm_flags); in drm_io_prot()
71 if (efi_range_is_wc(vma->vm_start, vma->vm_end - in drm_io_prot()
72 vma->vm_start)) in drm_io_prot()
82 static pgprot_t drm_dma_prot(uint32_t map_type, struct vm_area_struct *vma) in drm_dma_prot() argument
84 pgprot_t tmp = vm_get_page_prot(vma->vm_flags); in drm_dma_prot()
105 struct vm_area_struct *vma = vmf->vma; in drm_vm_fault() local
106 struct drm_file *priv = vma->vm_file->private_data; in drm_vm_fault()
121 if (drm_ht_find_item(&dev->map_hash, vma->vm_pgoff, &hash)) in drm_vm_fault()
132 resource_size_t offset = vmf->address - vma->vm_start; in drm_vm_fault()
194 struct vm_area_struct *vma = vmf->vma; in drm_vm_shm_fault() local
195 struct drm_local_map *map = vma->vm_private_data; in drm_vm_shm_fault()
203 offset = vmf->address - vma->vm_start; in drm_vm_shm_fault()
223 static void drm_vm_shm_close(struct vm_area_struct *vma) in drm_vm_shm_close() argument
225 struct drm_file *priv = vma->vm_file->private_data; in drm_vm_shm_close()
233 vma->vm_start, vma->vm_end - vma->vm_start); in drm_vm_shm_close()
235 map = vma->vm_private_data; in drm_vm_shm_close()
239 if (pt->vma->vm_private_data == map) in drm_vm_shm_close()
241 if (pt->vma == vma) { in drm_vm_shm_close()
296 struct vm_area_struct *vma = vmf->vma; in drm_vm_dma_fault() local
297 struct drm_file *priv = vma->vm_file->private_data; in drm_vm_dma_fault()
309 offset = vmf->address - vma->vm_start; in drm_vm_dma_fault()
331 struct vm_area_struct *vma = vmf->vma; in drm_vm_sg_fault() local
332 struct drm_local_map *map = vma->vm_private_data; in drm_vm_sg_fault()
333 struct drm_file *priv = vma->vm_file->private_data; in drm_vm_sg_fault()
346 offset = vmf->address - vma->vm_start; in drm_vm_sg_fault()
385 struct vm_area_struct *vma) in drm_vm_open_locked() argument
390 vma->vm_start, vma->vm_end - vma->vm_start); in drm_vm_open_locked()
394 vma_entry->vma = vma; in drm_vm_open_locked()
400 static void drm_vm_open(struct vm_area_struct *vma) in drm_vm_open() argument
402 struct drm_file *priv = vma->vm_file->private_data; in drm_vm_open()
406 drm_vm_open_locked(dev, vma); in drm_vm_open()
411 struct vm_area_struct *vma) in drm_vm_close_locked() argument
416 vma->vm_start, vma->vm_end - vma->vm_start); in drm_vm_close_locked()
419 if (pt->vma == vma) { in drm_vm_close_locked()
435 static void drm_vm_close(struct vm_area_struct *vma) in drm_vm_close() argument
437 struct drm_file *priv = vma->vm_file->private_data; in drm_vm_close()
441 drm_vm_close_locked(dev, vma); in drm_vm_close()
455 static int drm_mmap_dma(struct file *filp, struct vm_area_struct *vma) in drm_mmap_dma() argument
460 unsigned long length = vma->vm_end - vma->vm_start; in drm_mmap_dma()
465 vma->vm_start, vma->vm_end, vma->vm_pgoff); in drm_mmap_dma()
474 vma->vm_flags &= ~(VM_WRITE | VM_MAYWRITE); in drm_mmap_dma()
476 pgprot_val(vma->vm_page_prot) &= ~_PAGE_RW; in drm_mmap_dma()
481 vma->vm_page_prot = in drm_mmap_dma()
484 (__pte(pgprot_val(vma->vm_page_prot))))); in drm_mmap_dma()
488 vma->vm_ops = &drm_vm_dma_ops; in drm_mmap_dma()
490 vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP; in drm_mmap_dma()
492 drm_vm_open_locked(dev, vma); in drm_mmap_dma()
518 static int drm_mmap_locked(struct file *filp, struct vm_area_struct *vma) in drm_mmap_locked() argument
527 vma->vm_start, vma->vm_end, vma->vm_pgoff); in drm_mmap_locked()
536 if (!vma->vm_pgoff in drm_mmap_locked()
542 return drm_mmap_dma(filp, vma); in drm_mmap_locked()
544 if (drm_ht_find_item(&dev->map_hash, vma->vm_pgoff, &hash)) { in drm_mmap_locked()
554 if (map->size < vma->vm_end - vma->vm_start) in drm_mmap_locked()
558 vma->vm_flags &= ~(VM_WRITE | VM_MAYWRITE); in drm_mmap_locked()
560 pgprot_val(vma->vm_page_prot) &= ~_PAGE_RW; in drm_mmap_locked()
565 vma->vm_page_prot = in drm_mmap_locked()
568 (__pte(pgprot_val(vma->vm_page_prot))))); in drm_mmap_locked()
582 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); in drm_mmap_locked()
584 vma->vm_ops = &drm_vm_ops; in drm_mmap_locked()
592 vma->vm_page_prot = drm_io_prot(map, vma); in drm_mmap_locked()
593 if (io_remap_pfn_range(vma, vma->vm_start, in drm_mmap_locked()
595 vma->vm_end - vma->vm_start, in drm_mmap_locked()
596 vma->vm_page_prot)) in drm_mmap_locked()
601 vma->vm_start, vma->vm_end, (unsigned long long)(map->offset + offset)); in drm_mmap_locked()
603 vma->vm_ops = &drm_vm_ops; in drm_mmap_locked()
608 if (remap_pfn_range(vma, vma->vm_start, in drm_mmap_locked()
610 vma->vm_end - vma->vm_start, vma->vm_page_prot)) in drm_mmap_locked()
612 vma->vm_page_prot = drm_dma_prot(map->type, vma); in drm_mmap_locked()
615 vma->vm_ops = &drm_vm_shm_ops; in drm_mmap_locked()
616 vma->vm_private_data = (void *)map; in drm_mmap_locked()
619 vma->vm_ops = &drm_vm_sg_ops; in drm_mmap_locked()
620 vma->vm_private_data = (void *)map; in drm_mmap_locked()
621 vma->vm_page_prot = drm_dma_prot(map->type, vma); in drm_mmap_locked()
626 vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP; in drm_mmap_locked()
628 drm_vm_open_locked(dev, vma); in drm_mmap_locked()
632 int drm_legacy_mmap(struct file *filp, struct vm_area_struct *vma) in drm_legacy_mmap() argument
642 ret = drm_mmap_locked(filp, vma); in drm_legacy_mmap()
651 struct drm_vma_entry *vma, *vma_temp; in drm_legacy_vma_flush() local
654 list_for_each_entry_safe(vma, vma_temp, &dev->vmalist, head) { in drm_legacy_vma_flush()
655 list_del(&vma->head); in drm_legacy_vma_flush()
656 kfree(vma); in drm_legacy_vma_flush()