|
@@ -338,7 +338,7 @@ static void __init bootmem_init(void)
|
|
|
if (end <= reserved_end)
|
|
|
continue;
|
|
|
#ifdef CONFIG_BLK_DEV_INITRD
|
|
|
- /* mapstart should be after initrd_end */
|
|
|
+ /* Skip zones before initrd and initrd itself */
|
|
|
if (initrd_end && end <= (unsigned long)PFN_UP(__pa(initrd_end)))
|
|
|
continue;
|
|
|
#endif
|
|
@@ -371,6 +371,14 @@ static void __init bootmem_init(void)
|
|
|
max_low_pfn = PFN_DOWN(HIGHMEM_START);
|
|
|
}
|
|
|
|
|
|
+#ifdef CONFIG_BLK_DEV_INITRD
|
|
|
+ /*
|
|
|
+ * mapstart should be after initrd_end
|
|
|
+ */
|
|
|
+ if (initrd_end)
|
|
|
+ mapstart = max(mapstart, (unsigned long)PFN_UP(__pa(initrd_end)));
|
|
|
+#endif
|
|
|
+
|
|
|
/*
|
|
|
* Initialize the boot-time allocator with low memory only.
|
|
|
*/
|