Thread (14 messages) 14 messages, 2 authors, 2024-03-20

Re: [PATCH 4/6] mm/mm_init.c: remove meaningless calculation of zone->managed_pages in free_area_init_core()

From: Baoquan He <bhe@redhat.com>
Date: 2024-03-20 08:47:34
Also in: linux-mm, lkml

On 03/20/24 at 04:18pm, Baoquan He wrote:
On 03/19/24 at 06:17pm, Mike Rapoport wrote:
quoted
On Mon, Mar 18, 2024 at 10:21:36PM +0800, Baoquan He wrote:
quoted
Currently, in free_area_init_core(), when initialize zone's field, a
rough value is set to zone->managed_pages. That value is calculated by
(zone->present_pages - memmap_pages).

In the meantime, add the value to nr_all_pages and nr_kernel_pages which
represent all free pages of system (only low memory or including HIGHMEM
memory separately). Both of them are gonna be used in
alloc_large_system_hash().

However, the rough calculation and setting of zone->managed_pages is
meaningless because
  a) memmap pages are allocated on units of node in sparse_init() or
     alloc_node_mem_map(pgdat); The simple (zone->present_pages -
     memmap_pages) is too rough to make sense for zone;
  b) the set zone->managed_pages will be zeroed out and reset with
     acutal value in mem_init() via memblock_free_all(). Before the
     resetting, no buddy allocation request is issued.

Here, remove the meaningless and complicated calculation of
(zone->present_pages - memmap_pages), directly set zone->present_pages to
zone->managed_pages. It will be adjusted in mem_init().
Do you mean "set zone->managed_pages to zone->present_pages"?
Hmm, maybe 'set zone->managed_pages as zone->present_pages'
            or 
           'assign zone->present_pages to zone->managed_pages'
which is more precise.

Wwill update.
quoted
I think we can just set zone->managed_pages to 0 in free_area_init_core().
Anyway it will be reset before the first use.
Rethink about this, it's better to set zone->managed_pages to 0 because
there isn't any page added to buddy. Will update.
Yeah, setting to 0 is also fine. I thougt of 0 ever. Considering
zone->present_pages is closer value to actual zone->managed_pages
than 0, and it may be needed in the future in some way before
mem_init(). If no strong objection, I will keep the assigning
'zone->present_pages' to 'zone->managed_pages'.

Thanks again for careful reviewing.
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help