Hello,
As mentioned on qemu-devel, sparc32 softmmu is no longer booting on OSX/ppc host. This applies to both harddisk and DVD images, all Debian Etch. 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.
Thanks,
Andreas
On 4/10/09, Andreas Färber andreas.faerber@web.de wrote:
Hello,
As mentioned on qemu-devel, sparc32 softmmu is no longer booting on OSX/ppc
I must have missed that message. I guess you mean this one: http://article.gmane.org/gmane.comp.emulators.qemu/40767
host. This applies to both harddisk and DVD images, all Debian Etch. 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?
Am 10.04.2009 um 14:57 schrieb Blue Swirl:
On 4/10/09, Andreas Färber andreas.faerber@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
Andreas
On 4/10/09, Andreas Färber andreas.faerber@web.de wrote:
Am 10.04.2009 um 14:57 schrieb Blue Swirl:
On 4/10/09, Andreas Färber andreas.faerber@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.
Am 10.04.2009 um 15:57 schrieb Blue Swirl:
On 4/10/09, Andreas Färber andreas.faerber@web.de wrote:
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
Thanks for the hint. On OpenSolaris/amd64 for Sol10u3 I get Unhandled Exception 0x10, PC 0x0, NPC 0x4.
This is what gdb says on OSX/ppc after the above register dump:
Program received signal SIGABRT, Aborted. 0x926daaf0 in __kill () (gdb) bt #0 0x926daaf0 in __kill () #1 0x92775bb0 in abort () #2 0x000b5308 in ?? () #3 0x000febe8 in ?? () #4 0x000febe8 in ?? () Previous frame identical to this frame (gdb could not unwind past this frame) (gdb)
Doesn't look too useful.
Andreas
Am 10.04.2009 um 15:31 schrieb Andreas Färber:
Am 10.04.2009 um 14:57 schrieb Blue Swirl:
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.
On OpenSolaris/amd64 I can get to the boot prompt and type install64, then after loading the ramdisk it shows an invalid/unsupported opcode: 1e - 12 - 1b as well as invalid bits for opcode 0b - 19 - 15.
gdb stacktrace on OSX/ppc:
Program received signal EXC_BAD_ACCESS, Could not access memory. Reason: KERN_INVALID_ADDRESS at address: 0x161a1518 0x001ac06c in ?? () (gdb) bt #0 0x001ac06c in ?? () #1 0x0e7ce9bc in ?? () #2 0x0e7ce9bc in ?? () #3 0x000bf520 in ?? () #4 0x00009bb8 in ?? () #5 0x000ad468 in ?? () #6 0x93325068 in _nsnote_callback () #7 0x95ccd7cc in _CFXNotificationPostNotification () #8 0x933227c0 in -[NSNotificationCenter postNotificationName:object:userInfo:] () #9 0x92984d38 in -[NSApplication _postDidFinishNotification] () #10 0x92984c50 in -[NSApplication _sendFinishLaunchingNotification] () #11 0x9290c5f4 in -[NSApplication(NSAppleEventHandling) _handleAEOpen:] () #12 0x9290be2c in -[NSApplication(NSAppleEventHandling) _handleCoreEvent:withReplyEvent:] () #13 0x9334598c in -[NSAppleEventManager dispatchRawAppleEvent:withRawReply:handlerRefCon:] () #14 0x93345760 in _NSAppleEventManagerGenericHandler () #15 0x901b8ce4 in aeDispatchAppleEvent () #16 0x901b8bec in dispatchEventAndSendReply () #17 0x901b89f0 in aeProcessAppleEvent () #18 0x957304b0 in AEProcessAppleEvent () #19 0x92909958 in _DPSNextEvent () #20 0x929090e0 in -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] () #21 0x92902d9c in -[NSApplication run] () #22 0x000adc8c in ?? () #23 0x00001e84 in ?? () (gdb)
Andreas