[Top][All Lists]

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

Re: [Qemu-devel] Re: qemu svn r5281 on FreeBSD - slow usb, vmwarevga, s

From: Anthony Liguori
Subject: Re: [Qemu-devel] Re: qemu svn r5281 on FreeBSD - slow usb, vmwarevga, screen updates... (now updated to r5313)
Date: Sat, 27 Sep 2008 10:33:42 -0500
User-agent: Thunderbird (X11/20080723)

Juergen Lock wrote:
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:
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:

Yeah, I don't think this is enough. I'd rather see AIO be disabled when modfind("aio") is not available (printing a warning along with that would be fine). A non-privileged user cannot load the aio module so it's not very useful to tell them to load it.

 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 @@
+#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);
+        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);
+        }
+    }
     code_gen_buffer = qemu_malloc(code_gen_buffer_size);
     if (!code_gen_buffer) {

Signed-off-by: Juergen Lock <address@hidden>

Applied.  Thanks.

 I'll see if I can prepare another update over the weekend and then go
thru more of the patches that have accumulated in the port...

That would be great!


Anthony Liguori


reply via email to

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