linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Nico Pache <npache@redhat.com>
To: Shivank Garg <shivankg@amd.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	David Hildenbrand <david@kernel.org>,
	 Lorenzo Stoakes <lorenzo.stoakes@oracle.com>,
	Zi Yan <ziy@nvidia.com>,
	 Baolin Wang <baolin.wang@linux.alibaba.com>,
	 "Liam R . Howlett" <Liam.Howlett@oracle.com>,
	Ryan Roberts <ryan.roberts@arm.com>,  Dev Jain <dev.jain@arm.com>,
	Barry Song <baohua@kernel.org>, Lance Yang <lance.yang@linux.dev>,
	 linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH V3 3/5] mm/khugepaged: change collapse_pte_mapped_thp() to return void
Date: Thu, 22 Jan 2026 05:17:01 -0700	[thread overview]
Message-ID: <CAA1CXcD7EmDO1v-x4uw4MHqg0r3hNPPXDZBqDsdXrpD08+xh9A@mail.gmail.com> (raw)
In-Reply-To: <20260118192253.9263-10-shivankg@amd.com>

On Sun, Jan 18, 2026 at 12:28 PM Shivank Garg <shivankg@amd.com> wrote:
>
> The only external caller of collapse_pte_mapped_thp() is uprobe, which
> ignores the return value. Change the external API to return void to
> simplify the interface.
>
> Introduce try_collapse_pte_mapped_thp() for internal use that preserves
> the return value. This prepares for future patch that will convert
> the return type to use enum scan_result.
>
> Suggested-by: David Hildenbrand (Red Hat) <david@kernel.org>
> Acked-by: Lance Yang <lance.yang@linux.dev>
> Acked-by: David Hildenbrand (Red Hat) <david@kernel.org>
> Reviewed-by: Zi Yan <ziy@nvidia.com>
> Signed-off-by: Shivank Garg <shivankg@amd.com>

LGTM!

Tested-by: Nico Pache <npache@redhat.com>
Reviewed-by: Nico Pache <npache@redhat.com>

> ---
>
>  include/linux/khugepaged.h |  9 ++++-----
>  mm/khugepaged.c            | 40 ++++++++++++++++++++++----------------
>  2 files changed, 27 insertions(+), 22 deletions(-)
>
> diff --git a/include/linux/khugepaged.h b/include/linux/khugepaged.h
> index eb1946a70cff..d7a9053ff4fe 100644
> --- a/include/linux/khugepaged.h
> +++ b/include/linux/khugepaged.h
> @@ -17,8 +17,8 @@ extern void khugepaged_enter_vma(struct vm_area_struct *vma,
>                                  vm_flags_t vm_flags);
>  extern void khugepaged_min_free_kbytes_update(void);
>  extern bool current_is_khugepaged(void);
> -extern int collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr,
> -                                  bool install_pmd);
> +void collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr,
> +               bool install_pmd);
>
>  static inline void khugepaged_fork(struct mm_struct *mm, struct mm_struct *oldmm)
>  {
> @@ -42,10 +42,9 @@ static inline void khugepaged_enter_vma(struct vm_area_struct *vma,
>                                         vm_flags_t vm_flags)
>  {
>  }
> -static inline int collapse_pte_mapped_thp(struct mm_struct *mm,
> -                                         unsigned long addr, bool install_pmd)
> +static inline void collapse_pte_mapped_thp(struct mm_struct *mm,
> +               unsigned long addr, bool install_pmd)
>  {
> -       return 0;
>  }
>
>  static inline void khugepaged_min_free_kbytes_update(void)
> diff --git a/mm/khugepaged.c b/mm/khugepaged.c
> index 93ce39915f4a..17f3f0043368 100644
> --- a/mm/khugepaged.c
> +++ b/mm/khugepaged.c
> @@ -1477,20 +1477,8 @@ static int set_huge_pmd(struct vm_area_struct *vma, unsigned long addr,
>         return SCAN_SUCCEED;
>  }
>
> -/**
> - * collapse_pte_mapped_thp - Try to collapse a pte-mapped THP for mm at
> - * address haddr.
> - *
> - * @mm: process address space where collapse happens
> - * @addr: THP collapse address
> - * @install_pmd: If a huge PMD should be installed
> - *
> - * This function checks whether all the PTEs in the PMD are pointing to the
> - * right THP. If so, retract the page table so the THP can refault in with
> - * as pmd-mapped. Possibly install a huge PMD mapping the THP.
> - */
> -int collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr,
> -                           bool install_pmd)
> +static int try_collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr,
> +               bool install_pmd)
>  {
>         int nr_mapped_ptes = 0, result = SCAN_FAIL;
>         unsigned int nr_batch_ptes;
> @@ -1711,6 +1699,24 @@ int collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr,
>         return result;
>  }
>
> +/**
> + * collapse_pte_mapped_thp - Try to collapse a pte-mapped THP for mm at
> + * address haddr.
> + *
> + * @mm: process address space where collapse happens
> + * @addr: THP collapse address
> + * @install_pmd: If a huge PMD should be installed
> + *
> + * This function checks whether all the PTEs in the PMD are pointing to the
> + * right THP. If so, retract the page table so the THP can refault in with
> + * as pmd-mapped. Possibly install a huge PMD mapping the THP.
> + */
> +void collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr,
> +               bool install_pmd)
> +{
> +       try_collapse_pte_mapped_thp(mm, addr, install_pmd);
> +}
> +
>  /* Can we retract page tables for this file-backed VMA? */
>  static bool file_backed_vma_is_retractable(struct vm_area_struct *vma)
>  {
> @@ -2227,7 +2233,7 @@ static int collapse_file(struct mm_struct *mm, unsigned long addr,
>
>         /*
>          * Remove pte page tables, so we can re-fault the page as huge.
> -        * If MADV_COLLAPSE, adjust result to call collapse_pte_mapped_thp().
> +        * If MADV_COLLAPSE, adjust result to call try_collapse_pte_mapped_thp().
>          */
>         retract_page_tables(mapping, start);
>         if (cc && !cc->is_khugepaged)
> @@ -2480,7 +2486,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, int *result,
>                                         mmap_read_lock(mm);
>                                         if (hpage_collapse_test_exit_or_disable(mm))
>                                                 goto breakouterloop;
> -                                       *result = collapse_pte_mapped_thp(mm,
> +                                       *result = try_collapse_pte_mapped_thp(mm,
>                                                 khugepaged_scan.address, false);
>                                         if (*result == SCAN_PMD_MAPPED)
>                                                 *result = SCAN_SUCCEED;
> @@ -2845,7 +2851,7 @@ int madvise_collapse(struct vm_area_struct *vma, unsigned long start,
>                 case SCAN_PTE_MAPPED_HUGEPAGE:
>                         BUG_ON(mmap_locked);
>                         mmap_read_lock(mm);
> -                       result = collapse_pte_mapped_thp(mm, addr, true);
> +                       result = try_collapse_pte_mapped_thp(mm, addr, true);
>                         mmap_read_unlock(mm);
>                         goto handle_result;
>                 /* Whitelisted set of results where continuing OK */
> --
> 2.43.0
>



  reply	other threads:[~2026-01-22 12:17 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-18 19:22 [PATCH V3 0/5] mm/khugepaged: cleanups and scan limit fix Shivank Garg
2026-01-18 19:22 ` [PATCH V3 1/5] mm/khugepaged: remove unnecessary goto 'skip' label Shivank Garg
2026-01-22  7:04   ` Dev Jain
2026-01-22 11:56   ` Nico Pache
2026-01-18 19:22 ` [PATCH V3 2/5] mm/khugepaged: count small VMAs towards scan limit Shivank Garg
2026-01-22  7:32   ` Dev Jain
2026-01-22  8:44     ` Lance Yang
2026-01-22 12:26       ` Garg, Shivank
2026-01-23 10:42         ` Garg, Shivank
2026-01-23 15:37           ` Andrew Morton
2026-01-23 20:07             ` Garg, Shivank
2026-01-18 19:22 ` [PATCH V3 3/5] mm/khugepaged: change collapse_pte_mapped_thp() to return void Shivank Garg
2026-01-22 12:17   ` Nico Pache [this message]
2026-01-18 19:22 ` [PATCH V3 4/5] mm/khugepaged: use enum scan_result for result variables and return types Shivank Garg
2026-01-19 10:24   ` David Hildenbrand (Red Hat)
2026-01-22  9:19   ` Dev Jain
2026-01-22 12:14   ` Nico Pache
2026-01-18 19:23 ` [PATCH V3 5/5] mm/khugepaged: make khugepaged_collapse_control static Shivank Garg
2026-01-22  9:28   ` Dev Jain
2026-01-23  7:48     ` Dev Jain
2026-01-23  9:33       ` Garg, Shivank
2026-01-24  1:21         ` Andrew Morton
2026-01-24  3:02           ` Andrew Morton
2026-01-24  9:02             ` Lorenzo Stoakes
2026-01-24  9:01         ` Lorenzo Stoakes
2026-01-24 10:54           ` Dev Jain
2026-01-24 11:40             ` Lorenzo Stoakes
2026-01-24 11:56               ` Dev Jain
2026-01-24 18:37               ` Garg, Shivank
2026-01-18 20:34 ` [PATCH V3 0/5] mm/khugepaged: cleanups and scan limit fix Andrew Morton
2026-01-19  0:17   ` Zi Yan
2026-01-19  5:50   ` Garg, Shivank

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAA1CXcD7EmDO1v-x4uw4MHqg0r3hNPPXDZBqDsdXrpD08+xh9A@mail.gmail.com \
    --to=npache@redhat.com \
    --cc=Liam.Howlett@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=baohua@kernel.org \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=david@kernel.org \
    --cc=dev.jain@arm.com \
    --cc=lance.yang@linux.dev \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lorenzo.stoakes@oracle.com \
    --cc=ryan.roberts@arm.com \
    --cc=shivankg@amd.com \
    --cc=ziy@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox