1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-20 11:11:24 +00:00
freebsd/sys
John Baldwin 7870c3c61c - Enable (unmask) interrupt sources earlier in the ithread loop.
Specifically, we used to enable the source after locking sched_lock
  and just before we had already decided to do a context switch.
  This meant that an ithread could never process more than one interrupt
  per context switch.  Enabling earlier in the loop before sched_lock is
  acquired allows an ithread to handle multiple interrupts per context
  switch if interrupts fire very rapidly.  For the case of heavy interrupt
  load this can reduce the number of context switches (and thus overhead)
  as well as reduce interrupt latency.
- Now that we can handle multiple interrupts per context switch, add simple
  interrupt storm protection to threaded interrupts.  If X number of
  consecutive interrupts are triggered before the itherad voluntarily
  yields to another thread, then the interrupt thread will sleep with the
  associated interrupt source disabled (masked) for 1/10th of a second.
  The default value of X is 500, but it can be tweaked via the tunable/
  sysctl hw.intr_storm_threshold.  If an interrupt storm is detected, then
  a message is output to the kernel console on the first occurrence per
  interrupt thread.  Interrupt storm protection can be disabled completely
  by setting this value to 0.  There is no scientific reasoning for the
  1/10th of a second or 500 interrupts values, so they may require tweaking
  at some point in the future.

Tested by:	rwatson (an earlier version w/o the storm protection)
Tested by:	mux (reportedly made a machine with two PCI interrupts
		storming usable rather than hard locked)
Reviewed by:	imp
2004-04-16 20:25:40 +00:00
..
alpha Whitespace fix. 2004-04-16 20:09:53 +00:00
amd64 Set the "global" attribute on the page table entries for the kernel and 2004-04-16 03:45:28 +00:00
arm Remove advertising clause from University of California Regent's license, 2004-04-05 21:29:41 +00:00
boot s/atspeaker/speaker/ 2004-04-15 12:12:15 +00:00
cam Compare the *number* of patterns to zero, not the *pointer* to the 2004-02-28 12:59:56 +00:00
coda Device megapatch 5/6: 2004-02-21 21:32:15 +00:00
compat - Use memory barrier with atomic operations in ntoskrnl_lock_dpc() and 2004-04-16 00:04:28 +00:00
conf Remove nowerror lines now that acpica is warns clean. 2004-04-14 18:13:16 +00:00
contrib Remove warnings from vendor files. This takes some files off the vendor 2004-04-14 18:12:29 +00:00
crypto
ddb Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
dev Attempts to make this device Giant-free were ill-conceived as 2004-04-16 17:10:54 +00:00
fs Do not drop Giant around the poll method yet, we're not ready for it. 2004-04-12 21:52:52 +00:00
geom Calculate bio_completed properly or die! 2004-04-04 20:37:28 +00:00
gnu Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
i4b Convert callers to the new bus_alloc_resource_any(9) API. 2004-03-17 17:50:55 +00:00
i386 Revert part of the "BIOS brain damage" from rev 1.10. It seems that 2004-04-16 19:46:30 +00:00
ia64 Remove a comment that refers to avail_start and avail_end as these 2004-04-11 06:37:36 +00:00
isa Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
isofs/cd9660 Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
kern - Enable (unmask) interrupt sources earlier in the ithread loop. 2004-04-16 20:25:40 +00:00
libkern Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
modules Include nehemiah.c only on i386, as is done for the non-modules 2004-04-11 15:40:18 +00:00
net Use if_link instead of the alias if_list, and change a for() into 2004-04-16 10:32:13 +00:00
net80211 Resolve the issue of whether frames have FCS or not. Frame data does not 2004-04-05 22:13:21 +00:00
netatalk Lock down the netatalk AARP code, which is responsible for appletalk 2004-04-09 01:40:12 +00:00
netatm These are changes to allow to use the Intel C/C++ compiler (lang/icc) 2004-03-12 21:45:33 +00:00
netgraph Consistently use ifaddr_byindex() to access the link-level address 2004-04-16 08:15:37 +00:00
netinet In an effort to simplify the routing code, try to deprecate rtalloc() 2004-04-14 01:13:14 +00:00
netinet6 Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
netipsec Unbreak FAST_IPSEC build on 64 bit archs with INVARIANTS. 2004-04-07 00:19:02 +00:00
netipx Rename dup_sockaddr() to sodupsockaddr() for consistency with other 2004-03-01 03:14:23 +00:00
netkey
netnatm Rename dup_sockaddr() to sodupsockaddr() for consistency with other 2004-03-01 03:14:23 +00:00
netncp Make the process_exit eventhandler run without Giant. Add Giant hooks 2004-03-14 02:06:28 +00:00
netsmb Rename dup_sockaddr() to sodupsockaddr() for consistency with other 2004-03-01 03:14:23 +00:00
nfs Remove advertising clause from University of California Regent's 2004-04-07 05:00:01 +00:00
nfs4client Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
nfsclient Let the NFS client notice a file's size changing as a modification. 2004-04-14 23:23:55 +00:00
nfsserver Don't send the available space as is in the FSSTAT call. Under 2004-04-12 13:02:21 +00:00
opencrypto kthread_exit() no longer requires Giant, so don't force callers to acquire 2004-03-05 22:42:17 +00:00
pc98 sx was randomly added to NOTES. Instead, place it in the misc 2004-04-14 02:25:31 +00:00
pccard Convert callers to the new bus_alloc_resource_any(9) API. 2004-03-17 17:50:55 +00:00
pci Boomerang 10/100BT (found in 2c905-TX) chips apparently suffer the 2004-04-13 19:34:20 +00:00
posix4
powerpc Remove avail_end. It is not used. 2004-04-11 06:02:24 +00:00
rpc Remove advertising clause from University of California Regent's 2004-04-07 05:00:01 +00:00
security Define BPFD_LOCK_ASSERT() to assert the BPF descriptor lock. 2004-02-29 15:33:56 +00:00
sparc64 Remove avail_end. It is not used. 2004-04-11 06:02:24 +00:00
sys Bump __FreeBSD_version on behalf of the new .warning directive in make(1). 2004-04-13 09:33:33 +00:00
tools Correct $FreeBSD$ style. 2004-04-16 05:22:11 +00:00
ufs Record where half the bits in this file came from (from ufs_readwrite.c). 2004-04-07 11:21:18 +00:00
vm - pmap_kenter_temporary() is unused by machine-independent code. Therefore, 2004-04-10 22:41:46 +00:00
Makefile