[PATCH RFC 04/29] mm/page_alloc: allow for making page types sticky until freed
Zi Yan
ziy at nvidia.com
Thu Jun 19 04:08:08 AEST 2025
On 18 Jun 2025, at 14:04, Zi Yan wrote:
> On 18 Jun 2025, at 13:39, David Hildenbrand wrote:
>
>> 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 <david at redhat.com>
>> ---
>> 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?
OK, next patch explains it. free_pages_prepare() clears page_type,
so that caller does not need to.
I think the message is better to be
mm/page_alloc: clear page_type at page free time
page_type is no longer needed to be cleared before a page is freed, as
page free code does that.
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).
Best Regards,
Yan, Zi
More information about the Linuxppc-dev
mailing list