[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