Signed-off-by: wang wei <a929244...@163.com> --- >diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h >index 80fef38d9d64..365c73be0bb4 100644 >--- a/include/linux/mm_types.h >+++ b/include/linux/mm_types.h >@@ -310,6 +310,7 @@ typedef struct { > * @_hugetlb_cgroup: Do not use directly, use accessor in hugetlb_cgroup.h. > * @_hugetlb_cgroup_rsvd: Do not use directly, use accessor in > hugetlb_cgroup.h. > * @_hugetlb_hwpoison: Do not use directly, call raw_hwp_list_head(). >+ * @_hugetlb_list: To be used in hugetlb core code only. > * @_deferred_list: Folios to be split under memory pressure. > * @_unused_slab_obj_exts: Placeholder to match obj_exts in struct slab. > * >@@ -397,6 +398,17 @@ struct folio { > }; > struct page __page_2; > }; >+ union { >+ struct { >+ unsigned long _flags_3; >+ unsigned long _head_3; >+ /* public: */ >+ struct list_head _hugetlb_list; >+ /* private: the union with struct page is transitional */ >+ }; >+ struct page __page_3; >+ }; >+ > }; > As far as I know, increasing the size of folio maybe decrease the revenue of HVO, do you measure it? > #define FOLIO_MATCH(pg, fl) \ >@@ -433,6 +445,12 @@ FOLIO_MATCH(compound_head, _head_2); > FOLIO_MATCH(flags, _flags_2a); > FOLIO_MATCH(compound_head, _head_2a); > #undef FOLIO_MATCH >+#define FOLIO_MATCH(pg, fl) \ >+ static_assert(offsetof(struct folio, fl) == \ >+ offsetof(struct page, pg) + 3 * sizeof(struct page)) >+FOLIO_MATCH(flags, _flags_3); >+FOLIO_MATCH(compound_head, _head_3); >+#undef FOLIO_MATCH > > /** > * struct ptdesc - Memory descriptor for page tables. -- 2.25.1