register_page_bootmem_info_node() is invoked in mem_init(), so it will be
called before page_alloc_init_late() if CONFIG_DEFERRED_STRUCT_PAGE_INIT
is enabled. But, pfn_to_nid() depends on memmap which won't be fully setup
until page_alloc_init_late() is done, so replace pfn_to_nid() by
early_pfn_to_nid().

Signed-off-by: Yang Shi <yang....@linaro.org>
---
 mm/memory_hotplug.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index caf2a14..b8ee080 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -300,7 +300,7 @@ void register_page_bootmem_info_node(struct pglist_data 
*pgdat)
                 * multiple nodes we check that this pfn does not already
                 * reside in some other nodes.
                 */
-               if (pfn_valid(pfn) && (pfn_to_nid(pfn) == node))
+               if (pfn_valid(pfn) && (early_pfn_to_nid(pfn) == node))
                        register_page_bootmem_info_section(pfn);
        }
 }
-- 
2.0.2

Reply via email to