lkml.org 
[lkml]   [2024]   [Mar]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v2 4/6] mm/mm_init.c: remove meaningless calculation of zone->managed_pages in free_area_init_core()
    On Mon, Mar 25, 2024 at 10:56:44PM +0800, Baoquan He wrote:
    > 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), initialize zone->managed_pages as 0
    > which reflect its actual value because no any page is added into buddy
    > system right now. It will be reset in mem_init().
    >
    > And also remove the assignment of nr_all_pages and nr_kernel_pages in
    > free_area_init_core(). Instead, call the newly added calc_nr_kernel_pages()
    > to count up all free but not reserved memory in memblock and assign to
    > nr_all_pages and nr_kernel_pages. The counting excludes memmap_pages,
    > and other kernel used data, which is more accurate than old way and
    > simpler, and can also cover the ppc required arch_reserved_kernel_pages()
    > case.
    >
    > And also clean up the outdated code comment above free_area_init_core().
    > And free_area_init_core() is easy to understand now, no need to add
    > words to explain.
    >
    > Signed-off-by: Baoquan He <bhe@redhat.com>

    Reviewed-by: Mike Rapoport (IBM) <rppt@kernel.org>

    > ---
    > mm/mm_init.c | 46 +++++-----------------------------------------
    > 1 file changed, 5 insertions(+), 41 deletions(-)

    \
     
     \ /
      Last update: 2024-05-27 16:12    [W:4.109 / U:0.232 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site