Subject: i386 interrupt mask questions
To: None <port-i386@NetBSD.ORG>
From: Paul Mackerras <Paul.Mackerras@cs.anu.edu.au>
List: port-i386
Date: 06/30/1995 16:46:13
I have some reports of my PPP stuff causing problems on NetBSD/i386
systems, particularly those which also have an active ethernet
interface.  I've been checking the splxxx calls, and I find I'm not
sure exactly what interrupts they will block on the i386.  I'd like
to run the following assertions past you: if there are any that are
not valid, please let me know.

1. The line discipline l_rint and l_start procedures will be called
by a tty driver (such as com.c) at spltty or higher, so other interrupts
from tty devices are blocked.

2. With PPP in the kernel, code running at splimp won't be interrupted
by a tty device interrupt.

3. Code running at spltty or splimp won't be interrupted to run
softclock() (and thus any routine registered with timeout()) or
softnet().  [I would expect this, but I can't convince myself that
it is true on the i386.]

4. The line discipline l_open, l_close, l_read, l_write, and l_ioctl
routines are never called from an interrupt routine, so code running
at spltty, splimp or splnet won't be interrupted to run any of these
routines.

5. Routines called by softnet() are run at splnet.

6. MGET, MFREE, etc., can be used at any spl level.

Thanks,
Paul.