|
@@ -24,6 +24,7 @@
|
|
|
#include <linux/rbtree.h>
|
|
|
#include <linux/radix-tree.h>
|
|
|
#include <linux/rcupdate.h>
|
|
|
+#include <linux/bootmem.h>
|
|
|
|
|
|
#include <asm/atomic.h>
|
|
|
#include <asm/uaccess.h>
|
|
@@ -984,6 +985,8 @@ EXPORT_SYMBOL(vm_map_ram);
|
|
|
|
|
|
void __init vmalloc_init(void)
|
|
|
{
|
|
|
+ struct vmap_area *va;
|
|
|
+ struct vm_struct *tmp;
|
|
|
int i;
|
|
|
|
|
|
for_each_possible_cpu(i) {
|
|
@@ -996,6 +999,14 @@ void __init vmalloc_init(void)
|
|
|
vbq->nr_dirty = 0;
|
|
|
}
|
|
|
|
|
|
+ /* Import existing vmlist entries. */
|
|
|
+ for (tmp = vmlist; tmp; tmp = tmp->next) {
|
|
|
+ va = alloc_bootmem(sizeof(struct vmap_area));
|
|
|
+ va->flags = tmp->flags | VM_VM_AREA;
|
|
|
+ va->va_start = (unsigned long)tmp->addr;
|
|
|
+ va->va_end = va->va_start + tmp->size;
|
|
|
+ __insert_vmap_area(va);
|
|
|
+ }
|
|
|
vmap_initialized = true;
|
|
|
}
|
|
|
|