Linux MIPS Architecture development
 help / color / mirror / Atom feed
* [PATCH] MIPS: malta: pass fw arguments on kexec
@ 2015-02-25 15:21 Aaro Koskinen
  2015-03-31 11:13 ` Ralf Baechle
  0 siblings, 1 reply; 4+ messages in thread
From: Aaro Koskinen @ 2015-02-25 15:21 UTC (permalink / raw)
  To: Ralf Baechle, Paul Burton, linux-mips; +Cc: Aaro Koskinen

Pass fw arguments on kexec to the new kernel.

Tested with MIPS64 QEMU. Without the patch the new kernel will default to
(likely) incorrect default memory and console setup, making kexec pretty
much useless.

Signed-off-by: Aaro Koskinen <aaro.koskinen@nokia.com>
---
 arch/mips/mti-malta/malta-reset.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/arch/mips/mti-malta/malta-reset.c b/arch/mips/mti-malta/malta-reset.c
index 2fd2cc2..f218ba8 100644
--- a/arch/mips/mti-malta/malta-reset.c
+++ b/arch/mips/mti-malta/malta-reset.c
@@ -8,8 +8,10 @@
  */
 #include <linux/io.h>
 #include <linux/pm.h>
+#include <linux/kexec.h>
 
 #include <asm/reboot.h>
+#include <asm/bootinfo.h>
 #include <asm/mach-malta/malta-pm.h>
 
 #define SOFTRES_REG	0x1f000500
@@ -36,8 +38,19 @@ static void mips_machine_power_off(void)
 	mips_machine_restart(NULL);
 }
 
+static int mips_kexec_prepare(struct kimage *image)
+{
+	kexec_args[0] = fw_arg0;
+	kexec_args[1] = fw_arg1;
+	kexec_args[2] = fw_arg2;
+	kexec_args[3] = fw_arg3;
+
+	return 0;
+}
+
 static int __init mips_reboot_setup(void)
 {
+	_machine_kexec_prepare = mips_kexec_prepare;
 	_machine_restart = mips_machine_restart;
 	_machine_halt = mips_machine_halt;
 	pm_power_off = mips_machine_power_off;
-- 
2.1.2

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-03-31 14:19 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-02-25 15:21 [PATCH] MIPS: malta: pass fw arguments on kexec Aaro Koskinen
2015-03-31 11:13 ` Ralf Baechle
2015-03-31 12:56   ` Aaro Koskinen
2015-03-31 14:19     ` Ralf Baechle

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox