Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 360675
b: refs/heads/master
c: f75c28d
h: refs/heads/master
i:
  360673: 7fce08c
  360671: cef124e
v: v3
  • Loading branch information
James Hogan committed Mar 2, 2013
1 parent ef1dbda commit adac3aa
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 43 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c838e72a35e49ea51c39c2c634ece028fa49c565
refs/heads/master: f75c28d896f4dd0064e60bba1e82a4c98908d239
52 changes: 10 additions & 42 deletions trunk/arch/metag/mm/hugetlbpage.c
Original file line number Diff line number Diff line change
Expand Up @@ -192,43 +192,15 @@ hugetlb_get_unmapped_area_existing(unsigned long len)
static unsigned long
hugetlb_get_unmapped_area_new_pmd(unsigned long len)
{
struct mm_struct *mm = current->mm;
struct vm_area_struct *vma;
unsigned long start_addr, addr;

if (ALIGN_HUGEPT(len) > mm->cached_hole_size)
start_addr = mm->free_area_cache;
else
start_addr = TASK_UNMAPPED_BASE;

new_search:
addr = ALIGN_HUGEPT(start_addr);

for (vma = find_vma(mm, addr); ; vma = vma->vm_next) {
if (TASK_SIZE - len < addr) {
/*
* Start a new search - just in case we missed
* some holes.
*/
if (start_addr != TASK_UNMAPPED_BASE) {
start_addr = TASK_UNMAPPED_BASE;
mm->cached_hole_size = 0;
goto new_search;
}
return 0;
}
/* skip ahead if we've aligned right over some vmas */
if (vma && vma->vm_end <= addr)
continue;
if (!vma || ALIGN_HUGEPT(addr + len) <= vma->vm_start) {
#if HPAGE_SHIFT < HUGEPT_SHIFT
if (len & HUGEPT_MASK)
mm->context.part_huge = addr + len;
#endif
return addr;
}
addr = ALIGN_HUGEPT(vma->vm_end);
}
struct vm_unmapped_area_info info;

info.flags = 0;
info.length = len;
info.low_limit = TASK_UNMAPPED_BASE;
info.high_limit = TASK_SIZE;
info.align_mask = PAGE_MASK & HUGEPT_MASK;
info.align_offset = 0;
return vm_unmapped_area(&info);
}

unsigned long
Expand Down Expand Up @@ -266,11 +238,7 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
* Find an unmapped naturally aligned set of 4MB blocks that we can use
* for huge pages.
*/
addr = hugetlb_get_unmapped_area_new_pmd(len);
if (likely(addr))
return addr;

return -EINVAL;
return hugetlb_get_unmapped_area_new_pmd(len);
}

#endif /*HAVE_ARCH_HUGETLB_UNMAPPED_AREA*/
Expand Down

0 comments on commit adac3aa

Please sign in to comment.