On 4/27/10, 陈宇飞 <cyfde...@gmail.com> wrote: > Actually this has been test before. > > http://lists.gnu.org/archive/html/qemu-devel/2006-08/msg00512.html
That was before I added SMP support to OpenBIOS. > I've tested Debian 3.1 (with Linux 2.4.27.3) and Debian 4.0 (with > Linux 2.6.18.6), on both qemu 0.10.6 and 0.12.3, emulating machine is > set to SS-20. > > 1. non-smp kernel successfully boots with both -smp 1 or -smp 2. > 2. smp kernel can only boot with -smp 1. (The 2.6 kernel is cross > compiled by gcc 4.2.4 since no binary package is available) > > Some investigation with qemu's debug message and Linux kernel dump > (the 2.6 kernel) shows that > > 1. When the boot cpu tries to start cpu 1, cpu 1 calls > local_irq_enable. After that, cpu 1 get's lot's of level 14 interrupt. > 2. Printing out the executed TBs' pc values shows that kernel > interrupt handler is executed. > 3. Qemu's do_interrupt debug message shows that cpu 1 always get level > 14 interrupt at the same pc, which is the nop instruction just after > the "mov %g1, %psr" instruction. > > I guess that the interrupt is not cleared even after the execution of > the interrupt handler. I've found debian installation report which > boots smp linux kernel, so I thinks this problem is caused by qemu? > > I'm tring to fix this problem but I'm not familiar with sparc > architecture, is there any clue? This sounds awfully familiar to the problems Solaris had with interrupts. Does the problem still exist with git HEAD version of QEMU?