On Fri, Aug 22, 2025 at 09:03:41PM +0530, Dev Jain wrote: > > On 22/08/25 8:19 pm, Lorenzo Stoakes wrote: > > On Fri, Aug 22, 2025 at 04:10:35PM +0200, David Hildenbrand wrote: > > > > > Once could also easily support the value 255 (HPAGE_PMD_NR / 2- 1), > > > > > but not sure > > > > > if we have to add that for now. > > > > Yeah not so sure about this, this is a 'just have to know' too, and yes > > > > you > > > > might add it to the docs, but people are going to be mightily confused, > > > > esp if > > > > it's a calculated value. > > > > > > > > I don't see any other way around having a separate tunable if we don't > > > > just have > > > > something VERY simple like on/off. > > > Yeah, not advocating that we add support for other values than 0/511, > > > really. > > Yeah I'm fine with 0/511. > > > > > > Also the mentioned issue sounds like something that needs to be fixed > > > > elsewhere > > > > honestly in the algorithm used to figure out mTHP ranges (I may be > > > > wrong - and > > > > happy to stand corrected if this is somehow inherent, but reallly feels > > > > that > > > > way). > > > I think the creep is unavoidable for certain values. > > > > > > If you have the first two pages of a PMD area populated, and you allow for > > > at least half of the #PTEs to be non/zero, you'd collapse first a > > > order-2 folio, then and order-3 ... until you reached PMD order. > > Feels like we should be looking at this in reverse? What's the largest, then > > next largest, then etc.? > > > > Surely this is the sensible way of doing it? > > What David means to say is, for example, suppose all orders are enabled, > and we fail to collapse for order-9, then order-8, then order-7, and so on, > *only* because the distribution of ptes did not obey the scaled max_ptes_none. > Let order-4 collapse succeed.
Ah so it is the overhead of this that's the problem? All roads lead to David's suggestion imo. > > By having 0/511 we can really simplify the 'scaling' logic too which would > > be > > fantastic! :) > > FWIW here was my implementation of this thing, for ease of everyone: > https://lore.kernel.org/all/20250211111326.14295-17-dev.j...@arm.com/ That's fine, but I really think we should just replace all this stuff with a boolean, and change the interface to max_ptes to set boolean if 511, or clear if 0. Cheers, Lorenzo