diff --git a/arch/mips/kernel/prom.c b/arch/mips/kernel/prom.c
index e303cb1ef2f41d5ecc27c8735b2f6e211143b4c8..4b17b6532ddcc9196b39561589133871f7b8a547 100644
--- a/arch/mips/kernel/prom.c
+++ b/arch/mips/kernel/prom.c
@@ -50,6 +50,9 @@ void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
 
 void __init __dt_setup_arch(void *bph)
 {
+	if (boot_command_line[0] == '\0')
+		strcpy(boot_command_line, arcs_cmdline);
+
 	if (!early_init_dt_scan(bph))
 		return;
 
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index d91f721a05b6622f3ee6914825b37adb580d869d..7bc089353dd513fb6638b5ee773cbf778de08eb3 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -935,6 +935,9 @@ int __init early_init_dt_scan_chosen(unsigned long node, const char *uname,
 	p = of_get_flat_dt_prop(node, "bootargs", &l);
 	if (p != NULL && l > 0)
 		strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE));
+	p = of_get_flat_dt_prop(node, "bootargs-append", &l);
+	if (p != NULL && l > 0)
+		strlcat(data, p, min_t(int, strlen(data) + (int)l, COMMAND_LINE_SIZE));
 
 	/*
 	 * CONFIG_CMDLINE is meant to be a default in case nothing else