2021-02-20 02:59:29 +00:00
|
|
|
From f15d27f9c90ede4b16eb37f9ae573ef81c2b6996 Mon Sep 17 00:00:00 2001
|
|
|
|
From: David Bauer <mail@david-bauer.net>
|
|
|
|
Date: Thu, 31 Dec 2020 18:49:12 +0100
|
|
|
|
Subject: [PATCH] MIPS: add bootargs-override property
|
|
|
|
|
|
|
|
Add support for the bootargs-override property to the chosen node
|
|
|
|
similar to the one used on ipq806x or mpc85xx.
|
|
|
|
|
|
|
|
This is necessary, as the U-Boot used on some boards, notably the
|
|
|
|
Ubiquiti UniFi 6 Lite, overwrite the bootargs property of the chosen
|
|
|
|
node leading to a kernel panic when loading OpenWrt.
|
|
|
|
|
|
|
|
Signed-off-by: David Bauer <mail@david-bauer.net>
|
|
|
|
---
|
|
|
|
arch/mips/kernel/setup.c | 30 ++++++++++++++++++++++++++++++
|
|
|
|
1 file changed, 30 insertions(+)
|
|
|
|
|
|
|
|
--- a/arch/mips/kernel/setup.c
|
|
|
|
+++ b/arch/mips/kernel/setup.c
|
2021-02-20 03:11:14 +00:00
|
|
|
@@ -542,8 +542,28 @@ static int __init bootcmdline_scan_chose
|
|
|
|
|
|
|
|
#endif /* CONFIG_OF_EARLY_FLATTREE */
|
2021-02-20 02:59:29 +00:00
|
|
|
|
|
|
|
+static int __init bootcmdline_scan_chosen_override(unsigned long node, const char *uname,
|
|
|
|
+ int depth, void *data)
|
|
|
|
+{
|
|
|
|
+ bool *dt_bootargs = data;
|
|
|
|
+ const char *p;
|
|
|
|
+ int l;
|
|
|
|
+
|
|
|
|
+ if (depth != 1 || !data || strcmp(uname, "chosen") != 0)
|
|
|
|
+ return 0;
|
|
|
|
+
|
|
|
|
+ p = of_get_flat_dt_prop(node, "bootargs-override", &l);
|
|
|
|
+ if (p != NULL && l > 0) {
|
|
|
|
+ strlcpy(boot_command_line, p, COMMAND_LINE_SIZE);
|
|
|
|
+ *dt_bootargs = true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return 1;
|
|
|
|
+}
|
|
|
|
+
|
2021-02-20 03:11:14 +00:00
|
|
|
static void __init bootcmdline_init(void)
|
2021-02-20 02:59:29 +00:00
|
|
|
{
|
|
|
|
+ bool dt_bootargs_override = false;
|
|
|
|
bool dt_bootargs = false;
|
|
|
|
|
|
|
|
/*
|
2021-02-20 03:11:14 +00:00
|
|
|
@@ -557,6 +577,14 @@ static void __init bootcmdline_init(void
|
2021-02-20 02:59:29 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
+ * If bootargs-override in the chosen node is set, use this as the
|
|
|
|
+ * command line
|
|
|
|
+ */
|
|
|
|
+ of_scan_flat_dt(bootcmdline_scan_chosen_override, &dt_bootargs_override);
|
|
|
|
+ if (dt_bootargs_override)
|
|
|
|
+ return;
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
* If the user specified a built-in command line &
|
|
|
|
* MIPS_CMDLINE_BUILTIN_EXTEND, then the built-in command line is
|
|
|
|
* prepended to arguments from the bootloader or DT so we'll copy them
|