Lines Matching +full:vm +full:- +full:map
1 /*-
43 #include <vm/vm.h>
44 #include <vm/pmap.h>
45 #include <vm/vm_param.h>
46 #include <vm/vm_kern.h>
47 #include <vm/vm_object.h>
48 #include <vm/vm_map.h>
49 #include <vm/vm_page.h>
50 #include <vm/vm_pageout.h>
51 #include <vm/vm_pager.h>
52 #include <vm/vm_radix.h>
53 #include <vm/vm_reserv.h>
54 #include <vm/vm_extern.h>
56 #include <vm/uma.h>
57 #include <vm/uma_int.h>
67 #include <linux/io-mapping.h>
78 si->totalram = physmem; in si_meminfo()
79 si->freeram = vm_free_count(); in si_meminfo()
80 si->totalhigh = 0; in si_meminfo()
81 si->freehigh = 0; in si_meminfo()
82 si->mem_unit = PAGE_SIZE; in si_meminfo()
89 if (page->object != kernel_object) { in linux_page_address()
95 IDX_TO_OFF(page->pindex))); in linux_page_address()
211 linux_get_user_pages_internal(vm_map_t map, unsigned long start, int nr_pages, in linux_get_user_pages_internal() argument
220 count = vm_fault_quick_hold_pages(map, start, len, prot, pages, nr_pages); in linux_get_user_pages_internal()
221 return (count == -1 ? -EFAULT : nr_pages); in linux_get_user_pages_internal()
228 vm_map_t map; in __get_user_pages_fast() local
239 map = &curthread->td_proc->p_vmspace->vm_map; in __get_user_pages_fast()
241 if (!vm_map_range_valid(map, start, end)) in __get_user_pages_fast()
242 return (-EINVAL); in __get_user_pages_fast()
246 *mp = pmap_extract_and_hold(map->pmap, va, prot); in __get_user_pages_fast()
251 (*mp)->dirty != VM_PAGE_BITS_ALL) { in __get_user_pages_fast()
272 vm_map_t map; in get_user_pages_remote() local
274 map = &task->task_thread->td_proc->p_vmspace->vm_map; in get_user_pages_remote()
275 return (linux_get_user_pages_internal(map, start, nr_pages, in get_user_pages_remote()
283 vm_map_t map; in lkpi_get_user_pages() local
285 map = &curthread->td_proc->p_vmspace->vm_map; in lkpi_get_user_pages()
286 return (linux_get_user_pages_internal(map, start, nr_pages, in lkpi_get_user_pages()
300 vm_object_t vm_obj = vma->vm_obj; in lkpi_vmf_insert_pfn_prot_locked()
306 pindex = OFF_TO_IDX(addr - vma->vm_start); in lkpi_vmf_insert_pfn_prot_locked()
307 if (vma->vm_pfn_count == 0) in lkpi_vmf_insert_pfn_prot_locked()
308 vma->vm_pfn_first = pindex; in lkpi_vmf_insert_pfn_prot_locked()
309 MPASS(pindex <= OFF_TO_IDX(vma->vm_end)); in lkpi_vmf_insert_pfn_prot_locked()
317 if (page->object != NULL) { in lkpi_vmf_insert_pfn_prot_locked()
318 tmp_obj = page->object; in lkpi_vmf_insert_pfn_prot_locked()
322 if (page->object == tmp_obj && in lkpi_vmf_insert_pfn_prot_locked()
324 KASSERT(page->object == tmp_obj, in lkpi_vmf_insert_pfn_prot_locked()
326 KASSERT((page->oflags & VPO_UNMANAGED) == 0, in lkpi_vmf_insert_pfn_prot_locked()
350 vma->vm_pfn_count++; in lkpi_vmf_insert_pfn_prot_locked()
363 vm_obj = vma->vm_obj; in lkpi_remap_pfn_range()
381 err = -EFAULT; in lkpi_remap_pfn_range()
391 (pfn - start_pfn) << PAGE_SHIFT); in lkpi_remap_pfn_range()
406 prot = cachemode2protval(iomap->attr); in lkpi_io_mapping_map_user()
444 mrdesc->mr_base = base; in lkpi_arch_phys_wc_add()
445 mrdesc->mr_len = size; in lkpi_arch_phys_wc_add()
446 mrdesc->mr_flags = MDF_WRITECOMBINE; in lkpi_arch_phys_wc_add()
447 strlcpy(mrdesc->mr_owner, "drm", sizeof(mrdesc->mr_owner)); in lkpi_arch_phys_wc_add()
461 "Failed to add WC MTRR for [%p-%p]: %d; " in lkpi_arch_phys_wc_add()
463 (void *)base, (void *)(base + size - 1), error); in lkpi_arch_phys_wc_add()
465 pr_warn("Successfully added WC MTRR for [%p-%p]\n", in lkpi_arch_phys_wc_add()
466 (void *)base, (void *)(base + size - 1)); in lkpi_arch_phys_wc_add()
468 return (error != 0 ? -error : id + __MTRR_ID_BASE); in lkpi_arch_phys_wc_add()
485 mrdesc = idr_find(&mtrr_idr, reg - __MTRR_ID_BASE); in lkpi_arch_phys_wc_del()
487 idr_remove(&mtrr_idr, reg - __MTRR_ID_BASE); in lkpi_arch_phys_wc_del()
496 * We only support up-to 1 single page as fragment size and we will
498 * but the only known consumer (mt76) is either asking for a half-page
514 pages = alloc_pages(gfp, flsl(howmany(fragsz, PAGE_SIZE) - 1)); in linuxkpi_page_frag_alloc()
517 pfc->va = linux_page_address(pages); in linuxkpi_page_frag_alloc()
520 pfc->pagecnt_bias = 0; in linuxkpi_page_frag_alloc()
522 return (pfc->va); in linuxkpi_page_frag_alloc()