[oe] arm kexec commandline support
Bob Dunlop
rdunlop at guralp.com
Thu Sep 27 16:20:40 UTC 2007
Hans Henry von Tresckow wrote:
>On 6/7/07, Thomas Kunze <thommycheck at gmx.de> wrote:
...
>> I have written a quick hack to support custom commandlines for arm with
>> kexec. You need:
>>
>>
>> http://www2.informatik.hu-berlin.de/~tkunze/zaurus/patches/kexec_commandline-3.patch
>>
>> and:
>>
>>
>> http://www2.informatik.hu-berlin.de/~tkunze/zaurus/patches/atag_support.patch
>>
>> (from lak)
...
>
>I tested this with linux-rp-2.6.20 on poodle. The kernel will boot and I
>can kexec other kernels with built in cmdlines. If I try to set a new
>cmdline however, it segfaults. Here is the crash dump:
>
><0>Starting new kernel
><1>Unable to handle kernel paging request at virtual address e0000100
I to am searching for a kexec solution (for a Compulab CM-X270)
I can progress this code a little further and eliminate the segfault with
the following patch, but still nothing after the final Bye! message :(
--- linux-2.6.22.9/arch/arm/kernel/setup.c-orig 2007-09-27 15:23:22.000000000 +0100
+++ linux-2.6.22.9/arch/arm/kernel/setup.c 2007-09-27 16:57:17.000000000 +0100
@@ -769,6 +769,8 @@
}
arch_initcall(customize_machine);
+extern unsigned long kexec_atag_list;
+
void __init setup_arch(char **cmdline_p)
{
struct tag *tags = (struct tag *)&init_tags;
@@ -782,10 +784,18 @@
if (mdesc->soft_reboot)
reboot_setup("s");
+ printk(KERN_INFO "__atags_pointer %x, mdesc->boot_params %x\n",
+ __atags_pointer, mdesc->boot_params);
if (__atags_pointer)
+ {
tags = phys_to_virt(__atags_pointer);
+ kexec_atag_list = __atags_pointer;
+ }
else if (mdesc->boot_params)
+ {
tags = phys_to_virt(mdesc->boot_params);
+ kexec_atag_list = mdesc->boot_params;
+ }
/*
* If we have the old style parameters, convert them to
--
Bob Dunlop
More information about the Openembedded-devel
mailing list