Skip site navigation (1)Skip section navigation (2)
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>