powerpc/powernv: Get kernel command line accross OPAL takeover
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Mon, 19 Sep 2011 17:44:56 +0000 (17:44 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 20 Sep 2011 06:09:48 +0000 (16:09 +1000)
We stash it in boot_command_line which isn't in BSS and so won't
be overwritten. We then use that as a default cmd_line before
we walk the device-tree.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/kernel/prom.c
arch/powerpc/kernel/prom_init.c
arch/powerpc/kernel/prom_init_check.sh

index 174e1e96175e8b5a9153648442abb426764edc35..7b90c564e932910cc3f291bfb0f7316c085f1a1d 100644 (file)
@@ -712,6 +712,13 @@ void __init early_init_devtree(void *params)
        of_scan_flat_dt(early_init_dt_scan_phyp_dump, NULL);
 #endif
 
+       /* Pre-initialize the cmd_line with the content of boot_commmand_line,
+        * which will be empty except when the content of the variable has
+        * been overriden by a bootloading mechanism. This happens typically
+        * with HAL takeover
+        */
+       strlcpy(cmd_line, boot_command_line, COMMAND_LINE_SIZE);
+
        /* Retrieve various informations from the /chosen node of the
         * device-tree, including the platform type, initrd location and
         * size, TCE reserve, and more ...
index 9369287aa8c2a4518b4db304c869742d3c55a233..e3f390427216a399377ea720aa7874ff1d183a95 100644 (file)
@@ -1449,6 +1449,10 @@ static void prom_opal_takeover(void)
                opal_addr = top_addr;
        args->hal_addr = opal_addr;
 
+       /* Copy the command line to the kernel image */
+       strlcpy(RELOC(boot_command_line), RELOC(prom_cmd_line),
+               COMMAND_LINE_SIZE);
+
        prom_debug("  k_image    = 0x%lx\n", args->k_image);
        prom_debug("  k_size     = 0x%lx\n", args->k_size);
        prom_debug("  k_entry    = 0x%lx\n", args->k_entry);
index 20af6aada517dcd03eee181a0111bbb73c1451ba..70f4286eaa7ab74f38e99b4526657f7044f68e65 100644 (file)
@@ -21,7 +21,8 @@ _end enter_prom memcpy memset reloc_offset __secondary_hold
 __secondary_hold_acknowledge __secondary_hold_spinloop __start
 strcmp strcpy strlcpy strlen strncmp strstr logo_linux_clut224
 reloc_got2 kernstart_addr memstart_addr linux_banner _stext
-opal_query_takeover opal_do_takeover opal_enter_rtas opal_secondary_entry"
+opal_query_takeover opal_do_takeover opal_enter_rtas opal_secondary_entry
+boot_command_line"
 
 NM="$1"
 OBJ="$2"