NetBSD/sys
thorpej e12f731db5 On the Alpha, interprocessor interrupts come in at the same priority
as normal device interrupts.  Because of this, we won't get IPIs while
servicing such interrupts.  This can lead to the following deadlock
scenario as reported by Bill Sommerfeld:
- Process runs on cpu1, but has FP state on cpu0.
- Process executes FP-using insn, causing an FP trap, which causes
  the kernel lock to be acquired.
- At roughly the same time, cpu0 receives a device interrupt, and attempts
  to acquire the kernel lock, which blocks since cpu1 already has it.
- cpu1 sends cpu0 a SYNCH FPU IPI, and waits for cpu0 to release its
  FP state.
- Since cpu0 cannot notice the IPI until it has processed the device
  interrupt, which it cannot do because it cannot acquire the kernel
  lock, we have deadlock.

Solve the problem by adding a spinlock interlock release hook which
checks for pending IPIs and processes them.

Idea from Bill Sommerfeld.
2000-11-20 20:17:13 +00:00
..
adosfs adosfs_mountfs(): check for zero amp->secsperblk before dividing by it (which 2000-11-08 08:06:24 +00:00
arch On the Alpha, interprocessor interrupts come in at the same priority 2000-11-20 20:17:13 +00:00
coda
compat Update extern declarations of {hpux,ultrix}_syscallnames for change 2000-11-19 12:47:51 +00:00
conf change a couple of needs-count to needs-flag (which is all they need). 2000-11-15 21:14:14 +00:00
crypto sync with kame. 2000-11-06 14:11:40 +00:00
ddb
dev add moxa 2000-11-20 19:27:16 +00:00
filecorefs Update for hashinit() change. 2000-11-08 14:28:12 +00:00
gdbscripts
ipkdb
isofs NBPG -> PAGE_SIZE 2000-11-14 22:26:32 +00:00
kern Allow machine dependent code to specify a hook to be run when a 2000-11-20 20:04:49 +00:00
lib Don't print "]" if loading kernel does not have symbol table. 2000-11-11 09:25:12 +00:00
lkm
miscfs avoid removing syncer vnodes from the worklist twice. 2000-11-19 05:53:21 +00:00
msdosfs Update for hashinit() change. 2000-11-08 14:28:12 +00:00
net Use DMA from mbuf instead of copy in transmit. 2000-11-20 12:12:18 +00:00
netatalk
netccitt
netinet Due to a quirk (err, bug?) in IP Filter (mbuf freed without setting *mp 2000-11-12 19:50:47 +00:00
netinet6 Restructure the PFIL_HOOKS mechanism a bit: 2000-11-11 00:52:36 +00:00
netiso fix paren/#ifdef match. 2000-10-02 03:54:53 +00:00
netkey don't waste entropy by use of key_random(). use key_randomfill() for 2000-10-07 12:08:33 +00:00
netnatm
netns
nfs Update for hashinit() change. 2000-11-08 14:28:12 +00:00
ntfs Update for hashinit() change. 2000-11-08 14:28:12 +00:00
stand
sys Add a sysctl_rdminstruct() function - same as sysctl_rdstruct() but 2000-11-20 01:46:56 +00:00
ufs Make buildable again. 2000-11-18 02:11:23 +00:00
uvm add SWAP_GETDUMPDEV command support. 2000-11-17 11:39:39 +00:00
Makefile