Skip to content

Commit

Permalink
memblock: free_unused_memmap: use pageblock units instead of MAX_ORDER
Browse files Browse the repository at this point in the history
The code that frees unused memory map uses rounds start and end of the
holes that are freed to MAX_ORDER_NR_PAGES to preserve continuity of the
memory map for MAX_ORDER regions.

Lots of core memory management functionality relies on homogeneity of the
memory map within each pageblock which size may differ from MAX_ORDER in
certain configurations.

Although currently, for the architectures that use free_unused_memmap(),
pageblock_order and MAX_ORDER are equivalent, it is cleaner to have common
notation thought mm code.

Replace MAX_ORDER_NR_PAGES with pageblock_nr_pages and update the comments
to make it more clear why the alignment to pageblock boundaries is
required.

Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
Tested-by: Tony Lindgren <tony@atomide.com>
  • Loading branch information
Mike Rapoport committed Jun 30, 2021
1 parent c468154 commit e2a8680
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions mm/memblock.c
Original file line number Diff line number Diff line change
Expand Up @@ -1943,11 +1943,11 @@ static void __init free_unused_memmap(void)
start = min(start, ALIGN(prev_end, PAGES_PER_SECTION));
#else
/*
* Align down here since the VM subsystem insists that the
* memmap entries are valid from the bank start aligned to
* MAX_ORDER_NR_PAGES.
* Align down here since many operations in VM subsystem
* presume that there are no holes in the memory map inside
* a pageblock
*/
start = round_down(start, MAX_ORDER_NR_PAGES);
start = round_down(start, pageblock_nr_pages);
#endif

/*
Expand All @@ -1958,11 +1958,11 @@ static void __init free_unused_memmap(void)
free_memmap(prev_end, start);

/*
* Align up here since the VM subsystem insists that the
* memmap entries are valid from the bank end aligned to
* MAX_ORDER_NR_PAGES.
* Align up here since many operations in VM subsystem
* presume that there are no holes in the memory map inside
* a pageblock
*/
prev_end = ALIGN(end, MAX_ORDER_NR_PAGES);
prev_end = ALIGN(end, pageblock_nr_pages);
}

#ifdef CONFIG_SPARSEMEM
Expand Down

0 comments on commit e2a8680

Please sign in to comment.