[Qemu-devel] Re: qemu svn r5281 on FreeBSD - slow usb, vmwarevga,
screen updates... (now updated to r5313)
Anthony Liguori
anthony at codemonkey.ws
Sat Sep 27 15:34:44 UTC 2008
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:
>>>> 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:
>
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 @@
> 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 at jelal.kn-bremen.de>
>
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!
Regards,
Anthony Liguori
> Thanx,
> Juergen
>
More information about the freebsd-emulation
mailing list