diff options
| author | Dmitry Torokhov <[email protected]> | 2023-05-01 15:20:08 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <[email protected]> | 2023-05-01 15:20:08 -0700 | 
| commit | 9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e (patch) | |
| tree | d57f3a63479a07b4e0cece029886e76e04feb984 /mm/page_ext.c | |
| parent | 5dc63e56a9cf8df0b59c234a505a1653f1bdf885 (diff) | |
| parent | 53bea86b5712c7491bb3dae12e271666df0a308c (diff) | |
Merge branch 'next' into for-linus
Prepare input updates for 6.4 merge window.
Diffstat (limited to 'mm/page_ext.c')
| -rw-r--r-- | mm/page_ext.c | 16 | 
1 files changed, 13 insertions, 3 deletions
diff --git a/mm/page_ext.c b/mm/page_ext.c index 4ee522fd381c..dc1626be458b 100644 --- a/mm/page_ext.c +++ b/mm/page_ext.c @@ -71,6 +71,7 @@ static bool need_page_idle(void)  }  static struct page_ext_operations page_idle_ops __initdata = {  	.need = need_page_idle, +	.need_shared_flags = true,  };  #endif @@ -86,12 +87,12 @@ static struct page_ext_operations *page_ext_ops[] __initdata = {  #endif  }; -unsigned long page_ext_size = sizeof(struct page_ext); +unsigned long page_ext_size;  static unsigned long total_usage;  static struct page_ext *lookup_page_ext(const struct page *page); -bool early_page_ext; +bool early_page_ext __meminitdata;  static int __init setup_early_page_ext(char *str)  {  	early_page_ext = true; @@ -106,7 +107,16 @@ static bool __init invoke_need_callbacks(void)  	bool need = false;  	for (i = 0; i < entries; i++) { -		if (page_ext_ops[i]->need && page_ext_ops[i]->need()) { +		if (page_ext_ops[i]->need()) { +			if (page_ext_ops[i]->need_shared_flags) { +				page_ext_size = sizeof(struct page_ext); +				break; +			} +		} +	} + +	for (i = 0; i < entries; i++) { +		if (page_ext_ops[i]->need()) {  			page_ext_ops[i]->offset = page_ext_size;  			page_ext_size += page_ext_ops[i]->size;  			need = true;  |