Date: Sat, 15 Jan 2005 11:03:30 +0300 From: "Peter Trifonov" <pvtrifonov@mail.ru> To: freebsd-smp@freebsd.org Cc: kris@obsecurity.org Subject: Re: Lost interrupts on SMP systems Message-ID: <200501151103.30642.pvtrifonov@mail.ru> In-Reply-To: <200501141418.18587.jhb@FreeBSD.org> References: <E1CpVwy-0007cZ-00.pvtrifonov-mail-ru@mx1.mail.ru> <200501141418.18587.jhb@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Hello John, On Friday 14 January 2005 22:18, John Baldwin wrote: Among those bug reports the followup submitted by cguthrie@clubphoto.co (http://www.freebsd.org/cgi/query-pr.cgi?pr=i386/40274) looks like the most close one to my situation. > > > I've gone ahead and committed the fix for the MPTable global > > > entries btw. I don't think there is a routing or edge/level > > > problem though because the devices do work until you do a > > > ping flood. One thing we can try is that Linux has a > > > > IMPORTANT: I can do flood ping over either of them without any problems > > (at least, if the system is booted with -p -v, I don't know why). > > They break down ONLY if flood ping is SIMULTANEOUSLY performed over both > > of them. Another observation: doing simultaneous flood ping over xl0 AND xl1, xl0 AND xl2 also causes xl1 or xl2 respectively (but not both of them) to say "watchdog timeout". In both cases they can be fixed by doing ifconfig xl1 down ifconfig xl2 down ifconfig xl1 up ifconfig xl2 up i.e. even if flood ping has not been done over xl2, it still has to be brought down& up. xl0 works fine in all cases. flood ping over just one interface (either of them) always works fine. > More interrupt load that way, which would indicate maybe the bug Linux > tries to work around except that your intpins are edge triggered. :( Just a guess: Maybe also there is some kind of race condition in the interrupt handling system, so that if too many interrupts are coming from different sources, some of them are not properly processed? However, this should be somehow related to IRQ sharing. > > I've included a little test program below that you can run as root to do > arbitrary port reads (inb). Please compile it and mail me the output of: > > inb 0x4d0 > inb 0x4d1 Here is what it says: # ./inb 0x4d0 inb(0x4d0) = 0x0 = 0d = '^@' # ./inb 0x4d1 inb(0x4d1) = 0xe = 14d = '^N' PS: I had to revert the first patch because it requres me to be near the console during the boot process in order to type boot -p -v. Moreover, during such boot the system sometimes hangs. mptable patch is still installed. -- With best regards, P. Trifonov
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200501151103.30642.pvtrifonov>