Lines Matching refs:area

332 	struct vm_struct *area;  in ioremap_page_range()  local
334 area = find_vm_area((void *)addr); in ioremap_page_range()
335 if (!area || !(area->flags & VM_IOREMAP)) { in ioremap_page_range()
339 if (addr != (unsigned long)area->addr || in ioremap_page_range()
340 (void *)end != area->addr + get_vm_area_size(area)) { in ioremap_page_range()
342 addr, end, (long)area->addr, in ioremap_page_range()
343 (long)area->addr + get_vm_area_size(area)); in ioremap_page_range()
666 static int check_sparse_vm_area(struct vm_struct *area, unsigned long start, in check_sparse_vm_area() argument
670 if (WARN_ON_ONCE(area->flags & VM_FLUSH_RESET_PERMS)) in check_sparse_vm_area()
672 if (WARN_ON_ONCE(area->flags & VM_NO_GUARD)) in check_sparse_vm_area()
674 if (WARN_ON_ONCE(!(area->flags & VM_SPARSE))) in check_sparse_vm_area()
678 if (start < (unsigned long)area->addr || in check_sparse_vm_area()
679 (void *)end > area->addr + get_vm_area_size(area)) in check_sparse_vm_area()
691 int vm_area_map_pages(struct vm_struct *area, unsigned long start, in vm_area_map_pages() argument
696 err = check_sparse_vm_area(area, start, end); in vm_area_map_pages()
709 void vm_area_unmap_pages(struct vm_struct *area, unsigned long start, in vm_area_unmap_pages() argument
712 if (check_sparse_vm_area(area, start, end)) in vm_area_unmap_pages()
3115 struct vm_struct *area; in __get_vm_area_node() local
3127 area = kzalloc_node(sizeof(*area), gfp_mask & GFP_RECLAIM_MASK, node); in __get_vm_area_node()
3128 if (unlikely(!area)) in __get_vm_area_node()
3134 area->flags = flags; in __get_vm_area_node()
3135 area->caller = caller; in __get_vm_area_node()
3136 area->requested_size = requested_size; in __get_vm_area_node()
3138 va = alloc_vmap_area(size, align, start, end, node, gfp_mask, 0, area); in __get_vm_area_node()
3140 kfree(area); in __get_vm_area_node()
3153 area->addr = kasan_unpoison_vmalloc(area->addr, requested_size, in __get_vm_area_node()
3156 return area; in __get_vm_area_node()
3250 static inline void set_area_direct_map(const struct vm_struct *area, in set_area_direct_map() argument
3256 for (i = 0; i < area->nr_pages; i++) in set_area_direct_map()
3257 if (page_address(area->pages[i])) in set_area_direct_map()
3258 set_direct_map(area->pages[i]); in set_area_direct_map()
3264 static void vm_reset_perms(struct vm_struct *area) in vm_reset_perms() argument
3267 unsigned int page_order = vm_area_page_order(area); in vm_reset_perms()
3275 for (i = 0; i < area->nr_pages; i += 1U << page_order) { in vm_reset_perms()
3276 unsigned long addr = (unsigned long)page_address(area->pages[i]); in vm_reset_perms()
3293 set_area_direct_map(area, set_direct_map_invalid_noflush); in vm_reset_perms()
3295 set_area_direct_map(area, set_direct_map_default_noflush); in vm_reset_perms()
3440 struct vm_struct *area; in vmap() local
3460 area = get_vm_area_caller(size, flags, __builtin_return_address(0)); in vmap()
3461 if (!area) in vmap()
3464 addr = (unsigned long)area->addr; in vmap()
3467 vunmap(area->addr); in vmap()
3472 area->pages = pages; in vmap()
3473 area->nr_pages = count; in vmap()
3475 return area->addr; in vmap()
3514 struct vm_struct *area; in vmap_pfn() local
3516 area = get_vm_area_caller(count * PAGE_SIZE, VM_IOREMAP, in vmap_pfn()
3518 if (!area) in vmap_pfn()
3520 if (apply_to_page_range(&init_mm, (unsigned long)area->addr, in vmap_pfn()
3522 free_vm_area(area); in vmap_pfn()
3526 flush_cache_vmap((unsigned long)area->addr, in vmap_pfn()
3527 (unsigned long)area->addr + count * PAGE_SIZE); in vmap_pfn()
3529 return area->addr; in vmap_pfn()
3624 static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask, in __vmalloc_area_node() argument
3630 unsigned long addr = (unsigned long)area->addr; in __vmalloc_area_node()
3631 unsigned long size = get_vm_area_size(area); in __vmalloc_area_node()
3645 area->pages = __vmalloc_node_noprof(array_size, 1, nested_gfp, node, in __vmalloc_area_node()
3646 area->caller); in __vmalloc_area_node()
3648 area->pages = kmalloc_node_noprof(array_size, nested_gfp, node); in __vmalloc_area_node()
3651 if (!area->pages) { in __vmalloc_area_node()
3655 free_vm_area(area); in __vmalloc_area_node()
3659 set_vm_area_page_order(area, page_shift - PAGE_SHIFT); in __vmalloc_area_node()
3660 page_order = vm_area_page_order(area); in __vmalloc_area_node()
3670 area->nr_pages = vm_area_alloc_pages((page_order ? in __vmalloc_area_node()
3672 node, page_order, nr_small_pages, area->pages); in __vmalloc_area_node()
3674 atomic_long_add(area->nr_pages, &nr_vmalloc_pages); in __vmalloc_area_node()
3678 for (i = 0; i < area->nr_pages; i++) in __vmalloc_area_node()
3679 mod_memcg_page_state(area->pages[i], MEMCG_VMALLOC, 1); in __vmalloc_area_node()
3686 if (area->nr_pages != nr_small_pages) { in __vmalloc_area_node()
3700 area->nr_pages * PAGE_SIZE); in __vmalloc_area_node()
3714 ret = vmap_pages_range(addr, addr + size, prot, area->pages, in __vmalloc_area_node()
3728 area->nr_pages * PAGE_SIZE); in __vmalloc_area_node()
3732 return area->addr; in __vmalloc_area_node()
3735 vfree(area->addr); in __vmalloc_area_node()
3772 struct vm_struct *area; in __vmalloc_node_range_noprof() local
3805 area = __get_vm_area_node(size, align, shift, VM_ALLOC | in __vmalloc_node_range_noprof()
3808 if (!area) { in __vmalloc_node_range_noprof()
3845 ret = __vmalloc_area_node(area, gfp_mask, prot, shift, node); in __vmalloc_node_range_noprof()
3862 area->addr = kasan_unpoison_vmalloc(area->addr, size, kasan_flags); in __vmalloc_node_range_noprof()
3869 clear_vm_uninitialized_flag(area); in __vmalloc_node_range_noprof()
3872 kmemleak_vmalloc(area, PAGE_ALIGN(size), gfp_mask); in __vmalloc_node_range_noprof()
3874 return area->addr; in __vmalloc_node_range_noprof()
4477 struct vm_struct *area; in remap_vmalloc_range_partial() local
4489 area = find_vm_area(kaddr); in remap_vmalloc_range_partial()
4490 if (!area) in remap_vmalloc_range_partial()
4493 if (!(area->flags & (VM_USERMAP | VM_DMA_COHERENT))) in remap_vmalloc_range_partial()
4497 end_index > get_vm_area_size(area)) in remap_vmalloc_range_partial()
4542 void free_vm_area(struct vm_struct *area) in free_vm_area() argument
4545 ret = remove_vm_area(area->addr); in free_vm_area()
4546 BUG_ON(ret != area); in free_vm_area()
4547 kfree(area); in free_vm_area()
4651 int area, area2, last_area, term_area; in pcpu_get_vm_areas() local
4657 for (last_area = 0, area = 0; area < nr_vms; area++) { in pcpu_get_vm_areas()
4658 start = offsets[area]; in pcpu_get_vm_areas()
4659 end = start + sizes[area]; in pcpu_get_vm_areas()
4662 BUG_ON(!IS_ALIGNED(offsets[area], align)); in pcpu_get_vm_areas()
4663 BUG_ON(!IS_ALIGNED(sizes[area], align)); in pcpu_get_vm_areas()
4667 last_area = area; in pcpu_get_vm_areas()
4669 for (area2 = area + 1; area2 < nr_vms; area2++) { in pcpu_get_vm_areas()
4688 for (area = 0; area < nr_vms; area++) { in pcpu_get_vm_areas()
4689 vas[area] = kmem_cache_zalloc(vmap_area_cachep, GFP_KERNEL); in pcpu_get_vm_areas()
4690 vms[area] = kzalloc(sizeof(struct vm_struct), GFP_KERNEL); in pcpu_get_vm_areas()
4691 if (!vas[area] || !vms[area]) in pcpu_get_vm_areas()
4698 area = term_area = last_area; in pcpu_get_vm_areas()
4699 start = offsets[area]; in pcpu_get_vm_areas()
4700 end = start + sizes[area]; in pcpu_get_vm_areas()
4725 term_area = area; in pcpu_get_vm_areas()
4735 term_area = area; in pcpu_get_vm_areas()
4743 area = (area + nr_vms - 1) % nr_vms; in pcpu_get_vm_areas()
4744 if (area == term_area) in pcpu_get_vm_areas()
4747 start = offsets[area]; in pcpu_get_vm_areas()
4748 end = start + sizes[area]; in pcpu_get_vm_areas()
4753 for (area = 0; area < nr_vms; area++) { in pcpu_get_vm_areas()
4756 start = base + offsets[area]; in pcpu_get_vm_areas()
4757 size = sizes[area]; in pcpu_get_vm_areas()
4771 va = vas[area]; in pcpu_get_vm_areas()
4779 for (area = 0; area < nr_vms; area++) { in pcpu_get_vm_areas()
4780 if (kasan_populate_vmalloc(vas[area]->va_start, sizes[area])) in pcpu_get_vm_areas()
4785 for (area = 0; area < nr_vms; area++) { in pcpu_get_vm_areas()
4786 struct vmap_node *vn = addr_to_node(vas[area]->va_start); in pcpu_get_vm_areas()
4789 insert_vmap_area(vas[area], &vn->busy.root, &vn->busy.head); in pcpu_get_vm_areas()
4790 setup_vmalloc_vm(vms[area], vas[area], VM_ALLOC, in pcpu_get_vm_areas()
4801 for (area = 0; area < nr_vms; area++) in pcpu_get_vm_areas()
4802 vms[area]->addr = kasan_unpoison_vmalloc(vms[area]->addr, in pcpu_get_vm_areas()
4803 vms[area]->size, KASAN_VMALLOC_PROT_NORMAL); in pcpu_get_vm_areas()
4815 while (area--) { in pcpu_get_vm_areas()
4816 orig_start = vas[area]->va_start; in pcpu_get_vm_areas()
4817 orig_end = vas[area]->va_end; in pcpu_get_vm_areas()
4818 va = merge_or_add_vmap_area_augment(vas[area], &free_vmap_area_root, in pcpu_get_vm_areas()
4824 vas[area] = NULL; in pcpu_get_vm_areas()
4834 for (area = 0; area < nr_vms; area++) { in pcpu_get_vm_areas()
4835 if (vas[area]) in pcpu_get_vm_areas()
4838 vas[area] = kmem_cache_zalloc( in pcpu_get_vm_areas()
4840 if (!vas[area]) in pcpu_get_vm_areas()
4848 for (area = 0; area < nr_vms; area++) { in pcpu_get_vm_areas()
4849 if (vas[area]) in pcpu_get_vm_areas()
4850 kmem_cache_free(vmap_area_cachep, vas[area]); in pcpu_get_vm_areas()
4852 kfree(vms[area]); in pcpu_get_vm_areas()
4866 for (area = 0; area < nr_vms; area++) { in pcpu_get_vm_areas()
4867 orig_start = vas[area]->va_start; in pcpu_get_vm_areas()
4868 orig_end = vas[area]->va_end; in pcpu_get_vm_areas()
4869 va = merge_or_add_vmap_area_augment(vas[area], &free_vmap_area_root, in pcpu_get_vm_areas()
4875 vas[area] = NULL; in pcpu_get_vm_areas()
4876 kfree(vms[area]); in pcpu_get_vm_areas()