Yajun Deng 61167ad5fe mm: pass nid to reserve_bootmem_region()
early_pfn_to_nid() is called frequently in init_reserved_page(), it
returns the node id of the PFN.  These PFN are probably from the same
memory region, they have the same node id.  It's not necessary to call
early_pfn_to_nid() for each PFN.

Pass nid to reserve_bootmem_region() and drop the call to
early_pfn_to_nid() in init_reserved_page().  Also, set nid on all reserved
pages before doing this, as some reserved memory regions may not be set
nid.

The most beneficial function is memmap_init_reserved_pages() if
CONFIG_DEFERRED_STRUCT_PAGE_INIT is enabled.

The following data was tested on an x86 machine with 190GB of RAM.

before:
memmap_init_reserved_pages()  67ms

after:
memmap_init_reserved_pages()  20ms

Link: https://lkml.kernel.org/r/20230619023406.424298-1-yajun.deng@linux.dev
Signed-off-by: Yajun Deng <yajun.deng@linux.dev>
Reviewed-by: Mike Rapoport (IBM) <rppt@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2023-06-23 16:59:27 -07:00
..
2023-06-09 16:25:17 -07:00
2023-01-18 17:12:57 -08:00
2023-06-19 16:19:05 -07:00
2023-06-19 16:19:25 -07:00
2023-06-19 16:19:25 -07:00
2023-06-19 16:19:25 -07:00
2023-06-19 16:19:25 -07:00
2023-06-19 16:19:25 -07:00
2023-04-30 13:00:38 -07:00
2023-06-19 16:19:05 -07:00
2023-06-19 16:19:25 -07:00
2023-04-12 17:36:23 -07:00
2023-06-19 16:19:25 -07:00
2023-06-19 16:19:25 -07:00
2023-06-19 16:19:25 -07:00
2023-06-19 16:19:25 -07:00
2023-06-19 16:19:25 -07:00
2023-06-19 16:19:25 -07:00
2023-06-19 16:19:25 -07:00
2022-10-03 14:02:43 -07:00
2022-09-26 19:46:09 -07:00
2023-06-19 16:19:25 -07:00
2023-06-19 16:19:25 -07:00
2023-06-19 16:19:25 -07:00
2023-06-19 16:19:25 -07:00
2023-06-19 16:19:25 -07:00
2023-06-19 16:19:25 -07:00
2023-06-19 16:19:25 -07:00
2023-06-19 16:19:25 -07:00
2023-04-12 17:36:23 -07:00
2023-06-19 16:19:25 -07:00
2023-04-08 13:45:37 -07:00