Skip to content

Commit

Permalink
[PATCH] powerpc: return to OF via trap, not exit
Browse files Browse the repository at this point in the history
Do not call prom exit prom_panic. It clears the screen and the exit
message is lost.

On some (or all?) pmacs it causes another crash when OF tries to print
the date and time in its banner.

Set of_platform earlier to catch more prom_panic() calls.

Signed-off-by: Olaf Hering <olh@suse.de>
Acked-by: Segher Boessenkool <segher@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
  • Loading branch information
Olaf Hering authored and Paul Mackerras committed Mar 27, 2006
1 parent 069007a commit add60ef
Showing 1 changed file with 14 additions and 9 deletions.
23 changes: 14 additions & 9 deletions arch/powerpc/kernel/prom_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,11 @@ static void __init __attribute__((noreturn)) prom_panic(const char *reason)
reason = PTRRELOC(reason);
#endif
prom_print(reason);
/* Do not call exit because it clears the screen on pmac
* it also causes some sort of double-fault on early pmacs */
if (RELOC(of_platform) == PLATFORM_POWERMAC)
asm("trap\n");

/* ToDo: should put up an SRC here on p/iSeries */
call_prom("exit", 0, 0);

Expand Down Expand Up @@ -2060,15 +2065,6 @@ unsigned long __init prom_init(unsigned long r3, unsigned long r4,
*/
prom_init_stdout();

/* Bail if this is a kdump kernel. */
if (PHYSICAL_START > 0)
prom_panic("Error: You can't boot a kdump kernel from OF!\n");

/*
* Check for an initrd
*/
prom_check_initrd(r3, r4);

/*
* Get default machine type. At this point, we do not differentiate
* between pSeries SMP and pSeries LPAR
Expand All @@ -2078,6 +2074,15 @@ unsigned long __init prom_init(unsigned long r3, unsigned long r4,
prom_setprop(_prom->chosen, "/chosen", "linux,platform",
&getprop_rval, sizeof(getprop_rval));

/* Bail if this is a kdump kernel. */
if (PHYSICAL_START > 0)
prom_panic("Error: You can't boot a kdump kernel from OF!\n");

/*
* Check for an initrd
*/
prom_check_initrd(r3, r4);

#ifdef CONFIG_PPC_PSERIES
/*
* On pSeries, inform the firmware about our capabilities
Expand Down

0 comments on commit add60ef

Please sign in to comment.