Lines Matching refs:addr

100 static int slice_area_is_free(struct mm_struct *mm, unsigned long addr,  in slice_area_is_free()  argument
105 if ((mm->task_size - len) < addr) in slice_area_is_free()
107 vma = find_vma(mm, addr); in slice_area_is_free()
108 return (!vma || (addr + len) <= vma->vm_start); in slice_area_is_free()
247 static bool slice_scan_available(unsigned long addr, in slice_scan_available() argument
253 if (addr < SLICE_LOW_TOP) { in slice_scan_available()
254 slice = GET_LOW_SLICE_INDEX(addr); in slice_scan_available()
258 slice = GET_HIGH_SLICE_INDEX(addr); in slice_scan_available()
271 unsigned long addr, found, next_end; in slice_find_area_bottomup() local
279 addr = TASK_UNMAPPED_BASE; in slice_find_area_bottomup()
280 while (addr < TASK_SIZE) { in slice_find_area_bottomup()
281 info.low_limit = addr; in slice_find_area_bottomup()
282 if (!slice_scan_available(addr, available, 1, &addr)) in slice_find_area_bottomup()
292 if (addr >= TASK_SIZE) in slice_find_area_bottomup()
293 addr = TASK_SIZE; in slice_find_area_bottomup()
294 else if (slice_scan_available(addr, available, 1, &next_end)) { in slice_find_area_bottomup()
295 addr = next_end; in slice_find_area_bottomup()
298 info.high_limit = addr; in slice_find_area_bottomup()
314 unsigned long addr, found, prev; in slice_find_area_topdown() local
322 addr = mm->mmap_base; in slice_find_area_topdown()
323 while (addr > PAGE_SIZE) { in slice_find_area_topdown()
324 info.high_limit = addr; in slice_find_area_topdown()
325 if (!slice_scan_available(addr - 1, available, 0, &addr)) in slice_find_area_topdown()
335 if (addr < PAGE_SIZE) in slice_find_area_topdown()
336 addr = PAGE_SIZE; in slice_find_area_topdown()
337 else if (slice_scan_available(addr - 1, available, 0, &prev)) { in slice_find_area_topdown()
338 addr = prev; in slice_find_area_topdown()
341 info.low_limit = addr; in slice_find_area_topdown()
384 unsigned long slice_get_unmapped_area(unsigned long addr, unsigned long len, in slice_get_unmapped_area() argument
402 addr, len, flags, topdown); in slice_get_unmapped_area()
408 if (fixed && (addr & ((1ul << pshift) - 1))) in slice_get_unmapped_area()
410 if (fixed && addr > (mm->task_size - len)) in slice_get_unmapped_area()
414 if (!fixed && addr) { in slice_get_unmapped_area()
415 addr = _ALIGN_UP(addr, 1ul << pshift); in slice_get_unmapped_area()
416 slice_dbg(" aligned addr=%lx\n", addr); in slice_get_unmapped_area()
418 if (addr > mm->task_size - len || in slice_get_unmapped_area()
419 !slice_area_is_free(mm, addr, len)) in slice_get_unmapped_area()
420 addr = 0; in slice_get_unmapped_area()
458 if (addr != 0 || fixed) { in slice_get_unmapped_area()
460 mask = slice_range_to_mask(addr, len); in slice_get_unmapped_area()
468 return addr; in slice_get_unmapped_area()
491 if ((addr != 0 || fixed) && slice_check_fit(mask, potential_mask)) { in slice_get_unmapped_area()
505 if (addr) { in slice_get_unmapped_area()
506 addr = slice_find_area(mm, len, good_mask, psize, topdown); in slice_get_unmapped_area()
507 if (addr != -ENOMEM) { in slice_get_unmapped_area()
508 slice_dbg(" found area at 0x%lx\n", addr); in slice_get_unmapped_area()
509 return addr; in slice_get_unmapped_area()
516 addr = slice_find_area(mm, len, potential_mask, psize, topdown); in slice_get_unmapped_area()
519 if (addr == -ENOMEM && psize == MMU_PAGE_64K) { in slice_get_unmapped_area()
522 addr = slice_find_area(mm, len, potential_mask, psize, in slice_get_unmapped_area()
527 if (addr == -ENOMEM) in slice_get_unmapped_area()
530 mask = slice_range_to_mask(addr, len); in slice_get_unmapped_area()
531 slice_dbg(" found potential area at 0x%lx\n", addr); in slice_get_unmapped_area()
542 return addr; in slice_get_unmapped_area()
548 unsigned long addr, in arch_get_unmapped_area() argument
553 return slice_get_unmapped_area(addr, len, flags, in arch_get_unmapped_area()
567 unsigned int get_slice_psize(struct mm_struct *mm, unsigned long addr) in get_slice_psize() argument
572 if (addr < SLICE_LOW_TOP) { in get_slice_psize()
575 index = GET_LOW_SLICE_INDEX(addr); in get_slice_psize()
579 index = GET_HIGH_SLICE_INDEX(addr); in get_slice_psize()
676 int is_hugepage_only_range(struct mm_struct *mm, unsigned long addr, in is_hugepage_only_range() argument
682 mask = slice_range_to_mask(addr, len); in is_hugepage_only_range()
695 mm, addr, len); in is_hugepage_only_range()