On 1/4/21 12:16 AM, Li Xinhai wrote: > The current code would unnecessarily expand the address range. Consider > one example, (start, end) = (1G-2M, 3G+2M), and (vm_start, vm_end) = > (1G-4M, 3G+4M), the expected adjustment should be keep (1G-2M, 3G+2M) > without expand. But the current result will be (1G-4M, 3G+4M). Actually, > the range (1G-4M, 1G) and (3G, 3G+4M) would never been involved in pmd > sharing. > > After this patch, we will check that the vma span at least one PUD > aligned size and the start,end range overlap the aligned range of vma. > > With above example, the aligned vma range is (1G, 3G), so if (start, end) > range is within (1G-4M, 1G), or within (3G, 3G+4M), then no adjustment > to both start and end. Otherwise, we will have chance to adjust start > downwards or end upwards without exceeding (vm_start, vm_end). > > Fixes: 75802ca66354 ("mm/hugetlb: fix calculation of adjust_range_if_pmd_sharing_possible") > Suggested-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx> > Cc: Mike Kravetz <mike.kravetz@xxxxxxxxxx> > Cc: Peter Xu <peterx@xxxxxxxxxx> > Signed-off-by: Li Xinhai <lixinhai.lxh@xxxxxxxxx> > --- Thanks again. Comments and discussion in previous thread. Reviewed-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx> -- Mike Kravetz