The documented behaviour for CMDLINE_EXTEND is that the arguments from
the bootloader are appended to the built-in kernel command line. This
also matches the option parsing behaviour for the EFI stub and early ID
register overrides.

Bizarrely, the fdt behaviour is the other way around: appending the
built-in command line to the bootloader arguments, resulting in a
command-line that doesn't necessarily line-up with the parsing order and
definitely doesn't line-up with the documented behaviour.

As it turns out, there is a proposal [1] to replace CMDLINE_EXTEND with
CMDLINE_PREPEND and CMDLINE_APPEND options which should hopefully make
the intended behaviour much clearer. While we wait for those to land,
drop CMDLINE_EXTEND for now as there appears to be little enthusiasm for
changing the current FDT behaviour.

[1] https://lore.kernel.org/lkml/20190319232448.45964-2-danie...@cisco.com/

Cc: Max Uvarov <muva...@gmail.com>
Cc: Rob Herring <r...@kernel.org>
Cc: Ard Biesheuvel <a...@kernel.org>
Cc: Marc Zyngier <m...@kernel.org>
Cc: Doug Anderson <diand...@chromium.org>
Cc: Tyler Hicks <tyhi...@linux.microsoft.com>
Cc: Frank Rowand <frowand.l...@gmail.com>
Cc: Catalin Marinas <catalin.mari...@arm.com>
Link: 
https://lore.kernel.org/r/CAL_JsqJX=TCCs7=gg486r9tn4nyscmtclnfqjf9crskkpq-...@mail.gmail.com
Signed-off-by: Will Deacon <w...@kernel.org>
---
 arch/arm64/Kconfig                 | 6 ------
 arch/arm64/kernel/idreg-override.c | 5 +----
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 1f212b47a48a..f15418332d16 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -1855,12 +1855,6 @@ config CMDLINE_FROM_BOOTLOADER
          the boot loader doesn't provide any, the default kernel command
          string provided in CMDLINE will be used.
 
-config CMDLINE_EXTEND
-       bool "Extend bootloader kernel arguments"
-       help
-         The command-line arguments provided by the boot loader will be
-         appended to the default kernel command string.
-
 config CMDLINE_FORCE
        bool "Always use the default kernel command string"
        help
diff --git a/arch/arm64/kernel/idreg-override.c 
b/arch/arm64/kernel/idreg-override.c
index cc071712c6f9..83f1c4b92095 100644
--- a/arch/arm64/kernel/idreg-override.c
+++ b/arch/arm64/kernel/idreg-override.c
@@ -188,11 +188,8 @@ static __init void parse_cmdline(void)
 {
        const u8 *prop = get_bootargs_cmdline();
 
-       if (IS_ENABLED(CONFIG_CMDLINE_EXTEND) ||
-           IS_ENABLED(CONFIG_CMDLINE_FORCE) ||
-           !prop) {
+       if (IS_ENABLED(CONFIG_CMDLINE_FORCE) || !prop)
                __parse_cmdline(CONFIG_CMDLINE, true);
-       }
 
        if (!IS_ENABLED(CONFIG_CMDLINE_FORCE) && prop)
                __parse_cmdline(prop, true);
-- 
2.30.1.766.gb4fecdf3b7-goog

Reply via email to