[PATCH mm-unstable v2 3/5] mm/khugepaged: define COLLAPSE_MAX_PTES_LIMIT as HPAGE_PMD_NR - 1

Nico Pache posted 5 patches 1 month, 1 week ago
There is a newer version of this series
[PATCH mm-unstable v2 3/5] mm/khugepaged: define COLLAPSE_MAX_PTES_LIMIT as HPAGE_PMD_NR - 1
Posted by Nico Pache 1 month, 1 week ago
The value (HPAGE_PMD_NR - 1) is used often in the khugepaged code to
signify the limit of the max_ptes_* values. Add a define for this to
increase code readability and reuse.

Acked-by: Pedro Falcato <pfalcato@suse.de>
Reviewed-by: Zi Yan <ziy@nvidia.com>
Signed-off-by: Nico Pache <npache@redhat.com>
---
 mm/khugepaged.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/mm/khugepaged.c b/mm/khugepaged.c
index 2ef4b972470b..4615f34911d1 100644
--- a/mm/khugepaged.c
+++ b/mm/khugepaged.c
@@ -89,6 +89,7 @@ static DECLARE_WAIT_QUEUE_HEAD(khugepaged_wait);
  *
  * Note that these are only respected if collapse was initiated by khugepaged.
  */
+#define COLLAPSE_MAX_PTES_LIMIT (HPAGE_PMD_NR - 1)
 unsigned int khugepaged_max_ptes_none __read_mostly;
 static unsigned int khugepaged_max_ptes_swap __read_mostly;
 static unsigned int khugepaged_max_ptes_shared __read_mostly;
@@ -256,7 +257,7 @@ static ssize_t max_ptes_none_store(struct kobject *kobj,
 	unsigned long max_ptes_none;
 
 	err = kstrtoul(buf, 10, &max_ptes_none);
-	if (err || max_ptes_none > HPAGE_PMD_NR - 1)
+	if (err || max_ptes_none > COLLAPSE_MAX_PTES_LIMIT)
 		return -EINVAL;
 
 	khugepaged_max_ptes_none = max_ptes_none;
@@ -281,7 +282,7 @@ static ssize_t max_ptes_swap_store(struct kobject *kobj,
 	unsigned long max_ptes_swap;
 
 	err  = kstrtoul(buf, 10, &max_ptes_swap);
-	if (err || max_ptes_swap > HPAGE_PMD_NR - 1)
+	if (err || max_ptes_swap > COLLAPSE_MAX_PTES_LIMIT)
 		return -EINVAL;
 
 	khugepaged_max_ptes_swap = max_ptes_swap;
@@ -307,7 +308,7 @@ static ssize_t max_ptes_shared_store(struct kobject *kobj,
 	unsigned long max_ptes_shared;
 
 	err  = kstrtoul(buf, 10, &max_ptes_shared);
-	if (err || max_ptes_shared > HPAGE_PMD_NR - 1)
+	if (err || max_ptes_shared > COLLAPSE_MAX_PTES_LIMIT)
 		return -EINVAL;
 
 	khugepaged_max_ptes_shared = max_ptes_shared;
@@ -379,7 +380,7 @@ int __init khugepaged_init(void)
 		return -ENOMEM;
 
 	khugepaged_pages_to_scan = HPAGE_PMD_NR * 8;
-	khugepaged_max_ptes_none = HPAGE_PMD_NR - 1;
+	khugepaged_max_ptes_none = COLLAPSE_MAX_PTES_LIMIT;
 	khugepaged_max_ptes_swap = HPAGE_PMD_NR / 8;
 	khugepaged_max_ptes_shared = HPAGE_PMD_NR / 2;
 
-- 
2.53.0
Re: [PATCH mm-unstable v2 3/5] mm/khugepaged: define COLLAPSE_MAX_PTES_LIMIT as HPAGE_PMD_NR - 1
Posted by David Hildenbrand (Arm) 1 month, 1 week ago
On 2/26/26 02:29, Nico Pache wrote:
> The value (HPAGE_PMD_NR - 1) is used often in the khugepaged code to
> signify the limit of the max_ptes_* values. Add a define for this to
> increase code readability and reuse.
> 
> Acked-by: Pedro Falcato <pfalcato@suse.de>
> Reviewed-by: Zi Yan <ziy@nvidia.com>
> Signed-off-by: Nico Pache <npache@redhat.com>
> ---
>  mm/khugepaged.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/mm/khugepaged.c b/mm/khugepaged.c
> index 2ef4b972470b..4615f34911d1 100644
> --- a/mm/khugepaged.c
> +++ b/mm/khugepaged.c
> @@ -89,6 +89,7 @@ static DECLARE_WAIT_QUEUE_HEAD(khugepaged_wait);
>   *
>   * Note that these are only respected if collapse was initiated by khugepaged.
>   */
> +#define COLLAPSE_MAX_PTES_LIMIT (HPAGE_PMD_NR - 1)

I'd call it "KHUGEPAGED_MAX_PTES_LIMIT", because it's khugepaged
specific (no madvise) and matches the parameters.

Apart from that

Acked-by: David Hildenbrand (Arm) <david@kernel.org>

-- 
Cheers,

David
Re: [PATCH mm-unstable v2 3/5] mm/khugepaged: define COLLAPSE_MAX_PTES_LIMIT as HPAGE_PMD_NR - 1
Posted by Nico Pache 1 month, 1 week ago
On Thu, Feb 26, 2026 at 2:28 AM David Hildenbrand (Arm)
<david@kernel.org> wrote:
>
> On 2/26/26 02:29, Nico Pache wrote:
> > The value (HPAGE_PMD_NR - 1) is used often in the khugepaged code to
> > signify the limit of the max_ptes_* values. Add a define for this to
> > increase code readability and reuse.
> >
> > Acked-by: Pedro Falcato <pfalcato@suse.de>
> > Reviewed-by: Zi Yan <ziy@nvidia.com>
> > Signed-off-by: Nico Pache <npache@redhat.com>
> > ---
> >  mm/khugepaged.c | 9 +++++----
> >  1 file changed, 5 insertions(+), 4 deletions(-)
> >
> > diff --git a/mm/khugepaged.c b/mm/khugepaged.c
> > index 2ef4b972470b..4615f34911d1 100644
> > --- a/mm/khugepaged.c
> > +++ b/mm/khugepaged.c
> > @@ -89,6 +89,7 @@ static DECLARE_WAIT_QUEUE_HEAD(khugepaged_wait);
> >   *
> >   * Note that these are only respected if collapse was initiated by khugepaged.
> >   */
> > +#define COLLAPSE_MAX_PTES_LIMIT (HPAGE_PMD_NR - 1)
>
> I'd call it "KHUGEPAGED_MAX_PTES_LIMIT", because it's khugepaged
> specific (no madvise) and matches the parameters.

Ok before changing that, note that this is also leveraged in the mTHP
set. It's technically used for madvise collapse because when it's not
khugepaged we set max_ptes_none= 511.

But I'm ok with either name! I just want to make sure it makes sense
for the later users too.

Thanks :)
-- Nico

>
> Apart from that
>
> Acked-by: David Hildenbrand (Arm) <david@kernel.org>
>
> --
> Cheers,
>
> David
>
Re: [PATCH mm-unstable v2 3/5] mm/khugepaged: define COLLAPSE_MAX_PTES_LIMIT as HPAGE_PMD_NR - 1
Posted by David Hildenbrand (Arm) 1 month, 1 week ago
On 2/26/26 21:17, Nico Pache wrote:
> On Thu, Feb 26, 2026 at 2:28 AM David Hildenbrand (Arm)
> <david@kernel.org> wrote:
>>
>> On 2/26/26 02:29, Nico Pache wrote:
>>> The value (HPAGE_PMD_NR - 1) is used often in the khugepaged code to
>>> signify the limit of the max_ptes_* values. Add a define for this to
>>> increase code readability and reuse.
>>>
>>> Acked-by: Pedro Falcato <pfalcato@suse.de>
>>> Reviewed-by: Zi Yan <ziy@nvidia.com>
>>> Signed-off-by: Nico Pache <npache@redhat.com>
>>> ---
>>>  mm/khugepaged.c | 9 +++++----
>>>  1 file changed, 5 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/mm/khugepaged.c b/mm/khugepaged.c
>>> index 2ef4b972470b..4615f34911d1 100644
>>> --- a/mm/khugepaged.c
>>> +++ b/mm/khugepaged.c
>>> @@ -89,6 +89,7 @@ static DECLARE_WAIT_QUEUE_HEAD(khugepaged_wait);
>>>   *
>>>   * Note that these are only respected if collapse was initiated by khugepaged.
>>>   */
>>> +#define COLLAPSE_MAX_PTES_LIMIT (HPAGE_PMD_NR - 1)
>>
>> I'd call it "KHUGEPAGED_MAX_PTES_LIMIT", because it's khugepaged
>> specific (no madvise) and matches the parameters.
> 
> Ok before changing that, note that this is also leveraged in the mTHP
> set. It's technically used for madvise collapse because when it's not
> khugepaged we set max_ptes_none= 511.

It's more about disabling that parameter, right?

-- 
Cheers,

David
Re: [PATCH mm-unstable v2 3/5] mm/khugepaged: define COLLAPSE_MAX_PTES_LIMIT as HPAGE_PMD_NR - 1
Posted by Nico Pache 1 month ago
On Fri, Feb 27, 2026 at 1:53 AM David Hildenbrand (Arm)
<david@kernel.org> wrote:
>
> On 2/26/26 21:17, Nico Pache wrote:
> > On Thu, Feb 26, 2026 at 2:28 AM David Hildenbrand (Arm)
> > <david@kernel.org> wrote:
> >>
> >> On 2/26/26 02:29, Nico Pache wrote:
> >>> The value (HPAGE_PMD_NR - 1) is used often in the khugepaged code to
> >>> signify the limit of the max_ptes_* values. Add a define for this to
> >>> increase code readability and reuse.
> >>>
> >>> Acked-by: Pedro Falcato <pfalcato@suse.de>
> >>> Reviewed-by: Zi Yan <ziy@nvidia.com>
> >>> Signed-off-by: Nico Pache <npache@redhat.com>
> >>> ---
> >>>  mm/khugepaged.c | 9 +++++----
> >>>  1 file changed, 5 insertions(+), 4 deletions(-)
> >>>
> >>> diff --git a/mm/khugepaged.c b/mm/khugepaged.c
> >>> index 2ef4b972470b..4615f34911d1 100644
> >>> --- a/mm/khugepaged.c
> >>> +++ b/mm/khugepaged.c
> >>> @@ -89,6 +89,7 @@ static DECLARE_WAIT_QUEUE_HEAD(khugepaged_wait);
> >>>   *
> >>>   * Note that these are only respected if collapse was initiated by khugepaged.
> >>>   */
> >>> +#define COLLAPSE_MAX_PTES_LIMIT (HPAGE_PMD_NR - 1)
> >>
> >> I'd call it "KHUGEPAGED_MAX_PTES_LIMIT", because it's khugepaged
> >> specific (no madvise) and matches the parameters.
> >
> > Ok before changing that, note that this is also leveraged in the mTHP
> > set. It's technically used for madvise collapse because when it's not
> > khugepaged we set max_ptes_none= 511.
>
> It's more about disabling that parameter, right?

Yeah, we conditionally set `max_ptes_none = ..._MAX_PTES_LIMIT` for
the case where no pte limit should be enforced.

-- Nico

>
> --
> Cheers,
>
> David
>
Re: [PATCH mm-unstable v2 3/5] mm/khugepaged: define COLLAPSE_MAX_PTES_LIMIT as HPAGE_PMD_NR - 1
Posted by Baolin Wang 1 month, 1 week ago

On 2/26/26 9:29 AM, Nico Pache wrote:
> The value (HPAGE_PMD_NR - 1) is used often in the khugepaged code to
> signify the limit of the max_ptes_* values. Add a define for this to
> increase code readability and reuse.
> 
> Acked-by: Pedro Falcato <pfalcato@suse.de>
> Reviewed-by: Zi Yan <ziy@nvidia.com>
> Signed-off-by: Nico Pache <npache@redhat.com>
> ---

Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com>