NetBSD/sys/arch
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
..
alpha On the Alpha, interprocessor interrupts come in at the same priority 2000-11-20 20:17:13 +00:00
amiga rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
amigappc don't specify number of ptys if >= 16 (current default initial number) 2000-09-24 15:59:26 +00:00
arc rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
arm26 rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
arm32 rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
atari rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
bebox rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
cobalt rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
evbsh3 add shpcmcia_mem*() for SH4_PCMCIA 2000-11-08 01:01:22 +00:00
hp300 rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
hpcmips rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
i386 fix typo 2000-11-20 20:07:36 +00:00
luna68k rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
m68k %%<reg> -> %<reg> 2000-10-19 12:15:53 +00:00
mac68k rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
macppc rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
mips We use 4K pages on MIPS systems (see mips_param.h), so override 2000-11-14 18:55:16 +00:00
mipsco rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
mmeye fix shpcic* iomem size from 0x4000000 to 0x1000000 2000-10-17 10:02:11 +00:00
mvme68k Add support for the m68060-based machines: MVME-172 and MVME-177. 2000-11-20 19:35:28 +00:00
news68k rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
newsmips Fix swapped keycode for '[' and ']'. 2000-11-20 14:55:15 +00:00
next68k rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
ofppc rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
pc532 rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
pmax rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
powerpc Thermal Management Interrupt is available on 750, too. 2000-11-20 15:16:04 +00:00
prep rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
sgimips rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
sh3 rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
sparc rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
sparc64 rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
sun3 rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
vax rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
x68k rationalize the use of b_flags for geteblk() buffers. 2000-11-20 08:24:08 +00:00
Makefile