powerpc/powernv: Workaround OFW issues in prom_init.c
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 29 Nov 2011 18:22:56 +0000 (18:22 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 7 Dec 2011 07:04:53 +0000 (18:04 +1100)
Open Firmware on OPAL machines seems to have issues if we close
stdin and/or we try to print things after calling "quiesce" so
we avoid doing both.

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

index cc584865b3df537d7c50cfb2bda9d87a6ed24f85..f4f9f2f143222ed0d973bed65a5ea6ec1c55a089 100644 (file)
@@ -2969,9 +2969,11 @@ unsigned long __init prom_init(unsigned long r3, unsigned long r4,
        /*
         * in case stdin is USB and still active on IBM machines...
         * Unfortunately quiesce crashes on some powermacs if we have
-        * closed stdin already (in particular the powerbook 101).
+        * closed stdin already (in particular the powerbook 101). It
+        * appears that the OPAL version of OFW doesn't like it either.
         */
-       if (RELOC(of_platform) != PLATFORM_POWERMAC)
+       if (RELOC(of_platform) != PLATFORM_POWERMAC &&
+           RELOC(of_platform) != PLATFORM_OPAL)
                prom_close_stdin();
 
        /*
@@ -2987,8 +2989,12 @@ unsigned long __init prom_init(unsigned long r3, unsigned long r4,
         * is common to us and kexec
         */
        hdr = RELOC(dt_header_start);
-       prom_printf("returning from prom_init\n");
-       prom_debug("->dt_header_start=0x%x\n", hdr);
+
+       /* Don't print anything after quiesce under OPAL, it crashes OFW */
+       if (RELOC(of_platform) != PLATFORM_OPAL) {
+               prom_printf("returning from prom_init\n");
+               prom_debug("->dt_header_start=0x%x\n", hdr);
+       }
 
 #ifdef CONFIG_PPC32
        reloc_got2(-offset);