Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 8 Sep 2008 23:43:31 +0300
From:      Kostik Belousov <kostikbel@gmail.com>
To:        "Sean C. Farley" <scf@freebsd.org>
Cc:        freebsd-emulation@freebsd.org, peter@freebsd.org
Subject:   Re: Linux applications core if running (k)qemu
Message-ID:  <20080908204331.GC39652@deviant.kiev.zoral.com.ua>
In-Reply-To: <20080908203423.GA12147@saturn.kn-bremen.de>
References:  <alpine.BSF.1.10.0808291711580.5866@thor.farley.org> <20080830113448.GA2152@dchagin.dialup.corbina.ru> <alpine.BSF.2.00.0809021552040.7934@thor.farley.org> <20080906104659.GA2113@dchagin.dialup.corbina.ru> <200809062215.m86MF6NS040797@saturn.kn-bremen.de> <20080907215300.GH2038@deviant.kiev.zoral.com.ua> <20080908203423.GA12147@saturn.kn-bremen.de>

next in thread | previous in thread | raw e-mail | index | archive | help

--+xNpyl7Qekk2NvDX
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Mon, Sep 08, 2008 at 10:34:23PM +0200, Juergen Lock wrote:
> On Mon, Sep 08, 2008 at 12:53:00AM +0300, Kostik Belousov wrote:
> > On Sun, Sep 07, 2008 at 12:15:06AM +0200, Juergen Lock wrote:
> > > In article <20080906152929.GB2038@deviant.kiev.zoral.com.ua> you writ=
e:
> > > >-=3D-=3D-=3D-=3D-=3D-
> > > >
> > > >On Sat, Sep 06, 2008 at 02:46:59PM +0400, Chagin Dmitry wrote:
> > > >> On Tue, Sep 02, 2008 at 03:56:33PM -0500, Sean C. Farley wrote:
> > > >> > On Sat, 30 Aug 2008, Chagin Dmitry wrote:
> > > >> >=20
> > > >> > >On Fri, Aug 29, 2008 at 05:29:09PM -0500, Sean C. Farley wrote:
> > > >> > >>I am having trouble with kqemu.ko and linux.ko.  If I run qemu=
 with
> > > >> > >>the following command, Linux applications (chroot, acroread, l=
s) will
> > > >> > >>start core dumping:
> > > >> > >>    qemu-system-x86_64 -m 512 \
> > > >> > >>    -drive file=3D/usr/QEMU/WinXP/c.img,if=3Dide,media=3Ddisk =
-boot c \
> > > >> > >>    -std-vga -parallel none -serial none -monitor stdio \
> > > >> > >>    -net nic,model=3De1000 -net tap,ifname=3Dtap0,script=3Dno =
-localtime
> > > >> > >>
> > > >> > >>Loading kqemu.ko does not cause the problem, but the cores sta=
rt a
> > > >> > >>little after WinXP starts running.  Unloading kqemu.ko does no=
t help;
> > > >> > >>the cores still happen but more randomly.  I even tried unload=
ing all
> > > >> > >>linux modules and reloading them without luck.  It takes a reb=
oot.
> > > >> > >>
> > > >> > >>Packages:
> > > >> > >>qemu-devel-0.9.1s.20080620_1
> > > >> > >>kqemu-kmod-devel-1.4.0.p1
> > > >> > >>linux_base-f8-8_4
> > > >> > >>
> > > >> > >>sysctl:
> > > >> > >>compat.linux.osrelease: 2.6.16
> > > >> > >>
> > > >> > >>dmesg:
> > > >> > >>kqemu version 0x00010400
> > > >> > >>kqemu: KQEMU installed, max_locked_mem=3D1792492kB.
> > > >> > >>
> > > >> > >>System is 7-STABLE as of r181963 with or without the patch to =
fix RT
> > > >> > >>signals from Chagin.
> > > >> > >
> > > >> > >Interestingly... Sean, can you provide ktrace/kdump log of cori=
ng
> > > >> > >apps?  thnx!
> > > >> >=20
> > > >> > Here they are (good and bad):
> > > >> > http://www.farley.org/freebsd/tmp/linuxulator_vs_kqemu/
> > > >> >=20
> > > >> > The good trace is after the bad trace.  I just kept running ktra=
ce
> > > >> > /compat/linux/bin/date over and over until I got a good trace.  =
Before
> > > >> > loading kqemu and running qemu, there were no core dumps.  Also,=
 I
> > > >> > compared two bad traces and they were basically the same except =
for PID
> > > >> > and a couple of addresses (still very close in value).
> > > >> >=20
> > > >>=20
> > > >> Most likely it is a tls problem again, some days ago kib@ has made=
 MFC
> > > >> r182684, probably it will help..
> > > >
> > > >I doubt it. This seems to be an ingenious kqemu bug. As far as I rem=
ember,
> > > >it tries to use GDT/LDT. This probably has unwanted interaction with
> > > >PCB_GS32BIT.
> > >=20
> > > Wow.  That corner of the code had escaped me so far, and yes this (in
> > > amd64/linux32) looks like it won't like kqemu's seperating of the gdts
> > > on SMP indeed.  (it stores a pointer to &gdt[GUGS32_SEL] in pcb_gs32p=
 and
> > > lets linux processes manipulate the segment pointed to by it, and when
> > > kqemu is (or was) running this won't be used by all cpus, see older t=
hreads
> > > like
> > > 	http://lists.freebsd.org/pipermail/freebsd-emulation/2008-May/004902=
.html
> > > for the reasons.)
> > >=20
> > >  What I wonder tho is, won't this also cause problems without kqemu w=
hen
> > > there are linux processes running on multiple cpus that manipulate th=
is
> > > segment because the gdt is then shared between the cpus?  (like, linux
> > > process on cpu 0 changes the segment, then linux process on cpu 1 com=
es
> > > along and changes it again and then the linux process on cpu 0 will p=
ick
> > > it up from cpu 1?)  At least I must have somehow assumed the shared g=
dt
> > > wouldn't be changed later because of reasons like this...
> >=20
> > Very nice catch! Me and Peter Wemm discussed the right approach,
> > that consists of actually providing per-cpu GDT. Patch is at
> > http://people.freebsd.org/~kib/misc/amd64_gdt.1.patch
> >=20
> > Please, test and give a feedback. Even reports about thinks working
> > the same as before the patch are important.
>=20
> OK I just tested the patch on RELENG_7 (updated my amd64 SMP box from
> RELENG_7_0) and found no problems.  (I tested linux date(1), googleearth,
> kqemu, and a few other non-linux things so far.)

Thank you for the testing. Patch was committed to HEAD already (separated
into four mostly self-contained commits).
I expect the MFC in one week, your testing is important for MFC decision.

--+xNpyl7Qekk2NvDX
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (FreeBSD)

iEYEARECAAYFAkjFjnIACgkQC3+MBN1Mb4jH6wCg70X/w6ynwSrLxDf6/XJ+uAY2
pYYAoJe0V3jDN/PmXny1BoV4gKZcGKOi
=uwmL
-----END PGP SIGNATURE-----

--+xNpyl7Qekk2NvDX--



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