Lines 513-519
unsigned long arch_get_unmapped_area(str
Link Here
|
513 |
vma = find_vma(mm, addr); |
513 |
vma = find_vma(mm, addr); |
514 |
if (((TASK_SIZE - len) >= addr) |
514 |
if (((TASK_SIZE - len) >= addr) |
515 |
&& (!vma || (addr+len) <= vma->vm_start) |
515 |
&& (!vma || (addr+len) <= vma->vm_start) |
516 |
&& !is_hugepage_only_range(addr,len)) |
516 |
&& !is_hugepage_only_range(mm, addr,len)) |
517 |
return addr; |
517 |
return addr; |
518 |
} |
518 |
} |
519 |
start_addr = addr = mm->free_area_cache; |
519 |
start_addr = addr = mm->free_area_cache; |
Lines 523-529
full_search:
Link Here
|
523 |
while (TASK_SIZE - len >= addr) { |
523 |
while (TASK_SIZE - len >= addr) { |
524 |
BUG_ON(vma && (addr >= vma->vm_end)); |
524 |
BUG_ON(vma && (addr >= vma->vm_end)); |
525 |
|
525 |
|
526 |
if (touches_hugepage_low_range(addr, len)) { |
526 |
if (touches_hugepage_low_range(mm, addr, len)) { |
527 |
addr = ALIGN(addr+1, 1<<SID_SHIFT); |
527 |
addr = ALIGN(addr+1, 1<<SID_SHIFT); |
528 |
vma = find_vma(mm, addr); |
528 |
vma = find_vma(mm, addr); |
529 |
continue; |
529 |
continue; |
Lines 584-590
arch_get_unmapped_area_topdown(struct fi
Link Here
|
584 |
vma = find_vma(mm, addr); |
584 |
vma = find_vma(mm, addr); |
585 |
if (TASK_SIZE - len >= addr && |
585 |
if (TASK_SIZE - len >= addr && |
586 |
(!vma || addr + len <= vma->vm_start) |
586 |
(!vma || addr + len <= vma->vm_start) |
587 |
&& !is_hugepage_only_range(addr,len)) |
587 |
&& !is_hugepage_only_range(mm, addr,len)) |
588 |
return addr; |
588 |
return addr; |
589 |
} |
589 |
} |
590 |
|
590 |
|
Lines 597-603
try_again:
Link Here
|
597 |
addr = (mm->free_area_cache - len) & PAGE_MASK; |
597 |
addr = (mm->free_area_cache - len) & PAGE_MASK; |
598 |
do { |
598 |
do { |
599 |
hugepage_recheck: |
599 |
hugepage_recheck: |
600 |
if (touches_hugepage_low_range(addr, len)) { |
600 |
if (touches_hugepage_low_range(mm, addr, len)) { |
601 |
addr = (addr & ((~0) << SID_SHIFT)) - len; |
601 |
addr = (addr & ((~0) << SID_SHIFT)) - len; |
602 |
goto hugepage_recheck; |
602 |
goto hugepage_recheck; |
603 |
} else if (touches_hugepage_high_range(addr, len)) { |
603 |
} else if (touches_hugepage_high_range(addr, len)) { |