Date: Thu, 2 Jun 2011 00:36:16 +0300 From: Kostik Belousov <kostikbel@gmail.com> To: Sergi <sergi@estrafolari.com> Cc: freebsd-xen@freebsd.org Subject: Re: fpudna: fpcurthread == curthread XXXX times Message-ID: <20110601213616.GE48734@deviant.kiev.zoral.com.ua> In-Reply-To: <4DE63803.7090504@estrafolari.com> References: <4DE5EDD7.20105@estrafolari.com> <20110601082156.GB48734@deviant.kiev.zoral.com.ua> <4DE60820.1080409@estrafolari.com> <4DE63803.7090504@estrafolari.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--W9261hGV6KsBFa7P Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Jun 01, 2011 at 03:00:51PM +0200, Sergi wrote: > On 01/06/11 11:36, Sergi wrote: > >On 01/06/11 10:21, Kostik Belousov wrote: > >>On Wed, Jun 01, 2011 at 09:44:23AM +0200, Sergi wrote: > >>>Hello, > >>> > >>>I'm working with full virtual FreeBSD 8.2-RELEASE-p1 domU under debian > >>>squeeze and xen-hypervisor-4.0-amd64. > >>> > >>>If I cfg this hvm with cpu> 4 : > >>> > >>> vcpus =3D 5 > >>> > >>>these messages block the server : > >>> > >>> fpudna: fpcurthread =3D=3D curthread XXXX times > >>> > >>>The machine is pingable but I'm unable to ssh to it. > >>> > >>>On single user it works fine, fsck an so on ok, but when switching to > >>>multiuser these fpudna messages start flooding. > >>> > >>>I've googled but haven't found anything; something from 2005 about=20 > >>>fpudna : > >>> > >>> =20 > >>>http://lists.freebsd.org/pipermail/freebsd-amd64/2005-April/004413.html > >>> > >>>and this link, but I don't have the options he mentions enabled on the > >>>kernel : > >>> > >>> http://forums.freebsd.org/showthread.php?t=3D17979 > >>> > >>>Has anyone stepped on this behaviour before?, is there any workaround? > >>>The machine really seems to detect cpu's available and responds to=20 > >>>keyboard > >>>on VNC, but it's impossible to see whats written down because of the > >>>messages flooding the screen. > >>You did not specified the architecture of the domu. From the message,= =20 > >>I can > >>guess that your guest is running amd64 kernel. There are slight=20 > >>differences > >>in the handling of the FPU in i386 and amd64 that may matter there. > >> > >>The message you reported means that the FreeBSD kernel assumes that FPU > >>is currently loaded with the context of the current thread, but the > >>CR0.TS bit is set, meaning that FPU context is set for switch. > >> > >>AFAIR, HVM means that you run bare-metal kernel, right ? Most likely, > >>it is some issue with Xen itself. I am curious whether the following > >>will cause any usermode-visible regression for you: > >> > >>diff --git a/sys/amd64/amd64/fpu.c b/sys/amd64/amd64/fpu.c > >>index 08e5e57..a5ee853 100644 > >>--- a/sys/amd64/amd64/fpu.c > >>+++ b/sys/amd64/amd64/fpu.c > >>@@ -394,14 +394,8 @@ fpudna(void) > >> struct pcb *pcb; > >> > >> critical_enter(); > >>- if (PCPU_GET(fpcurthread) =3D=3D curthread) { > >>- printf("fpudna: fpcurthread =3D=3D curthread %d times\n", > >>- ++err_count); > >>- stop_emulating(); > >>- critical_exit(); > >>- return; > >>- } > >>- if (PCPU_GET(fpcurthread) !=3D NULL) { > >>+ if (PCPU_GET(fpcurthread) !=3D NULL&& > >>+ PCPU_GET(fpcurthread) !=3D curthread) { > >> printf("fpudna: fpcurthread =3D %p (%d), curthread =3D %p (%d= )\n", > >> PCPU_GET(fpcurthread), > >> PCPU_GET(fpcurthread)->td_proc->p_pid, > >Hello, > > > >yes, sorry, amd64, and yes, hvm hardware virtual machine, not=20 > >paravirtual. > > > >So, you mean patching fpu.c and recompiling the kernel, right?, I'm=20 > >new to modifiying src files. > > > >Thanks for your help, > >Sergi > > > > > >_______________________________________________ > >freebsd-xen@freebsd.org mailing list > >http://lists.freebsd.org/mailman/listinfo/freebsd-xen > >To unsubscribe, send any mail to "freebsd-xen-unsubscribe@freebsd.org" > > > Hello, >=20 > well, I patched fpu.c, recompiled the kernel, and booted ok with 4 vcpu. > Then I tried to boot with 5 vcpus and got : >=20 > kernel trap 22 with interrupts disabled > ... > kernel trap 22 with interrupts disabled > Fatal double fault > rip =3D 0xffffffff8067865a > rsp =3D 0xffffff8000000000 > rbp =3D 0xffffff8000000040 > cpuid =3D 4; apic id =3D 08 > panic: double fault > cpuid =3D 4 >=20 > 4 vcpus is the maximum number of vcpus I can use. >=20 > How do you think I can debug this in order to provide more information? At least you can add KDB/DDB to the kernel config and get a backtrace at panic. My feeling right now is that the issue is in the hypervisor, and not in the kernel. --W9261hGV6KsBFa7P Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (FreeBSD) iEYEARECAAYFAk3msM8ACgkQC3+MBN1Mb4gq7wCaA0CaRHrWO3F2Y9NwI8VKIpb0 wzsAn1VpPFdgrZY++aSdOh6DRDF0s1oV =MA7t -----END PGP SIGNATURE----- --W9261hGV6KsBFa7P--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110601213616.GE48734>