All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lance Yang <lance.yang@linux.dev>
To: Wei Yang <richard.weiyang@gmail.com>, Breno Leitao <leitao@debian.org>
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>,
	Nico Pache <npache@redhat.com>,
	Ryan Roberts <ryan.roberts@arm.com>, Dev Jain <dev.jain@arm.com>,
	Barry Song <baohua@kernel.org>,
	Vlastimil Babka <vbabka@kernel.org>,
	Suren Baghdasaryan <surenb@google.com>,
	Michal Hocko <mhocko@suse.com>,
	Brendan Jackman <jackmanb@google.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Mike Rapoport <rppt@kernel.org>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	usamaarif642@gmail.com, kas@kernel.org, kernel-team@meta.com,
	"Lorenzo Stoakes (Oracle)" <ljs@kernel.org>
Subject: Re: [PATCH v5 2/4] mm: huge_memory: refactor anon_enabled_store() with change_anon_orders()
Date: Wed, 11 Mar 2026 12:52:02 +0800	[thread overview]
Message-ID: <be82a89f-aef2-4fd9-9304-a5c9b4e3e125@linux.dev> (raw)
In-Reply-To: <20260311031229.mloqvlmmqipr7k2h@master>



On 2026/3/11 11:12, Wei Yang wrote:
> On Tue, Mar 10, 2026 at 10:57:08AM -0700, Breno Leitao wrote:
>> Consolidate the repeated spin_lock/set_bit/clear_bit pattern in
>> anon_enabled_store() into a new change_anon_orders() helper that
>> loops over an orders[] array, setting the bit for the selected mode
>> and clearing the others.
>>
>> Introduce enum anon_enabled_mode and anon_enabled_mode_strings[]
>> for the per-order anon THP setting.
>>
>> Use sysfs_match_string() with the anon_enabled_mode_strings[] table
>> to replace the if/else chain of sysfs_streq() calls.
>>
>> The helper uses test_and_set_bit()/test_and_clear_bit() to track
>> whether the state actually changed, so start_stop_khugepaged() is
>> only called when needed. When the mode is unchanged,
>> set_recommended_min_free_kbytes() is called directly to preserve
>> the watermark recalculation behavior of the original code.
>>
>> Signed-off-by: Breno Leitao <leitao@debian.org>
>> Reviewed-by: Lorenzo Stoakes (Oracle) <ljs@kernel.org>
>> ---
>> mm/huge_memory.c | 84 +++++++++++++++++++++++++++++++++++---------------------
>> 1 file changed, 52 insertions(+), 32 deletions(-)
>>
>> diff --git a/mm/huge_memory.c b/mm/huge_memory.c
>> index 8e2746ea74adf..e19dda5aaf195 100644
>> --- a/mm/huge_memory.c
>> +++ b/mm/huge_memory.c
>> @@ -316,6 +316,20 @@ static ssize_t enabled_show(struct kobject *kobj,
>> 	return sysfs_emit(buf, "%s\n", output);
>> }
>>
>> +enum anon_enabled_mode {
>> +	ANON_ENABLED_ALWAYS	= 0,
>> +	ANON_ENABLED_MADVISE	= 1,
>> +	ANON_ENABLED_INHERIT	= 2,
>> +	ANON_ENABLED_NEVER	= 3,
>> +};
>> +
>> +static const char * const anon_enabled_mode_strings[] = {
>> +	[ANON_ENABLED_ALWAYS]	= "always",
>> +	[ANON_ENABLED_MADVISE]	= "madvise",
>> +	[ANON_ENABLED_INHERIT]	= "inherit",
>> +	[ANON_ENABLED_NEVER]	= "never",
>> +};
>> +
> 
> Just one trivial thing, maybe keep the sequence as the sysfs output?
> 
> Currently the output of /sys/kernel/transparent_hugepage/hugepages-xxxkB is
> 
>      always inherit madvise [never]
> 
> But no strong opinion on this.

Yeah, keeping the enum order consistent with the sysfs output looks 
sensible :)

Apart from that, LGTM.

Reviewed-by: Lance Yang <lance.yang@linux.dev>


  reply	other threads:[~2026-03-11  4:52 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-10 17:57 [PATCH v5 0/4] mm: thp: reduce unnecessary start_stop_khugepaged() calls Breno Leitao
2026-03-10 17:57 ` [PATCH v5 1/4] mm: khugepaged: export set_recommended_min_free_kbytes() Breno Leitao
2026-03-10 18:32   ` Zi Yan
2026-03-10 17:57 ` [PATCH v5 2/4] mm: huge_memory: refactor anon_enabled_store() with change_anon_orders() Breno Leitao
2026-03-10 18:38   ` Zi Yan
2026-03-10 20:11   ` Barry Song
2026-03-10 20:17     ` Andrew Morton
2026-03-10 20:22       ` Barry Song
2026-03-11  1:37   ` Baolin Wang
2026-03-11  3:12   ` Wei Yang
2026-03-11  4:52     ` Lance Yang [this message]
2026-03-11  9:26       ` Breno Leitao
2026-03-10 17:57 ` [PATCH v5 3/4] mm: huge_memory: refactor enabled_store() with change_enabled() Breno Leitao
2026-03-10 18:40   ` Zi Yan
2026-03-11  1:39   ` Baolin Wang
2026-03-11  3:13   ` Wei Yang
2026-03-10 17:57 ` [PATCH v5 4/4] mm: ratelimit min_free_kbytes adjustment messages Breno Leitao
2026-03-10 18:41   ` Zi Yan

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=be82a89f-aef2-4fd9-9304-a5c9b4e3e125@linux.dev \
    --to=lance.yang@linux.dev \
    --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=hannes@cmpxchg.org \
    --cc=jackmanb@google.com \
    --cc=kas@kernel.org \
    --cc=kernel-team@meta.com \
    --cc=leitao@debian.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=ljs@kernel.org \
    --cc=lorenzo.stoakes@oracle.com \
    --cc=mhocko@suse.com \
    --cc=npache@redhat.com \
    --cc=richard.weiyang@gmail.com \
    --cc=rppt@kernel.org \
    --cc=ryan.roberts@arm.com \
    --cc=surenb@google.com \
    --cc=usamaarif642@gmail.com \
    --cc=vbabka@kernel.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.