On Fri, Sep 26, 2008 at 10:04:28AM -0500, Anthony Liguori wrote:
Matt wrote:
Here is another experimental update that forces -lthr on 6.x, and
also updates to qemu svn r5313:
http://people.freebsd.org/~nox/qemu/qemu-devel-20080924.patch
I just built this update and it seems to have fixed the issue. Host
CPU usage again tracks with guest CPU usage and all seems well. I'll
continue to use this build to see if anything else crops up.
Please let me know if there is anything other information I can provide.
If ya'll have patches to make QEMU work on FreeBSD, please submit them.
I'm about to commit a patch that's what it took for me to get SVN working
on FreeBSD.
The one thing that really tripped me up with the whole aio kld-module
thing. Perhaps we should detect the presence of the module at run time and
disable aio? I assume kldload can only be run as root?
Yes. Atm the ports print a warning when aio is not loaded:
And here is another patch thats needed on amd64 hosts for tcg (which
I had posted before:)
Index: qemu/exec.c
@@ -405,6 +405,28 @@
exit(1);
}
}
+#elif defined(__FreeBSD__)
+ {
+ int flags;
+ void *addr = NULL;
+ flags = MAP_PRIVATE | MAP_ANONYMOUS;
+#if defined(__x86_64__)
+ /* FreeBSD doesn't have MAP_32BIT, use MAP_FIXED and assume
+ * 0x40000000 is free */
+ flags |= MAP_FIXED;
+ addr = (void *)0x40000000;
+ /* Cannot map more than that */
+ if (code_gen_buffer_size > (800 * 1024 * 1024))
+ code_gen_buffer_size = (800 * 1024 * 1024);
+#endif
+ code_gen_buffer = mmap(addr, code_gen_buffer_size,
+ PROT_WRITE | PROT_READ | PROT_EXEC,
+ flags, -1, 0);
+ if (code_gen_buffer == MAP_FAILED) {
+ fprintf(stderr, "Could not allocate dynamic translator buffer\n");
+ exit(1);
+ }
+ }
#else
code_gen_buffer = qemu_malloc(code_gen_buffer_size);
if (!code_gen_buffer) {
Signed-off-by: Juergen Lock <address@hidden>