|
@@ -6364,6 +6364,21 @@ static void __ref alloc_node_mem_map(struct pglist_data *pgdat)
|
|
|
static void __ref alloc_node_mem_map(struct pglist_data *pgdat) { }
|
|
|
#endif /* CONFIG_FLAT_NODE_MEM_MAP */
|
|
|
|
|
|
+#ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT
|
|
|
+static inline void pgdat_set_deferred_range(pg_data_t *pgdat)
|
|
|
+{
|
|
|
+ /*
|
|
|
+ * We start only with one section of pages, more pages are added as
|
|
|
+ * needed until the rest of deferred pages are initialized.
|
|
|
+ */
|
|
|
+ pgdat->static_init_pgcnt = min_t(unsigned long, PAGES_PER_SECTION,
|
|
|
+ pgdat->node_spanned_pages);
|
|
|
+ pgdat->first_deferred_pfn = ULONG_MAX;
|
|
|
+}
|
|
|
+#else
|
|
|
+static inline void pgdat_set_deferred_range(pg_data_t *pgdat) {}
|
|
|
+#endif
|
|
|
+
|
|
|
void __meminit free_area_init_node(int nid, unsigned long *zones_size,
|
|
|
unsigned long node_start_pfn,
|
|
|
unsigned long *zholes_size)
|
|
@@ -6390,16 +6405,8 @@ void __meminit free_area_init_node(int nid, unsigned long *zones_size,
|
|
|
zones_size, zholes_size);
|
|
|
|
|
|
alloc_node_mem_map(pgdat);
|
|
|
+ pgdat_set_deferred_range(pgdat);
|
|
|
|
|
|
-#ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT
|
|
|
- /*
|
|
|
- * We start only with one section of pages, more pages are added as
|
|
|
- * needed until the rest of deferred pages are initialized.
|
|
|
- */
|
|
|
- pgdat->static_init_pgcnt = min_t(unsigned long, PAGES_PER_SECTION,
|
|
|
- pgdat->node_spanned_pages);
|
|
|
- pgdat->first_deferred_pfn = ULONG_MAX;
|
|
|
-#endif
|
|
|
free_area_init_core(pgdat);
|
|
|
}
|
|
|
|