diff options
Diffstat (limited to 'arch/x86/kernel/setup.c')
-rw-r--r-- | arch/x86/kernel/setup.c | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index 68b48e3fbcbd..141efab52400 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c | |||
@@ -223,6 +223,9 @@ unsigned long saved_video_mode; | |||
223 | #define RAMDISK_LOAD_FLAG 0x4000 | 223 | #define RAMDISK_LOAD_FLAG 0x4000 |
224 | 224 | ||
225 | static char __initdata command_line[COMMAND_LINE_SIZE]; | 225 | static char __initdata command_line[COMMAND_LINE_SIZE]; |
226 | #ifdef CONFIG_CMDLINE_BOOL | ||
227 | static char __initdata builtin_cmdline[COMMAND_LINE_SIZE] = CONFIG_CMDLINE; | ||
228 | #endif | ||
226 | 229 | ||
227 | #if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE) | 230 | #if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE) |
228 | struct edd edd; | 231 | struct edd edd; |
@@ -445,7 +448,7 @@ static void __init reserve_early_setup_data(void) | |||
445 | * @size: Size of the crashkernel memory to reserve. | 448 | * @size: Size of the crashkernel memory to reserve. |
446 | * Returns the base address on success, and -1ULL on failure. | 449 | * Returns the base address on success, and -1ULL on failure. |
447 | */ | 450 | */ |
448 | unsigned long long find_and_reserve_crashkernel(unsigned long long size) | 451 | unsigned long long __init find_and_reserve_crashkernel(unsigned long long size) |
449 | { | 452 | { |
450 | const unsigned long long alignment = 16<<20; /* 16M */ | 453 | const unsigned long long alignment = 16<<20; /* 16M */ |
451 | unsigned long long start = 0LL; | 454 | unsigned long long start = 0LL; |
@@ -604,14 +607,6 @@ void __init setup_arch(char **cmdline_p) | |||
604 | early_cpu_init(); | 607 | early_cpu_init(); |
605 | early_ioremap_init(); | 608 | early_ioremap_init(); |
606 | 609 | ||
607 | #if defined(CONFIG_VMI) && defined(CONFIG_X86_32) | ||
608 | /* | ||
609 | * Must be before kernel pagetables are setup | ||
610 | * or fixmap area is touched. | ||
611 | */ | ||
612 | vmi_init(); | ||
613 | #endif | ||
614 | |||
615 | ROOT_DEV = old_decode_dev(boot_params.hdr.root_dev); | 610 | ROOT_DEV = old_decode_dev(boot_params.hdr.root_dev); |
616 | screen_info = boot_params.screen_info; | 611 | screen_info = boot_params.screen_info; |
617 | edid_info = boot_params.edid_info; | 612 | edid_info = boot_params.edid_info; |
@@ -673,11 +668,36 @@ void __init setup_arch(char **cmdline_p) | |||
673 | bss_resource.start = virt_to_phys(&__bss_start); | 668 | bss_resource.start = virt_to_phys(&__bss_start); |
674 | bss_resource.end = virt_to_phys(&__bss_stop)-1; | 669 | bss_resource.end = virt_to_phys(&__bss_stop)-1; |
675 | 670 | ||
671 | #ifdef CONFIG_CMDLINE_BOOL | ||
672 | #ifdef CONFIG_CMDLINE_OVERRIDE | ||
673 | strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE); | ||
674 | #else | ||
675 | if (builtin_cmdline[0]) { | ||
676 | /* append boot loader cmdline to builtin */ | ||
677 | strlcat(builtin_cmdline, " ", COMMAND_LINE_SIZE); | ||
678 | strlcat(builtin_cmdline, boot_command_line, COMMAND_LINE_SIZE); | ||
679 | strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE); | ||
680 | } | ||
681 | #endif | ||
682 | #endif | ||
683 | |||
676 | strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE); | 684 | strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE); |
677 | *cmdline_p = command_line; | 685 | *cmdline_p = command_line; |
678 | 686 | ||
679 | parse_early_param(); | 687 | parse_early_param(); |
680 | 688 | ||
689 | #ifdef CONFIG_X86_64 | ||
690 | check_efer(); | ||
691 | #endif | ||
692 | |||
693 | #if defined(CONFIG_VMI) && defined(CONFIG_X86_32) | ||
694 | /* | ||
695 | * Must be before kernel pagetables are setup | ||
696 | * or fixmap area is touched. | ||
697 | */ | ||
698 | vmi_init(); | ||
699 | #endif | ||
700 | |||
681 | /* after early param, so could get panic from serial */ | 701 | /* after early param, so could get panic from serial */ |
682 | reserve_early_setup_data(); | 702 | reserve_early_setup_data(); |
683 | 703 | ||
@@ -738,7 +758,6 @@ void __init setup_arch(char **cmdline_p) | |||
738 | #else | 758 | #else |
739 | num_physpages = max_pfn; | 759 | num_physpages = max_pfn; |
740 | 760 | ||
741 | check_efer(); | ||
742 | 761 | ||
743 | /* How many end-of-memory variables you have, grandma! */ | 762 | /* How many end-of-memory variables you have, grandma! */ |
744 | /* need this before calling reserve_initrd */ | 763 | /* need this before calling reserve_initrd */ |