Lines Matching refs:page_cnt
426 static long arena_alloc_pages(struct bpf_arena *arena, long uaddr, long page_cnt, int node_id) in arena_alloc_pages() argument
436 if (page_cnt > page_cnt_max) in arena_alloc_pages()
443 if (pgoff > page_cnt_max - page_cnt) in arena_alloc_pages()
449 pages = kvcalloc(page_cnt, sizeof(struct page *), GFP_KERNEL); in arena_alloc_pages()
456 ret = is_range_tree_set(&arena->rt, pgoff, page_cnt); in arena_alloc_pages()
459 ret = range_tree_clear(&arena->rt, pgoff, page_cnt); in arena_alloc_pages()
461 ret = pgoff = range_tree_find(&arena->rt, page_cnt); in arena_alloc_pages()
463 ret = range_tree_clear(&arena->rt, pgoff, page_cnt); in arena_alloc_pages()
468 ret = bpf_map_alloc_pages(&arena->map, node_id, page_cnt, pages); in arena_alloc_pages()
481 kern_vm_start + uaddr32 + page_cnt * PAGE_SIZE, pages); in arena_alloc_pages()
483 for (i = 0; i < page_cnt; i++) in arena_alloc_pages()
490 range_tree_set(&arena->rt, pgoff, page_cnt); in arena_alloc_pages()
501 static void zap_pages(struct bpf_arena *arena, long uaddr, long page_cnt) in zap_pages() argument
507 PAGE_SIZE * page_cnt, NULL); in zap_pages()
510 static void arena_free_pages(struct bpf_arena *arena, long uaddr, long page_cnt) in arena_free_pages() argument
520 uaddr_end = min(arena->user_vm_end, full_uaddr + (page_cnt << PAGE_SHIFT)); in arena_free_pages()
524 page_cnt = (uaddr_end - full_uaddr) >> PAGE_SHIFT; in arena_free_pages()
530 range_tree_set(&arena->rt, pgoff, page_cnt); in arena_free_pages()
532 if (page_cnt > 1) in arena_free_pages()
534 zap_pages(arena, full_uaddr, page_cnt); in arena_free_pages()
537 for (i = 0; i < page_cnt; i++, kaddr += PAGE_SIZE, full_uaddr += PAGE_SIZE) { in arena_free_pages()
541 if (page_cnt == 1 && page_mapped(page)) /* mapped by some user process */ in arena_free_pages()
555 __bpf_kfunc void *bpf_arena_alloc_pages(void *p__map, void *addr__ign, u32 page_cnt, in bpf_arena_alloc_pages() argument
561 if (map->map_type != BPF_MAP_TYPE_ARENA || flags || !page_cnt) in bpf_arena_alloc_pages()
564 return (void *)arena_alloc_pages(arena, (long)addr__ign, page_cnt, node_id); in bpf_arena_alloc_pages()
567 __bpf_kfunc void bpf_arena_free_pages(void *p__map, void *ptr__ign, u32 page_cnt) in bpf_arena_free_pages() argument
572 if (map->map_type != BPF_MAP_TYPE_ARENA || !page_cnt || !ptr__ign) in bpf_arena_free_pages()
574 arena_free_pages(arena, (long)ptr__ign, page_cnt); in bpf_arena_free_pages()