Subject: Re: SA i386 SMP deadlock
To: Jason Thorpe <thorpej@wasabisystems.com>
From: Stephan Uphoff <ups@stups.com>
List: port-i386
Date: 08/11/2003 11:55:27
Jason Thorpe wrote:
>
> On Sunday, August 10, 2003, at 02:37 PM, Stephan Uphoff wrote:
>
> > cpu_switch() running on CPU B tries to acquire the scheduler lock while
> > blocking all interrupts.
>
> sched_lock must be acquired while at splsched(). So, if you're not
> blocking all interrupts here, you must go to splsched() somehow.
> > movl $IPL_HIGH,CPUVAR(ILEVEL) # splhigh
Doesn't this imply splsched ?
Stephan
>
>
> >
> > Stephan
> >
> >
> > Index: locore.S
> > ===================================================================
> > RCS file: /cvsroot/src/sys/arch/i386/i386/locore.S,v
> > retrieving revision 1.13
> > diff -u -r1.13 locore.S
> > --- locore.S 2003/08/08 20:14:06 1.13
> > +++ locore.S 2003/08/10 21:20:40
> > @@ -1794,7 +1794,8 @@
> > cli
> > cmpl $0,_C_LABEL(sched_whichqs)
> > jz idle_loop
> > -idle_exit:
> > +idle_exit:
> > + sti
> > movl $IPL_HIGH,CPUVAR(ILEVEL) # splhigh
> > #if defined(MULTIPROCESSOR) || defined(LOCKDEBUG)
> > call _C_LABEL(sched_lock_idle)
> >
> >
> >
> -- Jason R. Thorpe <thorpej@wasabisystems.com>
>
>