Re: [PATCH v1 1/3] mm: pass meminit_context to __free_pages_core()

From: David Hildenbrand
Date: Mon Jun 10 2024 - 04:38:27 EST


On 10.06.24 06:03, Oscar Salvador wrote:
On Fri, Jun 07, 2024 at 11:09:36AM +0200, David Hildenbrand wrote:
In preparation for further changes, let's teach __free_pages_core()
about the differences of memory hotplug handling.

Move the memory hotplug specific handling from generic_online_page() to
__free_pages_core(), use adjust_managed_page_count() on the memory
hotplug path, and spell out why memory freed via memblock
cannot currently use adjust_managed_page_count().

Signed-off-by: David Hildenbrand <david@xxxxxxxxxx>

All looks good but I am puzzled with something.

+ } else {
+ /* memblock adjusts totalram_pages() ahead of time. */
+ atomic_long_add(nr_pages, &page_zone(page)->managed_pages);
+ }

You say that memblock adjusts totalram_pages ahead of time, and I guess
you mean in memblock_free_all()

And memblock_free_late(), which uses atomic_long_inc().


pages = free_low_memory_core_early()
totalram_pages_add(pages);

but that is not ahead, it looks like it is upading __after__ sending
them to buddy?

Right (it's suboptimal, but not really problematic so far. Hopefully Wei can clean it up and move it in here as well)

For the time being

"/* memblock adjusts totalram_pages() manually. */"

?

Thanks!

--
Cheers,

David / dhildenb