[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] experimental FreeBSD qemu 0.11.0-rc1 port update up for tes

From: Juergen Lock
Subject: [Qemu-devel] experimental FreeBSD qemu 0.11.0-rc1 port update up for testing; unstable guest timer irqs and more
Date: Sun, 9 Aug 2009 20:51:50 +0200
User-agent: Mutt/1.5.20 (2009-06-14)

As qemu upstream has cut a new rc from its new 0.11 stable branch,
I thought its time to start testing on FreeBSD and made a preliminary
update for our qemu-devel port:
I don't plan to commit this as it is, its just so we can test the new
branch on FreeBSD easier...

 Some notes:

1. kqemu still works, but is disabled by default now so you'll have
to pass -enable-kqemu (or -kernel-kqemu as with the previous versions)
if you want to use it.

2. guest timer irqs seem to be even less stable when running qemu
on FreeBSD 8 than they were on 7, I now regularly have to pass
`no_timer_check' to linux guest kernels or they'd hang at boot after
saying something like this:

Getting LVT1: 10000
enabled ExtINT on CPU#0
..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
..MP-BIOS bug: 8254 timer not connected to IO-APIC
...trying to set up timer (IRQ0) through the 8259A ...
..... (found apic 0 pin 2) ...
....... failed.
...trying to set up timer as Virtual Wire IRQ...

 I see reports of this on the net for qemu running on Linux hosts
too tho, so this doesn't seem to be specific to FreeBSD.  (And it
has nothing to do with the new qemu branch, it happens here with
0.10.6 too, I just was testing qemu on FreeBSD 7 before only.)

3. The binutils in FreeBSD base are too old for as(1) to
understand constructs used in multiboot.bin's asm source, so this
port now depends on the new devel/binutils port and patches
qemu/pc-bios/optionrom/Makefile to invoke the new as for the file
in question.  (see files/patch-pc-bios-optionrom-Makefile at the
end of the patch; the same problem has been reported for OpenBSD
on the qemu list before.)

4. There's a bug in qemu/osdep.c:kqemu_vmalloc(), it doesn't round
its size arg up to full pages before calling mmap on the BSDs.
Here is the patch:  (files/patch-osdep.c in the port.)

Index: qemu/osdep.c
@@ -179,7 +179,9 @@
+#endif /* !(__OpenBSD__ || __FreeBSD__ || __DragonFly__) */
     size = (size + 4095) & ~4095;
+#if !defined(__OpenBSD__) && !defined(__FreeBSD__) && !defined(__DragonFly__)
     ftruncate(phys_ram_fd, phys_ram_size + size);
 #endif /* !(__OpenBSD__ || __FreeBSD__ || __DragonFly__) */
     ptr = mmap(NULL,

 Ok I guess thats it for now.  Happy testing... :)

reply via email to

[Prev in Thread] Current Thread [Next in Thread]