Date: Fri, 28 Mar 1997 10:14:22 -0700 From: Steve Passe <smp@csn.net> To: cr@jcmax.com (Cyrus Rahman) Cc: freebsd-smp@freefall.freebsd.org Subject: SMP_PROBLEM: Floating point exceptions Message-ID: <199703281714.KAA25923@Ilsa.StevesCafe.com> In-Reply-To: Your message of "Fri, 28 Mar 1997 05:32:01 EST." <9703281032.AA22682@corona.jcmax.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi, SMP_PROBLEM: Floating point exceptions: cr@jcmax.com (Cyrus Rahman) appears to have found the cause of the FPE lockup: > The reason floating point exceptions lock up the kernel is that rel_mplock > is called by doreti during the exception processing, but get_mplock isn't, > so the lock count goes to -2 and then things stop. > > Unless I'm missing something it seems pretty likely that a lock should be > obtained anyway by the fpu trap routine before attempting to deliver > the SIGFPE: > > *** exception.s.dist Sat Mar 1 06:54:49 1997 > --- exception.s Fri Mar 28 04:13:03 1997 > *************** > *** 140,145 **** > --- 140,148 ---- > movl _cpl,%eax > pushl %eax > pushl $0 /* dummy unit to finish building intr frame */ > + #ifdef SMP > + call _get_mplock > + #endif /* SMP */ > incl _cnt+V_TRAP > orl $SWI_AST_MASK,%eax > movl %eax,_cpl > > Certainly this fixes the problem - but is there a reason why the lock wasn't > obtained in the original code? to err is human... > That brings me to the other problem, which is that the reason I'm getting > APIC_IO lockups is that under heavy load the counter gets set to 2 and stays > there. Perhaps this is a result of nested interrupts - I don't know yet. > If you have any ideas, please let me know. > > Cyrus thanx, cyrus! since I don't have a working system right now, could someone confirm the fix in their environment? When I hear back that it works without side-effects I'll commit it. -- Steve Passe | powered by smp@csn.net | Symmetric MultiProcessor FreeBSD
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199703281714.KAA25923>