diff options
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 05c0a59323bd..6da3169d3750 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -5103,8 +5103,17 @@ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone, | |||
5103 | if (context != MEMMAP_EARLY) | 5103 | if (context != MEMMAP_EARLY) |
5104 | goto not_early; | 5104 | goto not_early; |
5105 | 5105 | ||
5106 | if (!early_pfn_valid(pfn)) | 5106 | if (!early_pfn_valid(pfn)) { |
5107 | #ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP | ||
5108 | /* | ||
5109 | * Skip to the pfn preceding the next valid one (or | ||
5110 | * end_pfn), such that we hit a valid pfn (or end_pfn) | ||
5111 | * on our next iteration of the loop. | ||
5112 | */ | ||
5113 | pfn = memblock_next_valid_pfn(pfn, end_pfn) - 1; | ||
5114 | #endif | ||
5107 | continue; | 5115 | continue; |
5116 | } | ||
5108 | if (!early_pfn_in_nid(pfn, nid)) | 5117 | if (!early_pfn_in_nid(pfn, nid)) |
5109 | continue; | 5118 | continue; |
5110 | if (!update_defer_init(pgdat, pfn, end_pfn, &nr_initialised)) | 5119 | if (!update_defer_init(pgdat, pfn, end_pfn, &nr_initialised)) |