On Thu, Jul 17, 2025 at 01:46:03PM +0200, David Hildenbrand wrote: > 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. Yes, that makes sense. We need sort of like a global counter to count the nr of failures and then give up trying to allocate it if it goes above a threshold. -- Pankaj