提交 40dfef66 编写于 作者: B Benjamin Herrenschmidt

powerpc/powernv: Workaround OFW issues in prom_init.c

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: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
上级 cee72d5b
...@@ -2969,9 +2969,11 @@ unsigned long __init prom_init(unsigned long r3, unsigned long r4, ...@@ -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... * in case stdin is USB and still active on IBM machines...
* Unfortunately quiesce crashes on some powermacs if we have * 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(); prom_close_stdin();
/* /*
...@@ -2987,8 +2989,12 @@ unsigned long __init prom_init(unsigned long r3, unsigned long r4, ...@@ -2987,8 +2989,12 @@ unsigned long __init prom_init(unsigned long r3, unsigned long r4,
* is common to us and kexec * is common to us and kexec
*/ */
hdr = RELOC(dt_header_start); 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 #ifdef CONFIG_PPC32
reloc_got2(-offset); reloc_got2(-offset);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册