The quilt patch titled Subject: mm-page_ext-do-not-allocate-space-for-page_ext-flags-if-not-needed-v4 has been removed from the -mm tree. Its filename was mm-page_ext-do-not-allocate-space-for-page_ext-flags-if-not-needed-v4.patch This patch was dropped because it was folded into mm-page_ext-do-not-allocate-space-for-page_ext-flags-if-not-needed.patch ------------------------------------------------------ From: Pasha Tatashin <pasha.tatashin@xxxxxxxxxx> Subject: mm-page_ext-do-not-allocate-space-for-page_ext-flags-if-not-needed-v4 Date: Tue, 17 Jan 2023 20:21:03 +0000 address comments from Mike Rapoport Link: https://lkml.kernel.org/r/20230117202103.1412449-1-pasha.tatashin@xxxxxxxxxx Signed-off-by: Pasha Tatashin <pasha.tatashin@xxxxxxxxxx> Acked-by: Vlastimil Babka <vbabka@xxxxxxx> Acked-by: David Hildenbrand <david@xxxxxxxxxx> Cc: Charan Teja Kalla <quic_charante@xxxxxxxxxxx> Cc: Li Zhe <lizhe.67@xxxxxxxxxxxxx> Cc: Michal Hocko <mhocko@xxxxxxxx> Cc: Mike Rapoport <rppt@xxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- --- a/include/linux/page_ext.h~mm-page_ext-do-not-allocate-space-for-page_ext-flags-if-not-needed-v4 +++ a/include/linux/page_ext.h @@ -8,29 +8,31 @@ struct pglist_data; -/* +/** + * struct page_ext_operations - per page_ext client operations + * @offset: Offset to the client's data within page_ext. Offset is returned to + * the client by page_ext_init. + * @size: The size of the client data within page_ext. + * @need: Function that returns true if client requires page_ext. + * @init: (optional) Called to initialize client once page_exts are allocated. + * @need_shared_flags: True when client is using shared page_ext->flags + * field. + * * Each Page Extension client must define page_ext_operations in * page_ext_ops array. - * offset offset to the client's data within page_ext. Offset is returned to - * the client by page_ext_init. - * size the size of the client data within page_ext. - * need() function that returns true if client requires page_ext - * init() (optional) called to initialize client once page_exts are allocated. - * using_shared_ext_flags true when client is using shared page_ext->flags - * field. */ struct page_ext_operations { size_t offset; size_t size; bool (*need)(void); void (*init)(void); - bool using_shared_ext_flags; + bool need_shared_flags; }; #ifdef CONFIG_PAGE_EXTENSION /* - * The page_ext_flags users must set using_shared_ext_flags to true. + * The page_ext_flags users must set need_shared_flags to true. */ enum page_ext_flags { PAGE_EXT_OWNER, @@ -47,9 +49,6 @@ enum page_ext_flags { * page_ext helps us add more information about the page. * All page_ext are allocated at boot or memory hotplug event, * then the page_ext for pfn always exists. - * Note: that if none of the users of page_ext is setting - * using_shared_ext_flags to true, the field cannot be used, - * as it will be overlapped with another data. */ struct page_ext { unsigned long flags; --- a/mm/page_ext.c~mm-page_ext-do-not-allocate-space-for-page_ext-flags-if-not-needed-v4 +++ a/mm/page_ext.c @@ -71,7 +71,7 @@ static bool need_page_idle(void) } static struct page_ext_operations page_idle_ops __initdata = { .need = need_page_idle, - .using_shared_ext_flags = true, + .need_shared_flags = true, }; #endif @@ -108,7 +108,7 @@ static bool __init invoke_need_callbacks for (i = 0; i < entries; i++) { if (page_ext_ops[i]->need()) { - if (page_ext_ops[i]->using_shared_ext_flags) { + if (page_ext_ops[i]->need_shared_flags) { page_ext_size = sizeof(struct page_ext); break; } --- a/mm/page_owner.c~mm-page_ext-do-not-allocate-space-for-page_ext-flags-if-not-needed-v4 +++ a/mm/page_owner.c @@ -99,7 +99,7 @@ struct page_ext_operations page_owner_op .size = sizeof(struct page_owner), .need = need_page_owner, .init = init_page_owner, - .using_shared_ext_flags = true, + .need_shared_flags = true, }; static inline struct page_owner *get_page_owner(struct page_ext *page_ext) --- a/mm/page_table_check.c~mm-page_ext-do-not-allocate-space-for-page_ext-flags-if-not-needed-v4 +++ a/mm/page_table_check.c @@ -45,7 +45,7 @@ struct page_ext_operations page_table_ch .size = sizeof(struct page_table_check), .need = need_page_table_check, .init = init_page_table_check, - .using_shared_ext_flags = false, + .need_shared_flags = false, }; static struct page_table_check *get_page_table_check(struct page_ext *page_ext) _ Patches currently in -mm which might be from pasha.tatashin@xxxxxxxxxx are mm-page_ext-do-not-allocate-space-for-page_ext-flags-if-not-needed.patch mm-page_ext-init-page_ext-early-if-there-are-no-deferred-struct-pages.patch mm-page_ext-init-page_ext-early-if-there-are-no-deferred-struct-pages-v2.patch