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>