0001
0002 #include <linux/types.h>
0003 #include <linux/init.h>
0004 #include <linux/slab.h>
0005 #include <linux/memblock.h>
0006 #include <linux/string.h>
0007 #include <asm/setup.h>
0008
0009
0010 void * __ref zalloc_maybe_bootmem(size_t size, gfp_t mask)
0011 {
0012 void *p;
0013
0014 if (slab_is_available())
0015 p = kzalloc(size, mask);
0016 else {
0017 p = memblock_alloc(size, SMP_CACHE_BYTES);
0018 if (!p)
0019 panic("%s: Failed to allocate %zu bytes\n", __func__,
0020 size);
0021 }
0022 return p;
0023 }