qemu-devel
[Top][All Lists]
Advanced

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

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


From: Juergen Lock
Subject: Re: [Qemu-devel] Re: qemu svn r5281 on FreeBSD - slow usb, vmwarevga, screen updates... (now updated to r5313)
Date: Sat, 27 Sep 2008 00:04:45 +0200
User-agent: Mutt/1.5.17 (2007-11-01)

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:

Index: qemu/vl.c
@@ -8409,6 +8409,11 @@
 
     tb_size = 0;
     
+#ifdef __FreeBSD__
+    if (modfind("aio") == -1)
+        fprintf(stderr, "warning: aio not (kld)loaded, may cause `Invalid 
system call' traps on disk IO\n");
+#endif
+
     optind = 1;
     for(;;) {
         if (optind >= argc)

 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>

 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...

 Thanx,
        Juergen




reply via email to

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