Add mm_get_static_huge_zero_folio() routine so that huge_zero_folio can be used without the need to pass any mm struct. This will return ZERO_PAGE folio if CONFIG_STATIC_PMD_ZERO_PAGE is disabled. This routine can also be called even if THP is disabled. Signed-off-by: Pankaj Raghav <p.raghav@xxxxxxxxxxx> --- include/linux/mm.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/include/linux/mm.h b/include/linux/mm.h index b20d60d68b3c..c8805480ff21 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -4021,6 +4021,22 @@ static inline bool vma_is_special_huge(const struct vm_area_struct *vma) extern struct folio *huge_zero_folio; extern unsigned long huge_zero_pfn; +/* + * mm_get_static_huge_zero_folio - Get a 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)); +} + #ifdef CONFIG_TRANSPARENT_HUGEPAGE static inline bool is_huge_zero_folio(const struct folio *folio) { -- 2.49.0