|
@@ -596,7 +596,7 @@ static void * __init alloc_arch_preferred_bootmem(bootmem_data_t *bdata,
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
-static void * __init ___alloc_bootmem_nopanic(unsigned long size,
|
|
|
+static void * __init alloc_bootmem_core(unsigned long size,
|
|
|
unsigned long align,
|
|
|
unsigned long goal,
|
|
|
unsigned long limit)
|
|
@@ -604,7 +604,6 @@ static void * __init ___alloc_bootmem_nopanic(unsigned long size,
|
|
|
bootmem_data_t *bdata;
|
|
|
void *region;
|
|
|
|
|
|
-restart:
|
|
|
region = alloc_arch_preferred_bootmem(NULL, size, align, goal, limit);
|
|
|
if (region)
|
|
|
return region;
|
|
@@ -620,6 +619,20 @@ restart:
|
|
|
return region;
|
|
|
}
|
|
|
|
|
|
+ return NULL;
|
|
|
+}
|
|
|
+
|
|
|
+static void * __init ___alloc_bootmem_nopanic(unsigned long size,
|
|
|
+ unsigned long align,
|
|
|
+ unsigned long goal,
|
|
|
+ unsigned long limit)
|
|
|
+{
|
|
|
+ void *ptr;
|
|
|
+
|
|
|
+restart:
|
|
|
+ ptr = alloc_bootmem_core(size, align, goal, limit);
|
|
|
+ if (ptr)
|
|
|
+ return ptr;
|
|
|
if (goal) {
|
|
|
goal = 0;
|
|
|
goto restart;
|