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 = 5 > >>> > >>>these messages block the server : > >>> > >>> fpudna: fpcurthread == 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 > >>>fpudna : > >>> > >>> > >>>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=17979 > >>> > >>>Has anyone stepped on this behaviour before?, is there any workaround? > >>>The machine really seems to detect cpu's available and responds to > >>>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, > >>I can > >>guess that your guest is running amd64 kernel. There are slight > >>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) == curthread) { > >>- printf("fpudna: fpcurthread == curthread %d times\n", > >>- ++err_count); > >>- stop_emulating(); > >>- critical_exit(); > >>- return; > >>- } > >>- if (PCPU_GET(fpcurthread) != NULL) { > >>+ if (PCPU_GET(fpcurthread) != NULL&& > >>+ PCPU_GET(fpcurthread) != curthread) { > >> printf("fpudna: fpcurthread = %p (%d), curthread = %p (%d)\n", > >> PCPU_GET(fpcurthread), > >> PCPU_GET(fpcurthread)->td_proc->p_pid, > >Hello, > > > >yes, sorry, amd64, and yes, hvm hardware virtual machine, not > >paravirtual. > > > >So, you mean patching fpu.c and recompiling the kernel, right?, I'm > >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-unsubscr...@freebsd.org" > > > Hello, > > well, I patched fpu.c, recompiled the kernel, and booted ok with 4 vcpu. > Then I tried to boot with 5 vcpus and got : > > kernel trap 22 with interrupts disabled > ... > kernel trap 22 with interrupts disabled > Fatal double fault > rip = 0xffffffff8067865a > rsp = 0xffffff8000000000 > rbp = 0xffffff8000000040 > cpuid = 4; apic id = 08 > panic: double fault > cpuid = 4 > > 4 vcpus is the maximum number of vcpus I can use. > > 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.
pgpjK651DRhD4.pgp
Description: PGP signature