On Wed, Sep 02, 2026 at 04:15:17PM +0100, Lorenzo Stoakes (ARM) wrote:

> Maybe call it disable_khugepaged() to make it explicit that's what this is 
> doing
> rather than eliminating any THP pages in the range?
>
> > +{
>
> Maybe a comment here like:
>
>       /*
>        * Disables khugepaged from collapsing THPs in range, existing THP
>        * pages remain.
>        */
>

Oh and with these changes you can delete all of the:

        /* Prevent khugepaged from collapsing the pages. */

Comments below as they will be implied by the name and explained by the comment
:)

Thanks!

> > +   if (!madvise(addr, len, MADV_NOHUGEPAGE))
> > +           return;
> > +
> > +   ksft_exit_fail_msg("MADV_NOHUGEPAGE failed, err=%d\n", errno);
> > +}
> > +
> >  static void verify_rss_anon_split_huge_page_all_zeroes(char *one_page, int 
> > nr_hpages, size_t len)
> >  {
> >     unsigned long rss_anon_before, rss_anon_after;
> > @@ -180,6 +188,9 @@ static void 
> > verify_rss_anon_split_huge_page_all_zeroes(char *one_page, int nr_hp
> >     if (!rss_anon_before)
> >             ksft_exit_fail_msg("No RssAnon is allocated before split\n");
> >
> > +   /* Prevent khugepaged from collapsing the pages. */
> > +   madv_nohuge(one_page, len);
> > +
> >     /* split all THPs */
> >     write_debugfs(PID_FMT, getpid(), (uint64_t)one_page,
> >                   (uint64_t)one_page + len, 0);
> > @@ -227,6 +238,9 @@ static void split_pmd_thp_to_order(int order)
> >     if (!check_huge_anon(one_page, 4 * pmd_pagesize, 4, pmd_pagesize))
> >             ksft_exit_fail_msg("No THP is allocated\n");
> >
> > +   /* Prevent khugepaged from collapsing the pages. */
> > +   madv_nohuge(one_page, len);
> > +
> >     /* split all THPs */
> >     write_debugfs(PID_FMT, getpid(), (uint64_t)one_page,
> >             (uint64_t)one_page + len, order);
> > @@ -275,6 +289,9 @@ static void split_pte_mapped_thp(void)
> >             goto out;
> >     }
> >
> > +   /* Prevent khugepaged from collapsing the pages. */
> > +   madv_nohuge(thp_area, thp_area_size);
> > +
> >     /*
> >      * To challenge spitting code, we will mremap a single page of each
> >      * THP (page[i] of thp[i]) in the thp_area into page_area. This will
> > @@ -542,6 +559,8 @@ static int create_pagecache_thp_and_fd(const char 
> > *testfile, size_t fd_size,
> >             ksft_test_result_skip("Pagecache folio split skipped\n");
> >             return -2;
> >     }
> > +   /* Prevent khugepaged from collapsing the pages. */
> > +   madv_nohuge(*addr, fd_size);
> >     return 0;
> >  err_out_close:
> >     close(*fd);
> >
> > --
> > 2.43.0
> >
>
> --
> Cheers, Lorenzo

--
Cheers, Lorenzo

Reply via email to