Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 Mar 2008 21:15:29 +0100 (CET)
From:      Juergen Lock <nox@jelal.kn-bremen.de>
To:        olli@lurza.secnetix.de
Cc:        freebsd-emulation@freebsd.org
Subject:   Re: qemu coredumps on RELENG_7
Message-ID:  <200803202015.m2KKFTBX080186@saturn.kn-bremen.de>
In-Reply-To: <200803181152.m2IBq0Ih012824@lurza.secnetix.de>
References:  <alpine.BSF.1.00.0803171507450.23872@duane.dbq.yournetplus.com>

next in thread | previous in thread | raw e-mail | index | archive | help
In article <200803181152.m2IBq0Ih012824@lurza.secnetix.de> you write:
>D Hill <d.hill@yournetplus.com> wrote:
> > Rick C. Petty wrote:
> > > Oliver Fromme wrote:
> > > > Kostik Belousov wrote:
> > > > > 
> > > > > Definitely,
> > > > > kldload aio
> > > > > before running qemu.
> > > > 
> > > > Thank you, that seems to solve the problem indeed.
> > > > Is that documented somewhere?  It's not in the manpage.
> > > > I think it should be in the manpage ...  would have
> > > > saved me quite some time.
> > > 
Actually it is also documented in the pkg-message of the port(s), but
apparently nobody reads that...  (OK I could patch a pointer to that
into the manpage, do other ports do that?)

> > > Nope.  It should be, or at least qemu should fail to start or at least
> > > print a message instead of just randomly failing.
>
>Definitely.
>
> > > I ran into the same problem and only after spending hours trying to get it
> > > to work did I remember to kldload aio.
> > 
> > I don't know if this applies. However, I found this in 
> > /usr/ports/UPDATING:
> > 
> > 20070206:
>
>It applies, but I think someone who installs qemu now
>isn't supposed to read UPDATING all the way back to
>February 2007.  In fact, for fresh installs you should
>not have to read UPDATING _at_ _all_.
>
>Important information like this should be in the manual
>page, and -- as Rick pointed out -- the failure mode is
>pathetic.  It should print a useful error message right
>at the start instead of randomly failing later.

 Anyway, this was easier than I thought: (it didn't occur to me that
modfind(2) also finds modules that are statically linked into the kernel...)

Index: qemu/vl.c
@@ -8423,6 +8423,12 @@
     nb_nics = 0;
     /* default mac address of the first network interface */
 
+#ifdef __FreeBSD__
+    loadmodules(0, "aio", NULL);
+    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)

 Would everybody be satisfied with this now? :)
	Juergen



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