mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-12-11 09:03:08 +02:00
75d051e29d
Based on 3.3-rc2 git-svn-id: svn://svn.openwrt.org/openwrt/trunk@29986 3c298f89-4303-0410-b956-a3cf2f4a3e73
53 lines
1.5 KiB
Diff
53 lines
1.5 KiB
Diff
From 49d07a29653b1f2c6ae273b3d8fe93d981f43004 Mon Sep 17 00:00:00 2001
|
|
From: Wu Zhangjin <wuzhangjin@gmail.com>
|
|
Date: Wed, 12 Jan 2011 20:59:32 +0000
|
|
Subject: MIPS: Kexec: Init the arguments for the new kernel image
|
|
|
|
Whenever the kexec-tools pass the command lines to the new kernel image,
|
|
init the arguments as the ones for the 1st kernel image. This fixed the
|
|
booting failure of Kexec on YeeLoong.
|
|
|
|
Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
|
|
---
|
|
--- a/arch/mips/kernel/machine_kexec.c
|
|
+++ b/arch/mips/kernel/machine_kexec.c
|
|
@@ -10,6 +10,7 @@
|
|
#include <linux/mm.h>
|
|
#include <linux/delay.h>
|
|
|
|
+#include <asm/bootinfo.h>
|
|
#include <asm/cacheflush.h>
|
|
#include <asm/page.h>
|
|
|
|
@@ -21,9 +22,30 @@ void (*relocated_kexec_smp_wait) (void *
|
|
atomic_t kexec_ready_to_reboot = ATOMIC_INIT(0);
|
|
#endif
|
|
|
|
+static void machine_kexec_init_args(void)
|
|
+{
|
|
+ kexec_args[0] = fw_arg0;
|
|
+ kexec_args[1] = fw_arg1;
|
|
+ kexec_args[2] = fw_arg2;
|
|
+ kexec_args[3] = fw_arg3;
|
|
+
|
|
+ pr_info("kexec_args[0] (argc): %lu\n", kexec_args[0]);
|
|
+ pr_info("kexec_args[1] (argv): %p\n", (void *)kexec_args[1]);
|
|
+ pr_info("kexec_args[2] (env ): %p\n", (void *)kexec_args[2]);
|
|
+ pr_info("kexec_args[3] (desc): %p\n", (void *)kexec_args[3]);
|
|
+}
|
|
+
|
|
int
|
|
machine_kexec_prepare(struct kimage *kimage)
|
|
{
|
|
+ /*
|
|
+ * Whenever arguments passed from kexec-tools, Init the arguments as
|
|
+ * the original ones to avoid booting failure.
|
|
+ *
|
|
+ * This can be overrided by _machine_kexec_prepare().
|
|
+ */
|
|
+ machine_kexec_init_args();
|
|
+
|
|
if (_machine_kexec_prepare)
|
|
return _machine_kexec_prepare(kimage);
|
|
return 0;
|