Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 27 Sep 2008 00:04:45 +0200
From:      Juergen Lock <nox@jelal.kn-bremen.de>
To:        Anthony Liguori <anthony@codemonkey.ws>
Cc:        freebsd-emulation@freebsd.org, qemu-devel@nongnu.org
Subject:   Re: [Qemu-devel] Re: qemu svn r5281 on FreeBSD - slow usb, vmwarevga, screen updates... (now updated to r5313)
Message-ID:  <20080926220445.GA13099@saturn.kn-bremen.de>
In-Reply-To: <48DCF9FC.2070708@codemonkey.ws>
References:  <20080921204025.GA81055@saturn.kn-bremen.de> <cd6b4a5b0809230639x27e94477k315796c2cfb650f2@mail.gmail.com> <200809242210.m8OMAcSZ021572@saturn.kn-bremen.de> <cd6b4a5b0809241954p159dd86u17fdc2a485008e7d@mail.gmail.com> <48DCF9FC.2070708@codemonkey.ws>

next in thread | previous in thread | raw e-mail | index | archive | help
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 <nox@jelal.kn-bremen.de>

 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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080926220445.GA13099>