|
@@ -566,6 +566,28 @@ void __init iotable_init(struct map_desc *io_desc, int nr)
|
|
|
create_mapping(io_desc + i);
|
|
|
}
|
|
|
|
|
|
+static unsigned long __initdata vmalloc_reserve = SZ_128M;
|
|
|
+
|
|
|
+/*
|
|
|
+ * vmalloc=size forces the vmalloc area to be exactly 'size'
|
|
|
+ * bytes. This can be used to increase (or decrease) the vmalloc
|
|
|
+ * area - the default is 128m.
|
|
|
+ */
|
|
|
+static void __init early_vmalloc(char **arg)
|
|
|
+{
|
|
|
+ vmalloc_reserve = memparse(*arg, arg);
|
|
|
+
|
|
|
+ if (vmalloc_reserve < SZ_16M) {
|
|
|
+ vmalloc_reserve = SZ_16M;
|
|
|
+ printk(KERN_WARNING
|
|
|
+ "vmalloc area too small, limiting to %luMB\n",
|
|
|
+ vmalloc_reserve >> 20);
|
|
|
+ }
|
|
|
+}
|
|
|
+__early_param("vmalloc=", early_vmalloc);
|
|
|
+
|
|
|
+#define VMALLOC_MIN (void *)(VMALLOC_END - vmalloc_reserve)
|
|
|
+
|
|
|
static int __init check_membank_valid(struct membank *mb)
|
|
|
{
|
|
|
/*
|