[PATCH] powerpc: Parse early parameters earlier
authorMichael Ellerman <michael@ellerman.id.au>
Wed, 17 May 2006 08:00:45 +0000 (18:00 +1000)
committerPaul Mackerras <paulus@samba.org>
Fri, 19 May 2006 05:02:13 +0000 (15:02 +1000)
Currently we have call parse_early_param() earliyish, but not really very
early. In particular, it's not early enough to do things like mem=x or
crashkernel=blah, which is annoying.

So do it earlier. I've checked all the early param handlers, and none of them
look like they should have any trouble with this. I haven't tested the
booke_wdt ones though.

On 32-bit we were doing the CONFIG_CMDLINE logic twice, so don't.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/kernel/prom.c
arch/powerpc/kernel/setup_32.c
arch/powerpc/kernel/setup_64.c

index 9a07f97f0712d78ce271b6ec35190cf92032be26..4ca608c9cd729bf8710fff7bdcc1d839e0273c4a 100644 (file)
@@ -1292,6 +1292,11 @@ void __init early_init_devtree(void *params)
        lmb_init();
        of_scan_flat_dt(early_init_dt_scan_root, NULL);
        of_scan_flat_dt(early_init_dt_scan_memory, NULL);
+
+       /* Save command line for /proc/cmdline and then parse parameters */
+       strlcpy(saved_command_line, cmd_line, COMMAND_LINE_SIZE);
+       parse_early_param();
+
        lmb_enforce_memory_limit(memory_limit);
        lmb_analyze();
 
index 2b6cacb6946fe0ca962c3aad3299e1406513e506..e5a44812441ac121b980e3d296f19e09651df045 100644 (file)
@@ -131,12 +131,6 @@ void __init machine_init(unsigned long dt_ptr, unsigned long phys)
        /* Do some early initialization based on the flat device tree */
        early_init_devtree(__va(dt_ptr));
 
-       /* Check default command line */
-#ifdef CONFIG_CMDLINE
-       if (cmd_line[0] == 0)
-               strlcpy(cmd_line, CONFIG_CMDLINE, sizeof(cmd_line));
-#endif /* CONFIG_CMDLINE */
-
        probe_machine();
 
 #ifdef CONFIG_6xx
@@ -235,6 +229,8 @@ arch_initcall(ppc_init);
 /* Warning, IO base is not yet inited */
 void __init setup_arch(char **cmdline_p)
 {
+       *cmdline_p = cmd_line;
+
        /* so udelay does something sensible, assume <= 1000 bogomips */
        loops_per_jiffy = 500000000 / HZ;
 
@@ -291,12 +287,6 @@ void __init setup_arch(char **cmdline_p)
        init_mm.end_data = (unsigned long) _edata;
        init_mm.brk = klimit;
 
-       /* Save unparsed command line copy for /proc/cmdline */
-       strlcpy(saved_command_line, cmd_line, COMMAND_LINE_SIZE);
-       *cmdline_p = cmd_line;
-
-       parse_early_param();
-
        if (do_early_xmon)
                debugger(NULL);
 
index a1923d917b30205c1b88313f57089ca7ebcef15c..6224624c3d38891912672ce58382d375b077e068 100644 (file)
@@ -414,11 +414,6 @@ void __init setup_system(void)
         */
        register_early_udbg_console();
 
-       /* Save unparsed command line copy for /proc/cmdline */
-       strlcpy(saved_command_line, cmd_line, COMMAND_LINE_SIZE);
-
-       parse_early_param();
-
        if (do_early_xmon)
                debugger(NULL);