Thread (87 messages) 87 messages, 5 authors, 2025-06-30

Re: [PATCH RFC 04/29] mm/page_alloc: allow for making page types sticky until freed

From: Zi Yan <ziy@nvidia.com>
Date: 2025-06-18 18:04:26
Also in: linux-fsdevel, linux-mm, linuxppc-dev, lkml, virtualization

On 18 Jun 2025, at 13:39, David Hildenbrand wrote:
quoted hunk ↗ jump to hunk
Let's allow for not clearing a page type before freeing a page to the
buddy.

We'll focus on having a type set on the first page of a larger
allocation only.

With this change, we can reliably identify typed folios even though
they might be in the process of getting freed, which will come in handy
in migration code (at least in the transition phase).

Signed-off-by: David Hildenbrand <redacted>
---
 mm/page_alloc.c | 3 +++
 1 file changed, 3 insertions(+)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 858bc17653af9..44e56d31cfeb1 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1380,6 +1380,9 @@ __always_inline bool free_pages_prepare(struct page *page,
 			mod_mthp_stat(order, MTHP_STAT_NR_ANON, -1);
 		page->mapping = NULL;
 	}
+	if (unlikely(page_has_type(page)))
+		page->page_type = UINT_MAX;
+
 	if (is_check_pages_enabled()) {
 		if (free_page_is_bad(page))
 			bad++;
-- 
2.49.0
How does this preserve page type? Isn’t page->page_type = UINT_MAX clearing
page_type?

Best Regards,
Yan, Zi
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help