mm: meminit: remove mminit_verify_page_links
[linux-2.6-block.git] / mm / internal.h
index a25e359a40396c9db36042e632b96fd912e99ded..a48cbefde8cae6e6e6ce320546e3e64a92bf968d 100644 (file)
@@ -155,7 +155,8 @@ __find_buddy_index(unsigned long page_idx, unsigned int order)
 }
 
 extern int __isolate_free_page(struct page *page, unsigned int order);
-extern void __free_pages_bootmem(struct page *page, unsigned int order);
+extern void __free_pages_bootmem(struct page *page, unsigned long pfn,
+                                       unsigned int order);
 extern void prep_compound_page(struct page *page, unsigned long order);
 #ifdef CONFIG_MEMORY_FAILURE
 extern bool is_free_buddy_page(struct page *page);
@@ -361,10 +362,7 @@ do { \
 } while (0)
 
 extern void mminit_verify_pageflags_layout(void);
-extern void mminit_verify_page_links(struct page *page,
-               enum zone_type zone, unsigned long nid, unsigned long pfn);
 extern void mminit_verify_zonelist(void);
-
 #else
 
 static inline void mminit_dprintk(enum mminit_level level,
@@ -376,15 +374,34 @@ static inline void mminit_verify_pageflags_layout(void)
 {
 }
 
-static inline void mminit_verify_page_links(struct page *page,
-               enum zone_type zone, unsigned long nid, unsigned long pfn)
+static inline void mminit_verify_zonelist(void)
 {
 }
+#endif /* CONFIG_DEBUG_MEMORY_INIT */
 
-static inline void mminit_verify_zonelist(void)
+/*
+ * Deferred struct page initialisation requires init functions that are freed
+ * before kswapd is available. Reuse the memory hotplug section annotation
+ * to mark the required code.
+ *
+ * __defermem_init is code that always exists but is annotated __meminit to
+ *     avoid section warnings.
+ * __defer_init code gets marked __meminit when deferring struct page
+ *     initialistion but is otherwise in the init section.
+ */
+#ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT
+#define __defermem_init __meminit
+#define __defer_init    __meminit
+
+void deferred_init_memmap(int nid);
+#else
+#define __defermem_init
+#define __defer_init __init
+
+static inline void deferred_init_memmap(int nid)
 {
 }
-#endif /* CONFIG_DEBUG_MEMORY_INIT */
+#endif
 
 /* mminit_validate_memmodel_limits is independent of CONFIG_DEBUG_MEMORY_INIT */
 #if defined(CONFIG_SPARSEMEM)