[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <0d92a675-ab24-4b1c-be71-956f09a9e973@redhat.com>
Date: Mon, 20 Oct 2025 21:46:21 +0200
From: David Hildenbrand <david@...hat.com>
To: Gregory Price <gourry@...rry.net>
Cc: Zi Yan <ziy@...dia.com>, linux-mm@...ck.org,
linux-kernel@...r.kernel.org, kernel-team@...a.com,
akpm@...ux-foundation.org, vbabka@...e.cz, surenb@...gle.com,
mhocko@...e.com, jackmanb@...gle.com, hannes@...xchg.org
Subject: Re: [RFC PATCH] page_alloc: allow migration of smaller hugepages
during contig_alloc.
On 20.10.25 21:40, Gregory Price wrote:
> On Mon, Oct 20, 2025 at 09:18:36PM +0200, David Hildenbrand wrote:
>>>
>>> Basically, what is the right way of checking a folio order without lock?
>>> Should we have a standardized helper function for that?
>>
>> As raised, snapshot_page() tries to stabilize the folio best it can.
>
> is snapshot_page() even worth it if we're already racing on flag checks?
I think it tries to handle what compound_order() cannot easily handle,
as it will retry in case it detects an obvious race.
>
> i.e. there's already a race condition between
>
> pfn_range_valid_contig(range) -> compaction(range)
Can you elaborate how compaction comes into play here? I'm missing the
interaction.
pfn_range_valid_contig() should be only called by alloc_contig_pages()
and not out of compaction context?
>
> on some bogus value the worst that happens is either compaction gets
> called when it can't compact, or compaction doesn't get called when it
> could compact - either way, compaction still handles it if called.
>
> We may just skip some blocks (which is still better than now).
>
> --
>
> on compound_order - from mm.h:
>
> /*
> * compound_order() can be called without holding a reference, which means
> * that niceties like page_folio() don't work. These callers should be
> * prepared to handle wild return values. For example, PG_head may be
> * set before the order is initialised, or this may be a tail page.
> * See compaction.c for some good examples.
> */
>
> Seems like the correct interface given the scenario. I'll poke around.
Yes, avoiding folios altogether is even better. As documented, it can
result in crazy values due to races that must be handled (like
compaction, yes).
--
Cheers
David / dhildenb
Powered by blists - more mailing lists