Lines Matching refs:area

2415 	struct vm_struct *area;  in __get_vm_area_node()  local
2427 area = kzalloc_node(sizeof(*area), gfp_mask & GFP_RECLAIM_MASK, node); in __get_vm_area_node()
2428 if (unlikely(!area)) in __get_vm_area_node()
2436 kfree(area); in __get_vm_area_node()
2442 setup_vmalloc_vm(area, va, flags, caller); in __get_vm_area_node()
2444 return area; in __get_vm_area_node()
2537 static inline void set_area_direct_map(const struct vm_struct *area, in set_area_direct_map() argument
2543 for (i = 0; i < area->nr_pages; i++) in set_area_direct_map()
2544 if (page_address(area->pages[i])) in set_area_direct_map()
2545 set_direct_map(area->pages[i]); in set_area_direct_map()
2549 static void vm_remove_mappings(struct vm_struct *area, int deallocate_pages) in vm_remove_mappings() argument
2552 unsigned int page_order = vm_area_page_order(area); in vm_remove_mappings()
2553 int flush_reset = area->flags & VM_FLUSH_RESET_PERMS; in vm_remove_mappings()
2557 remove_vm_area(area->addr); in vm_remove_mappings()
2577 for (i = 0; i < area->nr_pages; i += 1U << page_order) { in vm_remove_mappings()
2578 unsigned long addr = (unsigned long)page_address(area->pages[i]); in vm_remove_mappings()
2594 set_area_direct_map(area, set_direct_map_invalid_noflush); in vm_remove_mappings()
2596 set_area_direct_map(area, set_direct_map_default_noflush); in vm_remove_mappings()
2601 struct vm_struct *area; in __vunmap() local
2610 area = find_vm_area(addr); in __vunmap()
2611 if (unlikely(!area)) { in __vunmap()
2617 debug_check_no_locks_freed(area->addr, get_vm_area_size(area)); in __vunmap()
2618 debug_check_no_obj_freed(area->addr, get_vm_area_size(area)); in __vunmap()
2620 kasan_poison_vmalloc(area->addr, get_vm_area_size(area)); in __vunmap()
2622 vm_remove_mappings(area, deallocate_pages); in __vunmap()
2625 unsigned int page_order = vm_area_page_order(area); in __vunmap()
2628 for (i = 0; i < area->nr_pages; i += 1U << page_order) { in __vunmap()
2629 struct page *page = area->pages[i]; in __vunmap()
2635 atomic_long_sub(area->nr_pages, &nr_vmalloc_pages); in __vunmap()
2637 kvfree(area->pages); in __vunmap()
2640 kfree(area); in __vunmap()
2751 struct vm_struct *area; in vmap() local
2768 area = get_vm_area_caller(size, flags, __builtin_return_address(0)); in vmap()
2769 if (!area) in vmap()
2772 addr = (unsigned long)area->addr; in vmap()
2775 vunmap(area->addr); in vmap()
2780 area->pages = pages; in vmap()
2781 area->nr_pages = count; in vmap()
2783 return area->addr; in vmap()
2816 struct vm_struct *area; in vmap_pfn() local
2818 area = get_vm_area_caller(count * PAGE_SIZE, VM_IOREMAP, in vmap_pfn()
2820 if (!area) in vmap_pfn()
2822 if (apply_to_page_range(&init_mm, (unsigned long)area->addr, in vmap_pfn()
2824 free_vm_area(area); in vmap_pfn()
2827 return area->addr; in vmap_pfn()
2918 static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask, in __vmalloc_area_node() argument
2924 unsigned long addr = (unsigned long)area->addr; in __vmalloc_area_node()
2925 unsigned long size = get_vm_area_size(area); in __vmalloc_area_node()
2937 area->pages = __vmalloc_node(array_size, 1, nested_gfp, node, in __vmalloc_area_node()
2938 area->caller); in __vmalloc_area_node()
2940 area->pages = kmalloc_node(array_size, nested_gfp, node); in __vmalloc_area_node()
2943 if (!area->pages) { in __vmalloc_area_node()
2947 free_vm_area(area); in __vmalloc_area_node()
2951 set_vm_area_page_order(area, page_shift - PAGE_SHIFT); in __vmalloc_area_node()
2952 page_order = vm_area_page_order(area); in __vmalloc_area_node()
2954 area->nr_pages = vm_area_alloc_pages(gfp_mask, node, in __vmalloc_area_node()
2955 page_order, nr_small_pages, area->pages); in __vmalloc_area_node()
2957 atomic_long_add(area->nr_pages, &nr_vmalloc_pages); in __vmalloc_area_node()
2963 if (area->nr_pages != nr_small_pages) { in __vmalloc_area_node()
2966 area->nr_pages * PAGE_SIZE, page_order); in __vmalloc_area_node()
2970 if (vmap_pages_range(addr, addr + size, prot, area->pages, in __vmalloc_area_node()
2974 area->nr_pages * PAGE_SIZE); in __vmalloc_area_node()
2978 return area->addr; in __vmalloc_area_node()
2981 __vfree(area->addr); in __vmalloc_area_node()
3016 struct vm_struct *area; in __vmalloc_node_range() local
3055 area = __get_vm_area_node(real_size, align, shift, VM_ALLOC | in __vmalloc_node_range()
3058 if (!area) { in __vmalloc_node_range()
3065 addr = __vmalloc_area_node(area, gfp_mask, prot, shift, node); in __vmalloc_node_range()
3074 clear_vm_uninitialized_flag(area); in __vmalloc_node_range()
3077 kmemleak_vmalloc(area, size, gfp_mask); in __vmalloc_node_range()
3440 struct vm_struct *area; in remap_vmalloc_range_partial() local
3452 area = find_vm_area(kaddr); in remap_vmalloc_range_partial()
3453 if (!area) in remap_vmalloc_range_partial()
3456 if (!(area->flags & (VM_USERMAP | VM_DMA_COHERENT))) in remap_vmalloc_range_partial()
3460 end_index > get_vm_area_size(area)) in remap_vmalloc_range_partial()
3505 void free_vm_area(struct vm_struct *area) in free_vm_area() argument
3508 ret = remove_vm_area(area->addr); in free_vm_area()
3509 BUG_ON(ret != area); in free_vm_area()
3510 kfree(area); in free_vm_area()
3614 int area, area2, last_area, term_area; in pcpu_get_vm_areas() local
3621 for (last_area = 0, area = 0; area < nr_vms; area++) { in pcpu_get_vm_areas()
3622 start = offsets[area]; in pcpu_get_vm_areas()
3623 end = start + sizes[area]; in pcpu_get_vm_areas()
3626 BUG_ON(!IS_ALIGNED(offsets[area], align)); in pcpu_get_vm_areas()
3627 BUG_ON(!IS_ALIGNED(sizes[area], align)); in pcpu_get_vm_areas()
3631 last_area = area; in pcpu_get_vm_areas()
3633 for (area2 = area + 1; area2 < nr_vms; area2++) { in pcpu_get_vm_areas()
3652 for (area = 0; area < nr_vms; area++) { in pcpu_get_vm_areas()
3653 vas[area] = kmem_cache_zalloc(vmap_area_cachep, GFP_KERNEL); in pcpu_get_vm_areas()
3654 vms[area] = kzalloc(sizeof(struct vm_struct), GFP_KERNEL); in pcpu_get_vm_areas()
3655 if (!vas[area] || !vms[area]) in pcpu_get_vm_areas()
3662 area = term_area = last_area; in pcpu_get_vm_areas()
3663 start = offsets[area]; in pcpu_get_vm_areas()
3664 end = start + sizes[area]; in pcpu_get_vm_areas()
3689 term_area = area; in pcpu_get_vm_areas()
3699 term_area = area; in pcpu_get_vm_areas()
3707 area = (area + nr_vms - 1) % nr_vms; in pcpu_get_vm_areas()
3708 if (area == term_area) in pcpu_get_vm_areas()
3711 start = offsets[area]; in pcpu_get_vm_areas()
3712 end = start + sizes[area]; in pcpu_get_vm_areas()
3717 for (area = 0; area < nr_vms; area++) { in pcpu_get_vm_areas()
3720 start = base + offsets[area]; in pcpu_get_vm_areas()
3721 size = sizes[area]; in pcpu_get_vm_areas()
3738 va = vas[area]; in pcpu_get_vm_areas()
3746 for (area = 0; area < nr_vms; area++) { in pcpu_get_vm_areas()
3747 if (kasan_populate_vmalloc(vas[area]->va_start, sizes[area])) in pcpu_get_vm_areas()
3750 kasan_unpoison_vmalloc((void *)vas[area]->va_start, in pcpu_get_vm_areas()
3751 sizes[area]); in pcpu_get_vm_areas()
3756 for (area = 0; area < nr_vms; area++) { in pcpu_get_vm_areas()
3757 insert_vmap_area(vas[area], &vmap_area_root, &vmap_area_list); in pcpu_get_vm_areas()
3759 setup_vmalloc_vm_locked(vms[area], vas[area], VM_ALLOC, in pcpu_get_vm_areas()
3774 while (area--) { in pcpu_get_vm_areas()
3775 orig_start = vas[area]->va_start; in pcpu_get_vm_areas()
3776 orig_end = vas[area]->va_end; in pcpu_get_vm_areas()
3777 va = merge_or_add_vmap_area_augment(vas[area], &free_vmap_area_root, in pcpu_get_vm_areas()
3782 vas[area] = NULL; in pcpu_get_vm_areas()
3792 for (area = 0; area < nr_vms; area++) { in pcpu_get_vm_areas()
3793 if (vas[area]) in pcpu_get_vm_areas()
3796 vas[area] = kmem_cache_zalloc( in pcpu_get_vm_areas()
3798 if (!vas[area]) in pcpu_get_vm_areas()
3806 for (area = 0; area < nr_vms; area++) { in pcpu_get_vm_areas()
3807 if (vas[area]) in pcpu_get_vm_areas()
3808 kmem_cache_free(vmap_area_cachep, vas[area]); in pcpu_get_vm_areas()
3810 kfree(vms[area]); in pcpu_get_vm_areas()
3824 for (area = 0; area < nr_vms; area++) { in pcpu_get_vm_areas()
3825 orig_start = vas[area]->va_start; in pcpu_get_vm_areas()
3826 orig_end = vas[area]->va_end; in pcpu_get_vm_areas()
3827 va = merge_or_add_vmap_area_augment(vas[area], &free_vmap_area_root, in pcpu_get_vm_areas()
3832 vas[area] = NULL; in pcpu_get_vm_areas()
3833 kfree(vms[area]); in pcpu_get_vm_areas()