[OpenBIOS] More work on Solaris 8 SPARC32 crash
Tarl Neustaedter
tarl-b2 at tarl.net
Sun Feb 13 23:17:55 CET 2011
On 2011-2-13 9:47 AM, Mark Cave-Ayland wrote:
> [...]
> Incidentally if I also enable romvec debugging in OpenBIOS this is what I
> get on the console just before the crash:
>
> vac: enabled in write through mode
> mem = 131072K (0x8000000)
> avail mem = 110419968
> obp_nextnode(0x0) = 0xffd4527c
> obp_proplen(0xffd4527c, reg) (not found)
> obp_proplen(0xffd4527c, ranges) (not found)
> obp_proplen(0xffd4527c, intr) (not found)
> obp_proplen(0xffd4527c, interrupts) (not found)
That's not good. obp_nextnode() should be giving you a pointer to a valid node
(I believe root), where it looks at properties.
The divide by zero is probably Solaris signalling an error; if things are bad
enough that it can't talk with the PROM (or doesn't trust it), it does a
divide by zero to blow up. In usr/src/psm/promif/ieee1275/sun4/prom_init.c :
/*
* Fatal promif internal error, not an external interface
*/
/*ARGSUSED*/
void
prom_fatal_error(const char *errormsg)
{
volatile int zero = 0;
volatile int i = 1;
/*
* No prom interface, try to cause a trap by
* dividing by zero, leaving the message in %i0.
*/
i = i / zero;
/*NOTREACHED*/
I don't think this has anything to do with the PIL 14 or 10 issues you discuss
later on.
More information about the OpenBIOS
mailing list