freebsd-dev/sys/sparc64
Marius Strobl 338199fe88 - Since critical sections no longer raise the processor interrupt level to
above what's used for fast interrupts, only interrupts with the level of
  the interrupt which led to calling intr_fast() (which is used with both
  fast and ithread interrupts) are blocked while in that function. Thus
  intr_fast() can be preempted by a fast interrupt (which are of a higher
  level than ithread interrupts) while servicing an ithread interrupt. This
  can lead to a stale pointer to the head of the active interrupt requests
  list when back in the ithread interrupt invocation of intr_fast(), in turn
  resulting in corruption of the interrupt request lists and consequently
  in a panic. Solve this be turning off interrupts in intr_fast() before
  reading the pointer to the head of the active list rather than after. [1]
- Add a KASSERT in intr_fast() which asserts that ir_func is non-zero before
  calling it. [1]
- Increment interrupt stats after calling the handlers rather than before.
  This reduces the delay until direct and fast handlers are serviced, in my
  testings by 30% on average for the direct tick interrupt handler, in turn
  resulting in less clock drift.

PR:		94778 [1]
Submitted by:	Andrew Belashov [1]
MFC after:	2 weeks
2006-04-17 21:03:24 +00:00
..
central - Register the generic implementations for the device shutdown, suspend 2006-01-26 21:14:32 +00:00
compile
conf Add scc(4). 2006-03-30 18:40:25 +00:00
creator - Declare lookup tables etc. const. 2005-07-10 11:16:34 +00:00
ebus - Register the generic implementations for the device shutdown, suspend 2006-01-26 21:14:32 +00:00
fhc Add convenience macros for the full register set and use them to replace 2006-03-28 19:46:48 +00:00
include Eliminate HAVE_STOPPEDPCBS. On ia64 the PCPU holds a pointer to the 2006-04-03 22:51:47 +00:00
isa - Move the declaration of struct upa_ranges and the UPA_RANGE_* macros 2005-12-03 19:52:20 +00:00
pci - Register the generic implementations for the device shutdown, suspend 2006-01-26 21:14:32 +00:00
sbus o lsi64854_enet_intr(): 2006-01-31 12:50:02 +00:00
sparc64 - Since critical sections no longer raise the processor interrupt level to 2006-04-17 21:03:24 +00:00