Revert "x86/boot: Pull up cmdline preparation and early param parsing"

This reverts commit 8d48bf8206f77aa8687f0e241e901e5197e52423.

It turned out to be a bad idea as it broke supplying mem= cmdline
parameters due to parse_memopt() requiring preparatory work like setting
up the e820 table in e820__memory_setup() in order to be able to exclude
the range specified by mem=.

Pulling that up would've broken Xen PV again, see threads at

https://lkml.kernel.org/r/20210920120421.29276-1-jgross@suse.com

due to xen_memory_setup() needing the first reservations in
early_reserve_memory() - kernel and initrd - to have happened already.

This could be fixed again by having Xen do those reservations itself...

Long story short, revert this and do a simpler fix in a later patch.

Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lore.kernel.org/r/20211213112757.2612-3-bp@alien8.de

Changed files
+27 -39
arch
x86
kernel
+27 -39
arch/x86/kernel/setup.c
··· 742 742 return 0; 743 743 } 744 744 745 - static char *prepare_command_line(void) 746 - { 747 - #ifdef CONFIG_CMDLINE_BOOL 748 - #ifdef CONFIG_CMDLINE_OVERRIDE 749 - strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE); 750 - #else 751 - if (builtin_cmdline[0]) { 752 - /* append boot loader cmdline to builtin */ 753 - strlcat(builtin_cmdline, " ", COMMAND_LINE_SIZE); 754 - strlcat(builtin_cmdline, boot_command_line, COMMAND_LINE_SIZE); 755 - strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE); 756 - } 757 - #endif 758 - #endif 759 - 760 - strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE); 761 - 762 - parse_early_param(); 763 - 764 - return command_line; 765 - } 766 - 767 745 /* 768 746 * Determine if we were loaded by an EFI loader. If so, then we have also been 769 747 * passed the efi memmap, systab, etc., so we should use these data structures ··· 831 853 x86_init.oem.arch_setup(); 832 854 833 855 /* 834 - * x86_configure_nx() is called before parse_early_param() (called by 835 - * prepare_command_line()) to detect whether hardware doesn't support 836 - * NX (so that the early EHCI debug console setup can safely call 837 - * set_fixmap()). It may then be called again from within noexec_setup() 838 - * during parsing early parameters to honor the respective command line 839 - * option. 840 - */ 841 - x86_configure_nx(); 842 - 843 - /* 844 - * This parses early params and it needs to run before 845 - * early_reserve_memory() because latter relies on such settings 846 - * supplied as early params. 847 - */ 848 - *cmdline_p = prepare_command_line(); 849 - 850 - /* 851 856 * Do some memory reservations *before* memory is added to memblock, so 852 857 * memblock allocations won't overwrite it. 853 858 * ··· 862 901 data_resource.end = __pa_symbol(_edata)-1; 863 902 bss_resource.start = __pa_symbol(__bss_start); 864 903 bss_resource.end = __pa_symbol(__bss_stop)-1; 904 + 905 + #ifdef CONFIG_CMDLINE_BOOL 906 + #ifdef CONFIG_CMDLINE_OVERRIDE 907 + strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE); 908 + #else 909 + if (builtin_cmdline[0]) { 910 + /* append boot loader cmdline to builtin */ 911 + strlcat(builtin_cmdline, " ", COMMAND_LINE_SIZE); 912 + strlcat(builtin_cmdline, boot_command_line, COMMAND_LINE_SIZE); 913 + strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE); 914 + } 915 + #endif 916 + #endif 917 + 918 + strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE); 919 + *cmdline_p = command_line; 920 + 921 + /* 922 + * x86_configure_nx() is called before parse_early_param() to detect 923 + * whether hardware doesn't support NX (so that the early EHCI debug 924 + * console setup can safely call set_fixmap()). It may then be called 925 + * again from within noexec_setup() during parsing early parameters 926 + * to honor the respective command line option. 927 + */ 928 + x86_configure_nx(); 929 + 930 + parse_early_param(); 865 931 866 932 #ifdef CONFIG_MEMORY_HOTPLUG 867 933 /*