From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MFvej-0000N7-CP for qemu-devel@nongnu.org; Sun, 14 Jun 2009 15:46:17 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MFvee-0000MG-TK for qemu-devel@nongnu.org; Sun, 14 Jun 2009 15:46:16 -0400 Received: from [199.232.76.173] (port=34341 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MFvee-0000MD-Nz for qemu-devel@nongnu.org; Sun, 14 Jun 2009 15:46:12 -0400 Received: from an-out-0708.google.com ([209.85.132.244]:38317) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MFvee-0001TY-8P for qemu-devel@nongnu.org; Sun, 14 Jun 2009 15:46:12 -0400 Received: by an-out-0708.google.com with SMTP id d11so2084513and.37 for ; Sun, 14 Jun 2009 12:46:11 -0700 (PDT) MIME-Version: 1.0 Sender: slightlyunconventional@gmail.com In-Reply-To: References: Date: Sun, 14 Jun 2009 14:46:10 -0500 Message-ID: Subject: Re: [Qemu-devel] PowerPC 440 support From: Hollis Blanchard Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Blue Swirl Cc: Baojun Wang , "Richard W.M. Jones" , qemu-devel@nongnu.org My 440 board is inaccessible for a couple weeks, so I can't test your patch. That said, the code looks fine. However, I wonder what your goal is? You want to be able to create a Bamboo board with e.g. a 750 processor? I don't think that would help the original poster, and I'm not sure how useful it is, but I don't object... Either way I guess it will become a non-issue once PowerPC boards are converted to the device tree infrastructure. -Hollis On Sun, Jun 14, 2009 at 1:33 PM, Blue Swirl wrote: > Sorry, I was very confused (I didn't look at ppc440.c). > > For some reason, CPU model can't be specified on the command line. The > patch allows this, does it look OK? > > Is there a kernel and initrd somewhere, so I could test this? > > Currently I get (no kernel or ROM, so nothing to execute): > Truncating memory to 128 MiB to fit SDRAM controller limits. > ppc405_serial_init: offset 0000000000000300 > QEMU 0.10.50 monitor - type 'help' for more information > (qemu) qemu: fatal: Trying to execute code outside RAM or ROM at > 0x00000000fffffffc > > NIP 00000000fffffffc =A0 LR 0000000000000000 CTR 0000000000000000 XER 000= 00000 > MSR 0000000000000000 HID0 0000000000000300 =A0HF 0000000000000000 idx 1 > Segmentation fault > > On 6/14/09, Hollis Blanchard wrote: >> Yes, I wrote the code you quoted. >> >> =A0In case there is any confusion, let me restate: You can boot a Bamboo >> =A0(PowerPC 440) guest under KVM on a PowerPC 440 host. KVM bypasses >> =A0qemu's CPU emulation (TCG), but uses qemu's device emulation. >> =A0Therefore, if someone were to implement 440 core emulation in qemu, >> =A0you could boot a 440 kernel with qemu without KVM. >> >> =A0Most devices found on 440 SoCs are the same as or very similar to the >> =A0devices found on 405 SoCs. Qemu's 440 device emulation isn't perfect, >> =A0but because Linux is highly modular, with a modified device tree you >> =A0can boot it. See pc-bios/bamboo.dts. >> >> =A0-Hollis >> >> =A0On Sat, Jun 13, 2009 at 10:47 PM, Baojun Wang wrot= e: >> =A0> >> =A0> in hw/ppc440.c: >> =A0> >> =A0> =A0 =A0env =3D cpu_ppc_init("440EP"); >> =A0> =A0 =A0if (!env && kvm_enabled()) { >> =A0> =A0 =A0 =A0 =A0/* XXX Since qemu doesn't yet emulate 440, we just s= ay it's a 405. >> =A0> =A0 =A0 =A0 =A0 * Since KVM doesn't use qemu's CPU emulation it see= ms to be working >> =A0> =A0 =A0 =A0 =A0 * OK. */ >> =A0> =A0 =A0 =A0 =A0env =3D cpu_ppc_init("405"); >> =A0> =A0 =A0} >> =A0> =A0 =A0if (!env) { >> =A0> =A0 =A0 =A0 =A0fprintf(stderr, "Unable to initialize CPU!\n"); >> =A0> =A0 =A0 =A0 =A0exit(1); >> =A0> =A0 =A0} >> =A0> >> =A0> also in hw/ppc.c: >> =A0> >> =A0> I can find ppc40x_irq_init/e500_irq_init(used mpc8544ds), but there= is >> =A0> no ppcbooke_irq_init? It seems hw/ppc405_uc.c is emulation for DCRs= , >> =A0> PLB, DMA, GPIO, I2C.., but there is no hw/ppc44x_uc.c. >> =A0> >> =A0> the qemu source I used is 0.10.5. >> =A0> >> =A0> Also in ppc/translate_init.c, there lots of CONFIG_USER_ONLY, but I >> =A0> many of them are DEBUG or CACHE related SPR emulation, and since qe= mu >> =A0> doesn't emulate cache, I think it's OK. >> =A0> >> =A0> =A0Thanks, >> =A0> Wang >> =A0> >> =A0> On Sun, Jun 14, 2009 at 1:47 AM, Hollis Blanchard wrote: >> =A0> > On Fri, Jun 12, 2009 at 10:48 AM, Blue Swirl wrote: >> =A0> >> >> =A0> >> On 6/11/09, Baojun Wang wrote: >> =A0> >> > could qemu emulate some board like bamboo (without kvm) or MPC= 8544ds >> =A0> >> > now? Thanks >> =A0> >> >> =A0> >> Yes, if someone adds emulation for these devices: UIC, PLB, DMA,= POB, >> =A0> >> EBC, IIC, ZMII. Maybe some are not needed in all cases. >> =A0> > >> =A0> > No, qemu still doesn't emulate Book E cores, such as the PowerPC = 440 in a >> =A0> > Bamboo board. >> =A0> > >> =A0> > UIC is of course emulated, otherwise KVM guests on 440 wouldn't g= et very >> =A0> > far. :) Enough 440 SoC devices are emulated to support Linux boot= with a >> =A0> > properly stripped device tree. >> =A0> > >> =A0> > -Hollis >> =A0> > >> >