Re: [PATCH v10 03/13] khugepaged: generalize hugepage_vma_revalidate for mTHP support
From: Wei Yang <hidden>
Date: 2025-08-21 03:41:56
Also in:
linux-doc, linux-mm, lkml
On Wed, Aug 20, 2025 at 09:40:40AM -0600, Nico Pache wrote: [...]
quoted
quoted
if (!thp_vma_suitable_order(vma, address, PMD_ORDER)) return SCAN_ADDRESS_RANGE; - if (!thp_vma_allowable_order(vma, vma->vm_flags, type, PMD_ORDER)) + if (!thp_vma_allowable_orders(vma, vma->vm_flags, type, orders)) return SCAN_VMA_CHECK; /* * Anon VMA expected, the address may be unmapped then@@ -1134,7 +1135,8 @@ 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, cc, + BIT(HPAGE_PMD_ORDER));Shouldn't this be PMD order? Seems equivalent.Yeah i'm actually not sure why we have both... they seem to be the same thing, but perhaps there is some reason for having two...
I am confused with these two, PMD_ORDER above and HPAGE_PMD_ORDER from here. Do we have a guide on when to use which?
quoted
quoted
if (result != SCAN_SUCCEED) { mmap_read_unlock(mm); goto out_nolock;@@ -1168,7 +1170,8 @@ 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, cc, + BIT(HPAGE_PMD_ORDER)); if (result != SCAN_SUCCEED) goto out_up_write; /* check if the pmd is still valid */@@ -2807,7 +2810,7 @@ int madvise_collapse(struct vm_area_struct *vma, unsigned long start, mmap_read_lock(mm); mmap_locked = true; result = hugepage_vma_revalidate(mm, addr, false, &vma, - cc); + cc, BIT(HPAGE_PMD_ORDER)); if (result != SCAN_SUCCEED) { last_fail = result; goto out_nolock; --2.50.1
-- Wei Yang Help you, Help me