On 6/12/25 03:50, Pankaj Raghav wrote: > +/* > + * mm_get_static_huge_zero_folio - Get a PMD sized zero folio Isn't that a rather inaccurate function name and comment? The third line of the function literally returns a non-PMD-sized zero folio. > + * This function will return a PMD sized zero folio if CONFIG_STATIC_PMD_ZERO_PAGE > + * is enabled. Otherwise, a ZERO_PAGE folio is returned. > + * > + * Deduce the size of the folio with folio_size instead of assuming the > + * folio size. > + */ > +static inline struct folio *mm_get_static_huge_zero_folio(void) > +{ > + if(IS_ENABLED(CONFIG_STATIC_PMD_ZERO_PAGE)) > + return READ_ONCE(huge_zero_folio); > + return page_folio(ZERO_PAGE(0)); > +} This doesn't tell us very much about when I should use: mm_get_static_huge_zero_folio() vs. mm_get_huge_zero_folio(mm) vs. page_folio(ZERO_PAGE(0)) What's with the "mm_" in the name? Usually "mm" means "mm_struct" not Memory Management. It's really weird to prefix something that doesn't take an "mm_struct" with "mm_" Isn't the "get_" also a bad idea since mm_get_huge_zero_folio() does its own refcounting but this interface does not? Shouldn't this be something more along the lines of: /* * pick_zero_folio() - Pick and return the largest available zero folio * * mm_get_huge_zero_folio() is preferred over this function. It is more * flexible and can provide a larger zero page under wider * circumstances. * * Only use this when there is no mm available. * * ... then other comments */ static inline struct folio *pick_zero_folio(void) { if (IS_ENABLED(CONFIG_STATIC_PMD_ZERO_PAGE)) return READ_ONCE(huge_zero_folio); return page_folio(ZERO_PAGE(0)); } Or, maybe even name it _just_: zero_folio()