Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 31 Oct 1995 04:42:12 +1100
From:      Bruce Evans <bde@zeta.org.au>
To:        CVS-commiters@freefall.freebsd.org, bde@freefall.freebsd.org, cvs-sys@freefall.freebsd.org
Subject:   Re: cvs commit: src/sys/i386/include spl.h
Message-ID:  <199510301742.EAA00822@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>bde         95/10/30 09:01:41

>  Modified:    sys/i386/include  spl.h
>  Log:
>  Mask netisrs during softtty isrs.  This may fix PR 798.  SLIP and PPP
>  line discipline interrupt handlers more or less expect to be called at
>  spltty() == splimp(), although they have internal splimp()s that are
>  bogus if this expectation is satisfied.  They are called at splsoftty()
>  from many tty drivers, so they were not protected from being reentered
>  from their own netisrs.  They certainly don't expect that but are
>  apparently remarkably robust if it occurs.  The problem in PR 798 seems
>  to be caused by pppstart() being reentered and finishing off the output
>  in progress by following the (stale) sc->sc_outm pointer.  Then the
>  original pppstart() finds garbage in m2 after MFREE(m, m2).  slstart()
>  doesn't have internal state like sc_outm so reentry of it probably only
>  causes out of order and dropped packets.

This change, and possibly related ones, should be in 2.1.  Sigh.  I hope
there are no further spl bugs like this, but it would be safer to run
softtty isrs at spltty() == splimp() and mask netisrs and softtty isrs
during all h/w isrs.  I don't want to do the latter forever (I want
softtty isrs to have higher priority than slow bio isrs like wdintr...)
because I think netisr latency is more important than h/w isr latency
for local devices.

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199510301742.EAA00822>