Hello all,

I'm running both openwrt and debian on a mips-based wndr3800 netgear router/ap and I'm using kexec to arrange kind of dual-boot in a safe and comfortable manner.

Now, I've found that the following is critical for kexec to actually work:
--- arch/mips/kernel/machine_kexec.c.orig 2012-02-08 01:58:13.000000000 +0300
+++ arch/mips/kernel/machine_kexec.c    2012-02-20 22:19:11.000000000 +0300
@@ -52,7 +52,7 @@
        reboot_code_buffer =
          (unsigned long)page_address(image->control_code_page);

-       kexec_start_address = image->start;
+       kexec_start_address = (unsigned long) phys_to_virt(image->start);
        kexec_indirection_page =
                (unsigned long) phys_to_virt(image->head & PAGE_MASK);

I've found that in openwrt repository this change was present (among others) in a big patchset targeted for kernel 2.6.30 and now it is still present as a small separate patch for 2.6.38 (target/linux/generic/patches-2.6.38/303-mips_fix_kexec.patch) and maybe others. Meanwhile, the latest _stable_ openwrt for the moment (backfire 10.03.1) was released with kernel 2.6.32 without this patch so I had to dig through some forums to find the reason of kexec not working out-of-the-box. I've just now checked and the latest kernel.org's stable kernel (3.2.6) does not seem to include this either. Ok, since I know the secret already I'll fix it for myself anytime, but maybe some kind soul could just submit this _one_ line upstream? I'd say this feature is really handy in some cases.

Thank you.

(Please CC me, I'm not subscribed to linux-mips)

Nikolai
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to