diff options
Diffstat (limited to 'arch/i386/kernel/setup.c')
-rw-r--r-- | arch/i386/kernel/setup.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c index f1682206d304..16d99444cf66 100644 --- a/arch/i386/kernel/setup.c +++ b/arch/i386/kernel/setup.c | |||
@@ -53,6 +53,7 @@ | |||
53 | #include <asm/apic.h> | 53 | #include <asm/apic.h> |
54 | #include <asm/e820.h> | 54 | #include <asm/e820.h> |
55 | #include <asm/mpspec.h> | 55 | #include <asm/mpspec.h> |
56 | #include <asm/mmzone.h> | ||
56 | #include <asm/setup.h> | 57 | #include <asm/setup.h> |
57 | #include <asm/arch_hooks.h> | 58 | #include <asm/arch_hooks.h> |
58 | #include <asm/sections.h> | 59 | #include <asm/sections.h> |
@@ -934,6 +935,24 @@ static void __init parse_cmdline_early (char ** cmdline_p) | |||
934 | } | 935 | } |
935 | 936 | ||
936 | /* | 937 | /* |
938 | * reservetop=size reserves a hole at the top of the kernel address space which | ||
939 | * a hypervisor can load into later. Needed for dynamically loaded hypervisors, | ||
940 | * so relocating the fixmap can be done before paging initialization. | ||
941 | */ | ||
942 | static int __init parse_reservetop(char *arg) | ||
943 | { | ||
944 | unsigned long address; | ||
945 | |||
946 | if (!arg) | ||
947 | return -EINVAL; | ||
948 | |||
949 | address = memparse(arg, &arg); | ||
950 | reserve_top_address(address); | ||
951 | return 0; | ||
952 | } | ||
953 | early_param("reservetop", parse_reservetop); | ||
954 | |||
955 | /* | ||
937 | * Callback for efi_memory_walk. | 956 | * Callback for efi_memory_walk. |
938 | */ | 957 | */ |
939 | static int __init | 958 | static int __init |
@@ -1181,7 +1200,7 @@ static unsigned long __init setup_memory(void) | |||
1181 | 1200 | ||
1182 | void __init zone_sizes_init(void) | 1201 | void __init zone_sizes_init(void) |
1183 | { | 1202 | { |
1184 | unsigned long zones_size[MAX_NR_ZONES] = {0, 0, 0}; | 1203 | unsigned long zones_size[MAX_NR_ZONES] = { 0, }; |
1185 | unsigned int max_dma, low; | 1204 | unsigned int max_dma, low; |
1186 | 1205 | ||
1187 | max_dma = virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT; | 1206 | max_dma = virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT; |
@@ -1258,7 +1277,7 @@ void __init setup_bootmem_allocator(void) | |||
1258 | */ | 1277 | */ |
1259 | find_smp_config(); | 1278 | find_smp_config(); |
1260 | #endif | 1279 | #endif |
1261 | 1280 | numa_kva_reserve(); | |
1262 | #ifdef CONFIG_BLK_DEV_INITRD | 1281 | #ifdef CONFIG_BLK_DEV_INITRD |
1263 | if (LOADER_TYPE && INITRD_START) { | 1282 | if (LOADER_TYPE && INITRD_START) { |
1264 | if (INITRD_START + INITRD_SIZE <= (max_low_pfn << PAGE_SHIFT)) { | 1283 | if (INITRD_START + INITRD_SIZE <= (max_low_pfn << PAGE_SHIFT)) { |