Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Aug 1997 12:26:35 -0600
From:      Steve Passe <smp@csn.net>
To:        Terry Lambert <terry@lambert.org>
Cc:        petrilli@amber.org (Christopher Petrilli), mestery@winternet.com, peters@gil.com.au, smp@FreeBSD.ORG
Subject:   Re: A how does it work question. 
Message-ID:  <199708271826.MAA29172@Ilsa.StevesCafe.com>
In-Reply-To: Your message of "Wed, 27 Aug 1997 09:37:28 PDT." <199708271637.JAA05609@phaeton.artisoft.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
Hi,

I suppose I should summarize the current state of SMP:

 - fast intrrrupts no longer use the giant lock.  There is a simple lock that
   prevents more than 1 fast interrupt from being in the kernel at once,
   but this is strictly because of the way sio and cy are written, not because
   the kernel couldn't do it, it could (I think!).  Specifically they
   use global variables that they implicitly expect to be non-volatile
   while they are inside their ISR.  If say, tty0 and tty1 both were inside
   at the same time it would break.  This points out a simple fact we will have
   to deal with: most if not all the drivers are not MP-safe, and each will
   need work to become so.  Its not as simple as making the kernel proper
   MP-safe, but each and EVERY driver needs work.

 - regular (slow) interrupts are still controlled by the giant lock.  I have
   rounded up all the accesses of cpl & ipending into 'critical regions', ie
   the access/modification of cpl/ipending by the spl and ISR functions
   are now MP-safe.  The final step is the removal of the giant lock
   from regular interrupts.  This will require the separation of the ISR
   mask component added by the ISRs to the cpl into a separate variable and
   additional code in the spl functions to prevent them from changing cpl while
   any  ISR is inside a critical cpl region.  This is what I am working on now.
   At first there will be a simple lock used to serialize all reg. interrupts
   as with the fast ints, but once this works I plan to use an array of simple
   locks, one per IRQ.  To go beyond this will again require work on each
   driver.

 - John is working on the use of the lock manager to protect all the VM
   accesses.  Once this is ready, he will remove the giant lock from the
   VM traps.

--
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?199708271826.MAA29172>