From owner-freebsd-hackers Thu Mar 26 12:43:04 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id MAA19866 for freebsd-hackers-outgoing; Thu, 26 Mar 1998 12:43:04 -0800 (PST) (envelope-from owner-freebsd-hackers@FreeBSD.ORG) Received: from gatekeeper.alcatel.com.au (gatekeeper.alcatel.com.au [203.17.66.1]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id MAA19847 for ; Thu, 26 Mar 1998 12:42:48 -0800 (PST) (envelope-from Peter.Jeremy@alcatel.com.au) Received: from mfg1.cim.alcatel.com.au ([139.188.23.1]) by gatekeeper.alcatel.com.au (PMDF V5.1-7 #U2695) with ESMTP id <01IV5IY4UKQO003K5Q@gatekeeper.alcatel.com.au> for freebsd-hackers@FreeBSD.ORG; Fri, 27 Mar 1998 07:38:49 +1000 Received: from cbd.alcatel.com.au by cim.alcatel.com.au (PMDF V5.1-10 #9238) with ESMTP id <01IV5IY2N0N490NCWO@cim.alcatel.com.au>; Fri, 27 Mar 1998 07:38:46 +1000 Received: from gsms01.alcatel.com.au by cbd.alcatel.com.au (PMDF V5.1-7 #U2695) with ESMTP id <01IV5IY0135SAZTN01@cbd.alcatel.com.au>; Fri, 27 Mar 1998 07:38:42 +1100 Received: (from jeremyp@localhost) by gsms01.alcatel.com.au (8.8.8/8.7.3) id HAA23930; Fri, 27 Mar 1998 07:38:41 +1100 (EST) Date: Fri, 27 Mar 1998 07:38:41 +1100 (EST) From: Peter Jeremy Subject: Interrupt windows in FreeBSD To: freebsd-hackers@FreeBSD.ORG Cc: dag-erli@ifi.uio.no, dmlb@ragnet.demon.co.uk, regnauld@deepo.prosa.dk Message-id: <199803262038.HAA23930@gsms01.alcatel.com.au> Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG As I've previously mentioned (see my mail here on 15-Mar-1998 and PR kern/6099) I have been having problems with LPIP (as have a couple of other people - see PRs kern/1271 and i386/5698). I've now tracked down what appears to be at least one cause of the problem. According to the comments in sys/mbuf.h, all mbuf manipulation should be protected by splimp() (or higher). The problem is that the LPIP code never adds the lpt interrupt to net_imask. This means that an LPIP interrupt can break mbuf critical regions. (I haven't had a chance to actually build a new kernel and check this). The other area where LPIP interacts with the non-interrupt code is via ipintrq. Again, according to the comments in net/if.h, the queue manipulation routines should only be called at splimp() or greater. There are a number of cases where it is called at splnet(), although none of these seem to be manipulating ipintrq. Peter To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message