On Thu, 8 Mar 2012 18:41:05 +1100 Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote: > Hi Andrew, > > On Wed, 7 Mar 2012 23:32:20 -0800 Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote: > > > > Actually they're different. I reworked the earlier patch as below. > > OK. But some comments. > > > diff -puN arch/x86/mm/hugetlbpage.c~hugetlb-drop-prev_vma-in-hugetlb_get_unmapped_area_topdown arch/x86/mm/hugetlbpage.c > > --- a/arch/x86/mm/hugetlbpage.c~hugetlb-drop-prev_vma-in-hugetlb_get_unmapped_area_topdown > > +++ a/arch/x86/mm/hugetlbpage.c > > @@ -308,7 +308,7 @@ static unsigned long hugetlb_get_unmappe > > { > > struct hstate *h = hstate_file(file); > > struct mm_struct *mm = current->mm; > > - struct vm_area_struct *vma, *prev_vma; > > + struct vm_area_struct *vma; > > You still remove prev_vma ... > > > unsigned long base = mm->mmap_base, addr = addr0; > > unsigned long largest_hole = mm->cached_hole_size; > > int first_time = 1; > > @@ -334,25 +334,16 @@ try_again: > > * i.e. return with success: > > */ > > vma = find_vma(mm, addr); > > - if (!vma) > > - return addr; > > - > > - /* > > - * new region fits between prev_vma->vm_end and > > - * vma->vm_start, use it: > > - */ > > - prev_vma = vma->vm_prev; > > - if (addr + len <= vma->vm_start && > > - (!prev_vma || (addr >= prev_vma->vm_end))) { > > + if (vma) > > + prev_vma = vma->vm_prev; > > But then assign to it ... > > > + if (!vma || addr + len <= vma->vm_start) { > > /* remember the address as a hint for next time */ > > mm->cached_hole_size = largest_hole; > > return (mm->free_area_cache = addr); > > - } else { > > + } else if (mm->free_area_cache == vma->vm_end) { > > /* pull free_area_cache down to the first hole */ > > - if (mm->free_area_cache == vma->vm_end) { > > - mm->free_area_cache = vma->vm_start; > > - mm->cached_hole_size = largest_hole; > > - } > > + mm->free_area_cache = vma->vm_start; > > + mm->cached_hole_size = largest_hole; > > } > > > > /* remember the largest hole we saw so far */ > > But it never gets used. Doh. The author reviewed that for me too! I'll drop it - please rework, retest and resend? -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html