From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O6eBO-0003z0-Ey for qemu-devel@nongnu.org; Tue, 27 Apr 2010 02:22:10 -0400 Received: from [140.186.70.92] (port=59123 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O6eBM-0003yC-GQ for Qemu-devel@nongnu.org; Tue, 27 Apr 2010 02:22:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O6eBK-0001qr-OH for Qemu-devel@nongnu.org; Tue, 27 Apr 2010 02:22:08 -0400 Received: from mail-pz0-f204.google.com ([209.85.222.204]:60503) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O6eBK-0001qj-Ji for Qemu-devel@nongnu.org; Tue, 27 Apr 2010 02:22:06 -0400 Received: by pzk42 with SMTP id 42so8598974pzk.4 for ; Mon, 26 Apr 2010 23:22:04 -0700 (PDT) MIME-Version: 1.0 Date: Tue, 27 Apr 2010 14:22:04 +0800 Message-ID: From: =?UTF-8?B?6ZmI5a6H6aOe?= Content-Type: text/plain; charset=UTF-8 Subject: [Qemu-devel] SPARC not booting SMP Linux kernel List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Qemu-devel@nongnu.org Actually this has been test before. http://lists.gnu.org/archive/html/qemu-devel/2006-08/msg00512.html 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? -- Best regards, Chen Yufei