Message ID | 20241216165105.56185-4-dev.jain@arm.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | khugepaged: Asynchronous mTHP collapse | expand |
On Mon, Dec 16, 2024 at 10:20:56PM +0530, Dev Jain wrote: > static int hugepage_vma_revalidate(struct mm_struct *mm, unsigned long address, > bool expect_anon, > - struct vm_area_struct **vmap, > + struct vm_area_struct **vmap, int order, orders are unsigned. i'm going to stop leaving this feedback here, but please fix the entire series for this braino.
On 16/12/2024 16:50, Dev Jain wrote: > Post retaking the lock, it must be checked that the VMA is suitable for our > scan order. Hence, generalize hugepage_vma_revalidate(). > > Signed-off-by: Dev Jain <dev.jain@arm.com> > --- > mm/khugepaged.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/mm/khugepaged.c b/mm/khugepaged.c > index 02cd424b8e48..2f0601795471 100644 > --- a/mm/khugepaged.c > +++ b/mm/khugepaged.c > @@ -918,7 +918,7 @@ static int hpage_collapse_find_target_node(struct collapse_control *cc) > > static int hugepage_vma_revalidate(struct mm_struct *mm, unsigned long address, > bool expect_anon, > - struct vm_area_struct **vmap, > + struct vm_area_struct **vmap, int order, > struct collapse_control *cc) > { > struct vm_area_struct *vma; > @@ -931,9 +931,9 @@ static int hugepage_vma_revalidate(struct mm_struct *mm, unsigned long address, > if (!vma) > return SCAN_VMA_NULL; > > - if (!thp_vma_suitable_order(vma, address, PMD_ORDER)) > + if (!thp_vma_suitable_order(vma, address, order)) > return SCAN_ADDRESS_RANGE; > - if (!thp_vma_allowable_order(vma, vma->vm_flags, tva_flags, PMD_ORDER)) > + if (!thp_vma_allowable_order(vma, vma->vm_flags, tva_flags, order)) > return SCAN_VMA_CHECK; > /* > * Anon VMA expected, the address may be unmapped then > @@ -1134,7 +1134,7 @@ static int collapse_huge_page(struct mm_struct *mm, unsigned long address, > goto out_nolock; > > mmap_read_lock(mm); > - result = hugepage_vma_revalidate(mm, address, true, &vma, cc); > + result = hugepage_vma_revalidate(mm, address, true, &vma, order, cc); some more compilation issues: replace order with HPAGE_PMD_ORDER. > if (result != SCAN_SUCCEED) { > mmap_read_unlock(mm); > goto out_nolock; > @@ -1168,7 +1168,7 @@ static int collapse_huge_page(struct mm_struct *mm, unsigned long address, > * mmap_lock. > */ > mmap_write_lock(mm); > - result = hugepage_vma_revalidate(mm, address, true, &vma, cc); > + result = hugepage_vma_revalidate(mm, address, true, &vma, order, cc); and here. > if (result != SCAN_SUCCEED) > goto out_up_write; > /* check if the pmd is still valid */ > @@ -2776,7 +2776,7 @@ int madvise_collapse(struct vm_area_struct *vma, struct vm_area_struct **prev, > mmap_read_lock(mm); > mmap_locked = true; > result = hugepage_vma_revalidate(mm, addr, false, &vma, > - cc); > + HPAGE_PMD_ORDER, cc); > if (result != SCAN_SUCCEED) { > last_fail = result; > goto out_nolock;
diff --git a/mm/khugepaged.c b/mm/khugepaged.c index 02cd424b8e48..2f0601795471 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -918,7 +918,7 @@ static int hpage_collapse_find_target_node(struct collapse_control *cc) static int hugepage_vma_revalidate(struct mm_struct *mm, unsigned long address, bool expect_anon, - struct vm_area_struct **vmap, + struct vm_area_struct **vmap, int order, struct collapse_control *cc) { struct vm_area_struct *vma; @@ -931,9 +931,9 @@ static int hugepage_vma_revalidate(struct mm_struct *mm, unsigned long address, if (!vma) return SCAN_VMA_NULL; - if (!thp_vma_suitable_order(vma, address, PMD_ORDER)) + if (!thp_vma_suitable_order(vma, address, order)) return SCAN_ADDRESS_RANGE; - if (!thp_vma_allowable_order(vma, vma->vm_flags, tva_flags, PMD_ORDER)) + if (!thp_vma_allowable_order(vma, vma->vm_flags, tva_flags, order)) return SCAN_VMA_CHECK; /* * Anon VMA expected, the address may be unmapped then @@ -1134,7 +1134,7 @@ static int collapse_huge_page(struct mm_struct *mm, unsigned long address, goto out_nolock; mmap_read_lock(mm); - result = hugepage_vma_revalidate(mm, address, true, &vma, cc); + result = hugepage_vma_revalidate(mm, address, true, &vma, order, cc); if (result != SCAN_SUCCEED) { mmap_read_unlock(mm); goto out_nolock; @@ -1168,7 +1168,7 @@ static int collapse_huge_page(struct mm_struct *mm, unsigned long address, * mmap_lock. */ mmap_write_lock(mm); - result = hugepage_vma_revalidate(mm, address, true, &vma, cc); + result = hugepage_vma_revalidate(mm, address, true, &vma, order, cc); if (result != SCAN_SUCCEED) goto out_up_write; /* check if the pmd is still valid */ @@ -2776,7 +2776,7 @@ int madvise_collapse(struct vm_area_struct *vma, struct vm_area_struct **prev, mmap_read_lock(mm); mmap_locked = true; result = hugepage_vma_revalidate(mm, addr, false, &vma, - cc); + HPAGE_PMD_ORDER, cc); if (result != SCAN_SUCCEED) { last_fail = result; goto out_nolock;
Post retaking the lock, it must be checked that the VMA is suitable for our scan order. Hence, generalize hugepage_vma_revalidate(). Signed-off-by: Dev Jain <dev.jain@arm.com> --- mm/khugepaged.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)