|
@@ -773,13 +773,22 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * begin/end can be in the direct map or the "high kernel mapping"
|
|
|
|
+ * used for the kernel image only. free_init_pages() will do the
|
|
|
|
+ * right thing for either kind of address.
|
|
|
|
+ */
|
|
|
|
+void free_kernel_image_pages(void *begin, void *end)
|
|
|
|
+{
|
|
|
|
+ free_init_pages("unused kernel image",
|
|
|
|
+ (unsigned long)begin, (unsigned long)end);
|
|
|
|
+}
|
|
|
|
+
|
|
void __ref free_initmem(void)
|
|
void __ref free_initmem(void)
|
|
{
|
|
{
|
|
e820__reallocate_tables();
|
|
e820__reallocate_tables();
|
|
|
|
|
|
- free_init_pages("unused kernel",
|
|
|
|
- (unsigned long)(&__init_begin),
|
|
|
|
- (unsigned long)(&__init_end));
|
|
|
|
|
|
+ free_kernel_image_pages(&__init_begin, &__init_end);
|
|
}
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_BLK_DEV_INITRD
|
|
#ifdef CONFIG_BLK_DEV_INITRD
|