[OpenBIOS] sparc32 boot breakage on ppc host

Blue Swirl blauwirbel at gmail.com
Fri Apr 10 15:57:37 CEST 2009


On 4/10/09, Andreas Färber <andreas.faerber at web.de> wrote:
>
>  Am 10.04.2009 um 14:57 schrieb Blue Swirl:
>
>
> > On 4/10/09, Andreas Färber <andreas.faerber at web.de> wrote:
> >
> >
> > > [...] It
> > > hangs after "Booting file ... with parameters '' Trying ..." (before
> "Not a
> > > bootable ELF image").
> > >
> > > These are the results of my bisection:
> > >
> > > r482 (QEMU r6962) nope
> > > r479 (QEMU r6777) nope
> > > 1.0 (QEMU r6658 +
> > > 9794f74f9c1dd0fbef30ded9e5c14c28a6fa579b) nope
> > > ??? (QEMU r6563 +
> > > 9794f74f9c1dd0fbef30ded9e5c14c28a6fa579b) nope
> > > ??? (QEMU r6273 +
> e58ffeb322e2ef88cc23e9505366418bf793316d
> > > w/ --disable-aio) works
> > > r237 (QEMU r5262) works
> > >
> > > Has anyone recently been successful booting on ppc, could this be some
> > > endianness issue? It works fine on OpenSolaris/amd64 host.
> > >
> >
> > It also works on OpenBSD/Sparc64 host, which is big endian. Linux/i386
> > works too, so 32 bit case is covered.
> >
> > I doubt that this can be a problem in OpenBIOS, I find QEMU more
> > likely suspect. Can you boot any other big endian targets on PPC, for
> > example PPC?
> >
>
>  Yes, ppc-softmmu boots Debian CD fine.
>
>  However, ppc64-softmmu booting Debian CD segfaults immediately.
>
>  sparc64-softmmu booting Solaris 10 U3 DVD immediately crashes with the
> following output:
>
>  qemu: fatal: Trap 0x0010 while trap level (5) >= MAXTL (5), Error state
>  pc: 0000000000004200  npc: 0000000000004204
>  General Registers:
>  %g0: 0000000000000000   %g1: 0000000000000000   %g2: 0000000000000000
> %g3: 0000000000000000
>  %g4: 0000000000000000   %g5: 0000000000000000   %g6: 0000000000000000
> %g7: 0000000000000000
>  Current Register Window:
>  %o0: 00000000ffd70000   %o1: 00000000ffd71000   %o2: 000001fff0070000
> %o3: 000001fff0000000
>  %o4: 0000000000000000   %o5: 0000000000000000   %o6: 0000000000000000
> %o7: 000001ff00000000
>  %l0: 000000000fee0000   %l1: 000001ff00000000   %l2: 000001fff0030000
> %l3: 0000000000000000
>  %l4: 0000000000000000   %l5: 0000000000000000   %l6: 0000000000000000
> %l7: 0000000000000000
>  %i0: 0000000000000000   %i1: 0000000000000000   %i2: 0000000000000000
> %i3: 0000000000000000
>  %i4: 0000000000000000   %i5: 0000000000000000   %i6: 0000000000000000
> %i7: 0000000000000000
>
>  Floating Point Registers:
>  %f00: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
>  %f04: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
>  %f08: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
>  %f12: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
>  %f16: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
>  %f20: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
>  %f24: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
>  %f28: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
>  pstate: 0x00000015 ccr: 0x99 asi: 0x00 tl: 5 fprs: 0
>  cansave: 6 canrestore: 0 otherwin: 0 wstate 0 cleanwin 6 cwp 7
>  fsr: 0x00000000

Sparc64-softmmu boots Linux (crashes during kernel init) on amd64 and
i386 hosts. It also crashes on sparc64, but not that quickly. The
screen gets yellow and on serial console there are a few lines:

OpenBIOS for Sparc64
Configuration device id QEMU version 1 machine id 0
Unhandled Exception 0x0000000000000068
PC = 0x00000000ffd1ec04 NPC = 0x00000000ffd1ec08
Stopping execution

The bugs could be in PPC TCG target support (Sparc32/64 translation
may call different functions than PPC translation), or Sparc
translator could call the code generator wrong way.



More information about the OpenBIOS mailing list