| 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 |
| @@ -571,8 +571,28 @@ static int __init bootcmdline_scan_chose |
| return 1; |
| } |
| |
| +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; |
| +} |
| + |
| static void __init bootcmdline_init(char **cmdline_p) |
| { |
| + bool dt_bootargs_override = false; |
| bool dt_bootargs = false; |
| |
| /* |
| @@ -586,6 +606,14 @@ static void __init bootcmdline_init(char |
| } |
| |
| /* |
| + * 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 |