* [PATCH v2] mm/mm_init.c: print mem_init info after defer_init is done
@ 2024-06-11 14:52 Wei Yang
2024-06-11 15:12 ` David Hildenbrand
0 siblings, 1 reply; 3+ messages in thread
From: Wei Yang @ 2024-06-11 14:52 UTC (permalink / raw)
To: rppt, akpm; +Cc: linux-mm, Wei Yang, David Hildenbrand
Current call flow looks like this:
start_kernel
mm_core_init
mem_init
mem_init_print_info
rest_init
kernel_init
kernel_init_freeable
page_alloc_init_late
deferred_init_memmap
If CONFIG_DEFERRED_STRUCT_PAGE_INIT, the time mem_init_print_info()
calls, pages are not totally initialized and freed to buddy.
This has one issue
* nr_free_pages() just contains partial free pages in the system,
which is not we expect.
Let's print the mem info after defer_init is done.
Also this would help changing totalram_pages accounting, since we plan
to move the accounting into __free_pages_core().
Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
CC: David Hildenbrand <david@redhat.com>
---
v2:
* mention this would help changing totalram_pages accounting
* instead of moving the function ahead, add function declaration ahead
* add a comment before calling mem_init_print_info
---
mm/mm_init.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/mm/mm_init.c b/mm/mm_init.c
index f72b852bd5b8..769d5ba6bf38 100644
--- a/mm/mm_init.c
+++ b/mm/mm_init.c
@@ -2322,6 +2322,7 @@ void set_zone_contiguous(struct zone *zone)
zone->contiguous = true;
}
+static void __init mem_init_print_info(void);
void __init page_alloc_init_late(void)
{
struct zone *zone;
@@ -2348,6 +2349,8 @@ void __init page_alloc_init_late(void)
files_maxfiles_init();
#endif
+ /* Accounting of total+free memory is stable at this point. */
+ mem_init_print_info();
buffer_init();
/* Discard memblock private memory */
@@ -2737,7 +2740,6 @@ void __init mm_core_init(void)
kmsan_init_shadow();
stack_depot_early_init();
mem_init();
- mem_init_print_info();
kmem_cache_init();
/*
* page_owner must be initialized after buddy is ready, and also after
--
2.34.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] mm/mm_init.c: print mem_init info after defer_init is done
2024-06-11 14:52 [PATCH v2] mm/mm_init.c: print mem_init info after defer_init is done Wei Yang
@ 2024-06-11 15:12 ` David Hildenbrand
2024-06-11 23:58 ` Wei Yang
0 siblings, 1 reply; 3+ messages in thread
From: David Hildenbrand @ 2024-06-11 15:12 UTC (permalink / raw)
To: Wei Yang, rppt, akpm; +Cc: linux-mm
On 11.06.24 16:52, Wei Yang wrote:
> Current call flow looks like this:
>
> start_kernel
> mm_core_init
> mem_init
> mem_init_print_info
> rest_init
> kernel_init
> kernel_init_freeable
> page_alloc_init_late
> deferred_init_memmap
>
> If CONFIG_DEFERRED_STRUCT_PAGE_INIT, the time mem_init_print_info()
> calls, pages are not totally initialized and freed to buddy.
>
> This has one issue
>
> * nr_free_pages() just contains partial free pages in the system,
> which is not we expect.
>
> Let's print the mem info after defer_init is done.
>
> Also this would help changing totalram_pages accounting, since we plan
> to move the accounting into __free_pages_core().
>
> Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
> CC: David Hildenbrand <david@redhat.com>
Acked-by: David Hildenbrand <david@redhat.com>
Hoping this won't reveal other surprises.
--
Cheers,
David / dhildenb
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] mm/mm_init.c: print mem_init info after defer_init is done
2024-06-11 15:12 ` David Hildenbrand
@ 2024-06-11 23:58 ` Wei Yang
0 siblings, 0 replies; 3+ messages in thread
From: Wei Yang @ 2024-06-11 23:58 UTC (permalink / raw)
To: David Hildenbrand; +Cc: Wei Yang, rppt, akpm, linux-mm
On Tue, Jun 11, 2024 at 05:12:13PM +0200, David Hildenbrand wrote:
>On 11.06.24 16:52, Wei Yang wrote:
>> Current call flow looks like this:
>>
>> start_kernel
>> mm_core_init
>> mem_init
>> mem_init_print_info
>> rest_init
>> kernel_init
>> kernel_init_freeable
>> page_alloc_init_late
>> deferred_init_memmap
>>
>> If CONFIG_DEFERRED_STRUCT_PAGE_INIT, the time mem_init_print_info()
>> calls, pages are not totally initialized and freed to buddy.
>>
>> This has one issue
>>
>> * nr_free_pages() just contains partial free pages in the system,
>> which is not we expect.
>>
>> Let's print the mem info after defer_init is done.
>>
>> Also this would help changing totalram_pages accounting, since we plan
>> to move the accounting into __free_pages_core().
>>
>> Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
>> CC: David Hildenbrand <david@redhat.com>
>
>Acked-by: David Hildenbrand <david@redhat.com>
>
>Hoping this won't reveal other surprises.
>
:-)
>--
>Cheers,
>
>David / dhildenb
--
Wei Yang
Help you, Help me
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-06-11 23:58 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-06-11 14:52 [PATCH v2] mm/mm_init.c: print mem_init info after defer_init is done Wei Yang
2024-06-11 15:12 ` David Hildenbrand
2024-06-11 23:58 ` Wei Yang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox