Thread (89 messages) flat view 89 messages, 12 authors, 2025-09-11

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help