splz still ?

Matthew Dillon dillon at apollo.backplane.com
Mon May 15 09:14:58 PDT 2006


:On Mon, May 15, 2006 at 04:31:29PM +0200, Simon 'corecode' Schubert wrote:
:> On 15.05.2006, at 15:51, Terry Tree wrote:
:> [splz remove]
:> 
:> i think splz() does something else (thread switch stuff?) so it may not 
:> replaced with crit_*()
:
:It checks for currently pending interrupts and delivers them. *Very*
:nasty, but not easy to fix without carefully why the code needed it.
:
:Joerg

    It looks like CAM wants to run any pending interrupts while potentially
    in a critical section.  My guess is that it is trying to avoid too many
    unprocessed events building up while it is looping on a queue.

    In anycase, you can't just replace a splz() call with a crit_exit().
    crit_enter()'s and crit_exit()'s have to match up.  So unless that
    bit of code was a bug before, the patch won't work.

    splz() still serves a vital function on the system.  It is used to
    run pending interrupts after the last critical section is exited,
    and used to run pending interrupts if a thread switch occurs (e.g.
    between two threads which are both holding a critical section).
    So it can't be removed in general.  CAMs use of splz() is rather odd,
    but not illegal.

					-Matt
					Matthew Dillon 
					<dillon at xxxxxxxxxxxxx>





More information about the Kernel mailing list