On 17.07.25 12:34, Pankaj Raghav (Samsung) wrote:
Then, we'd only need a config option to allow for that to happen.
Something incomplete and very hacky just to give an idea. It would try allocating
it if there is actual code running that would need it, and then have it
stick around forever.
Thanks a lot for this David :) I think this is a much better idea and
reduces the amount code and reuse the existing infrastructure.
I will try this approach in the next version.
<snip>
+ /*
+ * Our raised reference will prevent the shrinker from ever having
+ * success -> static.
+ */
+ if (atomic_read(&huge_zero_folio_is_static))
+ return huge_zero_folio;
+ /* TODO: memblock allocation if buddy is not up yet? Or Reject that earlier. */
Do we need memblock allocation? At least the use cases I forsee for
static pmd zero page are all after the mm is up. So I don't see why we
need to allocate it via memblock.
Even better!
We might want to detect whether allocation of the huge zeropage failed a
couple of times and then just give up. Otherwise, each and every user of
the largest zero folio will keep allocating it.
--
Cheers,
David / dhildenb