• Paul Burton's avatar
    MIPS: cmdline: Clean up boot_command_line initialization · 7784cac6
    Paul Burton authored
    Our current code to initialize boot_command_line is a mess. Some of this
    is due to the addition of too many options over the years, and some of
    this is due to workarounds for early_init_dt_scan_chosen() performing
    actions specific to options from other architectures that probably
    shouldn't be in generic code.
    
    Clean this up by introducing a new bootcmdline_init() function that
    simplifies the initialization somewhat. The major changes are:
    
    - Because bootcmdline_init() is a function it can return early in the
      CONFIG_CMDLINE_OVERRIDE case.
    
    - We clear boot_command_line rather than inheriting whatever
      early_init_dt_scan_chosen() may have left us. This means we no longer
      need to set boot_command_line to a space character in an attempt to
      prevent early_init_dt_scan_chosen() from copying CONFIG_CMDLINE into
      boot_command_line without us knowing about it.
    
    - Indirection via USE_PROM_CMDLINE, USE_DTB_CMDLINE, EXTEND_WITH_PROM &
      BUILTIN_EXTEND_WITH_PROM macros is removed; they seemingly served only
      to obfuscate the code.
    
    - The logic is cleaner, clearer & commented.
    
    Two minor drawbacks of this approach are:
    
    1) We call of_scan_flat_dt(), which means we scan through the DT again.
       The overhead is fairly minimal & shouldn't be noticeable.
    
    2) cmdline_scan_chosen() duplicates a small amount of the logic from
       early_init_dt_scan_chosen(). Alternatives might be to allow the
       generic FDT code to keep & expose a copy of the arguments taken from
       the /chosen node's bootargs property, or to introduce a function like
       early_init_dt_scan_chosen() that retrieves them without modification
       to handle CONFIG_CMDLINE. Neither of these sounds particularly
       cleaner though, and this way we at least keep the extra work in
       arch/mips.
    Signed-off-by: default avatarPaul Burton <paul.burton@mips.com>
    Cc: linux-mips@vger.kernel.org
    7784cac6
setup.c 21 KB