• Julian Stecklina's avatar
    x86/boot: Move kernel cmdline setup earlier in the boot process (again) · 4faa0e5d
    Julian Stecklina authored
    When split_lock_detect=off (or similar) is specified in
    CONFIG_CMDLINE, its effect is lost. The flow is currently this:
    
    	setup_arch():
    	  -> early_cpu_init()
    	    -> early_identify_cpu()
    	      -> sld_setup()
    		-> sld_state_setup()
    		  -> Looks for split_lock_detect in boot_command_line
    
    	  -> e820__memory_setup()
    
    	  -> Assemble final command line:
    	     boot_command_line = builtin_cmdline + boot_cmdline
    
    	  -> parse_early_param()
    
    There were earlier attempts at fixing this in:
    
      8d48bf82 ("x86/boot: Pull up cmdline preparation and early param parsing")
    
    later reverted in:
    
      fbe61839 ("Revert "x86/boot: Pull up cmdline preparation and early param parsing"")
    
    ... because parse_early_param() can't be called before
    e820__memory_setup().
    
    In this patch, we just move the command line concatenation to the
    beginning of early_cpu_init(). This should fix sld_state_setup(), while
    not running in the same issues as the earlier attempt.
    
    The order is now:
    
    	setup_arch():
    	  -> Assemble final command line:
    	     boot_command_line = builtin_cmdline + boot_cmdline
    
    	  -> early_cpu_init()
    	    -> early_identify_cpu()
    	      -> sld_setup()
    		-> sld_state_setup()
    		  -> Looks for split_lock_detect in boot_command_line
    
    	  -> e820__memory_setup()
    
    	  -> parse_early_param()
    Signed-off-by: default avatarJulian Stecklina <julian.stecklina@cyberus-technology.de>
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: linux-kernel@vger.kernel.org
    4faa0e5d
setup.c 31.1 KB