From owner-cvs-sys Mon Oct 30 09:46:34 1995 Return-Path: owner-cvs-sys Received: (from root@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id JAA05281 for cvs-sys-outgoing; Mon, 30 Oct 1995 09:46:34 -0800 Received: from godzilla.zeta.org.au (godzilla.zeta.org.au [203.2.228.19]) by freefall.freebsd.org (8.6.12/8.6.6) with ESMTP id JAA05262 ; Mon, 30 Oct 1995 09:46:19 -0800 Received: (from bde@localhost) by godzilla.zeta.org.au (8.6.9/8.6.9) id EAA00822; Tue, 31 Oct 1995 04:42:12 +1100 Date: Tue, 31 Oct 1995 04:42:12 +1100 From: Bruce Evans Message-Id: <199510301742.EAA00822@godzilla.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 Sender: owner-cvs-sys@FreeBSD.org Precedence: bulk >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