Subject: Re: SMP re-entrancy in kernel drivers/"bottom half?"
To: None <jonathan@dsg.stanford.edu>
From: YAMAMOTO Takashi <yamt@mwd.biglobe.ne.jp>
List: tech-kern
Date: 12/18/2003 09:15:50
> >are you suggesting a "global" SPL? (ie. not per cpu)
> 
> Of course; thats one thing the spinlocks do.

it sounds like a regression.

> >i'm confused.
> >how bottom-half drivers works simultaneously while all of them
> >need to acquire the spinlock corresponding to the lowest SPL?
> 
> Let us use "True device IPLs" to mean those IPL levels where runs
> interrupt service routines.  I'm suggesting we have one spinlock per
> device instance for those interrupt levels; and one (global) spinlock
> for higher levels.  Assume, for now, that at most one CPU is running
> software-interrupt routines or `top half' kernel code.

what's "higher levels"?

> If an interrupt-service entrypoint needs to raise its IPL above the
> level where the kernel entered it (hwere, for its own device softc,
> the spinlock in the softc guarantees atomic access), then it has
> to acquire the global spinlock()s for IPLs above device entrypoints.
>
> This assumes that code at IPL_NET never needs to go to IPL_BIO.
> As far as I can tell thats a safe assumption.

how low level interrupt handlers (e.g. Xintr_* on i386) raise SPL?

YAMAMOTO Takashi