All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ye Liu <ye.liu@linux.dev>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Zi Yan <ziy@nvidia.com>, 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>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 0/7] mm/page_owner: misc cleanups
Date: Wed, 1 Jul 2026 13:45:00 +0800	[thread overview]
Message-ID: <8dce5685-c215-4876-93d9-3cec4dcb6173@linux.dev> (raw)
In-Reply-To: <20260630204130.175e9a2addae86058327918e@linux-foundation.org>



在 2026/7/1 11:41, Andrew Morton 写道:
> On Wed,  1 Jul 2026 09:22:26 +0800 Ye Liu <ye.liu@linux.dev> wrote:
> 
>> v4:
>>  - Patch 2: also update scripts/gdb/linux/page_owner.py to use MR_NEVER
>>    instead of the hardcoded -1.
>>  - https://lore.kernel.org/all/20260630015331.147174-1-ye.liu@linux.dev/
> 
> I'm seeing more changes than described here?
> 
> 
> Thanks, I updated mm.git to this version.
> 
> Here's how v4 altered mm.git:
> 
Patch[1] depends on this patch series and should be placed together with this part.
I will send V5 including both patches.                                             
                                                                                   
[1]:https://lore.kernel.org/all/20260625014708.87386-1-ye.liu@linux.dev/           

> 
>  mm/page_owner.c                 |   16 +++-------------
>  scripts/gdb/linux/page_owner.py |    4 +++-
>  2 files changed, 6 insertions(+), 14 deletions(-)
> 
> --- a/mm/page_owner.c~b
> +++ a/mm/page_owner.c
> @@ -428,12 +428,6 @@ void __folio_copy_owner(struct folio *ne
>   * to skip less than the full buddy block, but that is acceptable for page owner
>   * iteration purposes.
>   *
> - * The lockless read of buddy_order_unsafe() can also return a garbage order if
> - * the page is concurrently allocated and PageBuddy is cleared between the check
> - * and the read. Clamp the advance at the next MAX_ORDER_NR_PAGES boundary so
> - * that a bogus order cannot carry @pfn into an unvalidated memory section,
> - * which would break callers that rely on boundary-aligned pfn_valid() checks.
> - *
>   * Return: true if the page was skipped (caller should continue its loop),
>   *         false if the page is not a buddy page and should be processed normally.
>   */
> @@ -445,12 +439,8 @@ static inline bool skip_buddy_pages(unsi
>  		return false;
>  
>  	order = buddy_order_unsafe(page);
> -	if (order <= MAX_PAGE_ORDER) {
> -		unsigned long new_pfn = *pfn + (1UL << order);
> -		unsigned long boundary = ALIGN(*pfn + 1, MAX_ORDER_NR_PAGES);
> -
> -		*pfn = min(new_pfn, boundary) - 1;
> -	}
> +	if (order <= MAX_PAGE_ORDER)
> +		*pfn += (1UL << order) - 1;
>  
>  	return true;
>  }
> @@ -561,7 +551,7 @@ static inline int print_page_owner_memcg
>  	cgroup_name(memcg->css.cgroup, name, sizeof(name));
>  	ret += scnprintf(kbuf + ret, count - ret,
>  			"Charged %sto %smemcg %s\n",
> -			(memcg_data & MEMCG_DATA_KMEM) ? "(via objcg) " : "",
> +			PageMemcgKmem(page) ? "(via objcg) " : "",
>  			online ? "" : "offline ",
>  			name);
>  out_unlock:
> --- a/scripts/gdb/linux/page_owner.py~b
> +++ a/scripts/gdb/linux/page_owner.py
> @@ -34,6 +34,7 @@ class DumpPageOwner(gdb.Command):
>      max_pfn = None
>      p_ops = None
>      migrate_reason_names = None
> +    mr_never = None
>  
>      def __init__(self):
>          super(DumpPageOwner, self).__init__("lx-dump-page-owner", gdb.COMMAND_SUPPORT)
> @@ -65,6 +66,7 @@ class DumpPageOwner(gdb.Command):
>          self.max_pfn = int(gdb.parse_and_eval("max_pfn"))
>          self.page_ext_size = int(gdb.parse_and_eval("page_ext_size"))
>          self.migrate_reason_names = gdb.parse_and_eval('migrate_reason_names')
> +        self.mr_never = int(gdb.parse_and_eval('MR_NEVER'))
>  
>      def page_ext_invalid(self, page_ext):
>          if page_ext == gdb.Value(0):
> @@ -138,7 +140,7 @@ class DumpPageOwner(gdb.Command):
>          else:
>              gdb.write('page last free stack trace:\n')
>              stackdepot.stack_depot_print(page_owner["free_handle"])
> -        if page_owner['last_migrate_reason'] != -1:
> +        if page_owner['last_migrate_reason'] != self.mr_never:
>              gdb.write('page has been migrated, last migrate reason: %s\n' % self.migrate_reason_names[page_owner['last_migrate_reason']])
>  
>      def read_page_owner(self):
> _
> 

-- 
Thanks,
Ye Liu



      reply	other threads:[~2026-07-01  5:45 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-01  1:22 [PATCH v4 0/7] mm/page_owner: misc cleanups Ye Liu
2026-07-01  1:22 ` [PATCH v4 1/7] mm/page_owner: extract skip_buddy_pages() helper to unify buddy page skipping Ye Liu
2026-07-01  1:22 ` [PATCH v4 2/7] mm/page_owner: add MR_NEVER to enum migrate_reason and use it for last_migrate_reason Ye Liu
2026-07-01  1:22 ` [PATCH v4 3/7] mm: use enum migrate_reason instead of int for migration reason parameters Ye Liu
2026-07-01  1:22 ` [PATCH v4 4/7] mm/page_owner: hoist CONFIG_MEMCG to function level for print_page_owner_memcg() Ye Liu
2026-07-01  1:22 ` [PATCH v4 5/7] mm/page_owner: add missing newline to count_threshold format string Ye Liu
2026-07-01  1:22 ` [PATCH v4 6/7] mm/page_owner: move free_ts_nsec output to free section in __dump_page_owner() Ye Liu
2026-07-01  1:22 ` [PATCH v4 7/7] mm/page_owner: drop redundant page_owner prefix from static symbols Ye Liu
2026-07-01  3:41 ` [PATCH v4 0/7] mm/page_owner: misc cleanups Andrew Morton
2026-07-01  5:45   ` Ye Liu [this message]

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=8dce5685-c215-4876-93d9-3cec4dcb6173@linux.dev \
    --to=ye.liu@linux.dev \
    --cc=akpm@linux-foundation.org \
    --cc=hannes@cmpxchg.org \
    --cc=jackmanb@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@suse.com \
    --cc=surenb@google.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.