freebsd-skq/sys
John Baldwin 215e7c161a Rework how we wire up interrupt sources to CPUs:
- Throw out all of the logical APIC ID stuff.  The Intel docs are somewhat
  ambiguous, but it seems that the "flat" cluster model we are currently
  using is only supported on Pentium and P6 family CPUs.  The other
  "hierarchy" cluster model that is supported on all Intel CPUs with
  local APICs is severely underdocumented.  For example, it's not clear
  if the OS needs to glean the topology of the APIC hierarchy from
  somewhere (neither ACPI nor MP Table include it) and setup the logical
  clusters based on the physical hierarchy or not.  Not only that, but on
  certain Intel chipsets, even though there were 4 CPUs in a logical
  cluster, all the interrupts were only sent to one CPU anyway.
- We now bind interrupts to individual CPUs using physical addressing via
  the local APIC IDs.  This code has also moved out of the ioapic PIC
  driver and into the common interrupt source code so that it can be
  shared with MSI interrupt sources since MSI is addressed to APICs the
  same way that I/O APIC pins are.
- Interrupt source classes grow a new method pic_assign_cpu() to bind an
  interrupt source to a specific local APIC ID.
- The SMP code now tells the interrupt code which CPUs are avaiable to
  handle interrupts in a simpler and more intuitive manner.  For one thing,
  it means we could now choose to not route interrupts to HT cores if we
  wanted to (this code is currently in place in fact, but under an #if 0
  for now).
- For now we simply do static round-robin of IRQs to CPUs when the first
  interrupt handler just as before, with the change that IRQs are now
  bound to individual CPUs rather than groups of up to 4 CPUs.
- Because the IRQ to CPU mapping has now been moved up a layer, it would
  be easier to manage this mapping from higher levels.  For example, we
  could allow drivers to specify a CPU affinity map for their interrupts,
  or we could allow a userland tool to bind IRQs to specific CPUs.

The MFC is tentative, but I want to see if this fixes problems some folks
had with UP APIC kernels on 6.0 on SMP machines (an SMP kernel would work
fine, but a UP APIC kernel (such as GENERIC in RELENG_6) would lose
interrupts).

MFC after:	1 week
2006-02-28 22:24:55 +00:00
..
alpha Close some races between procfs/ptrace and exit(2): 2006-02-22 18:57:50 +00:00
amd64 Rework how we wire up interrupt sources to CPUs: 2006-02-28 22:24:55 +00:00
arm Get this to compile with the recent UART changes. 2006-02-27 23:19:13 +00:00
boot Remove ELF dynamic tag definitions that aren't used. Ideally, 2006-01-18 18:49:25 +00:00
bsm Merge OpenBSM 1.0 alpha 3 include file changes from contrib/openbsm/bsm 2006-02-06 01:12:46 +00:00
cam - Add a scsi_da.c and a umass.c quirk for Genesys 6-in-1 Card Reader. 2006-01-30 20:27:44 +00:00
coda CODA_COMPAT_5 may not be defined unconditionally in the coda5 module. 2006-02-27 12:04:13 +00:00
compat regen for 32bit sendfile 2006-02-28 19:39:52 +00:00
conf Move de driver to dev/de 2006-02-26 17:54:04 +00:00
contrib resolve merge conflicts 2006-02-10 19:01:02 +00:00
crypto
ddb Fix -Wundef. 2005-12-04 02:12:43 +00:00
dev Fix mpt_reset to try mpt_hard_reset more than once, and to try 2006-02-28 07:44:50 +00:00
doc
fs Correct the vnode locking in fdescfs. 2006-02-28 00:05:44 +00:00
gdb
geom Do not use bio structure after g_io_deliver(), it may not longer by valid. 2006-02-22 10:21:05 +00:00
gnu Add marker vnodes to ensure that all vnodes associated with the mount point are 2006-01-09 20:42:19 +00:00
i4b Fix -Wundef warnings found when compiling i386 LINT, GENERIC and 2005-12-05 11:58:35 +00:00
i386 Rework how we wire up interrupt sources to CPUs: 2006-02-28 22:24:55 +00:00
ia64 Close some races between procfs/ptrace and exit(2): 2006-02-22 18:57:50 +00:00
isa Tweak how the MD code calls the fooclock() methods some. Instead of 2005-12-22 22:16:09 +00:00
isofs/cd9660 I ran into an nfs client panic a couple of times in a row over the 2006-01-17 17:29:03 +00:00
kern Fix 32bit sendfile by implementing kern_sendfile so that it takes 2006-02-28 19:39:18 +00:00
libkern Convert function declarations to ANSI C. 2006-01-22 00:46:40 +00:00
modules This patch fixes a problem, which exists if you have IPSEC in your kernel 2006-02-27 16:56:22 +00:00
net Fix up the Bridge Identifier field in the BPDU packet. 2006-02-28 00:13:24 +00:00
net80211 consolidate calculation of capabilities ie 2006-02-25 05:36:43 +00:00
netatalk - Store pointer to the link-level address right in "struct ifnet" 2005-11-11 16:04:59 +00:00
netatm Convert to ANSI C function declarations. 2006-01-22 01:07:11 +00:00
netgraph Clear csum_flags after reading data from socket buffer. Otherwise, 2006-02-21 13:04:39 +00:00
netinet This patch fixes the problem where the current TCP code can not handle 2006-02-23 21:14:34 +00:00
netinet6 avoided the use of purged address structure when an address became 2006-02-12 15:37:08 +00:00
netipsec Fix stack corruptions on amd64. 2006-01-21 10:44:34 +00:00
netipx In spx_attach() and spx_detach(), there is no need to check whether the 2006-01-14 00:05:44 +00:00
netkey Fix stack corruptions on amd64. 2006-01-21 10:44:34 +00:00
netnatm Use sparse initializers for "struct domain" and "struct protosw", 2005-11-09 13:29:16 +00:00
netncp In ncp_sysctl_connstat(), the SLIST_FOREACH() logic to check 'error' 2006-01-14 11:40:32 +00:00
netsmb Although we check the return value of copyin(9) while determaining how 2006-01-16 17:03:21 +00:00
nfs
nfs4client Use nfs4_disconnect for connections opened with nfs4_connect. 2006-01-19 22:48:31 +00:00
nfsclient Don't log an error on tcp connection reset, even if we don't get ECONNRESET. 2006-01-20 15:07:18 +00:00
nfsserver - Reorder calls to vrele() after calls to vput() when the vrele is a 2006-02-01 00:25:26 +00:00
opencrypto This patch fixes a problem, which exists if you have IPSEC in your kernel 2006-02-27 16:56:22 +00:00
pc98 - Use bus_setup_intr() and bus_teardown_intr() to register device driver 2006-02-22 18:16:26 +00:00
pccard I don't believe these are used at all, and can be safely removed 2006-01-15 06:49:28 +00:00
pci Remove de driver from old location. 2006-02-26 17:52:51 +00:00
posix4 mqueue.h has been superceded by sys/mqueue.h thanks to David Xu's work. 2005-11-28 02:58:30 +00:00
powerpc Simplify system time accounting for profiling. 2006-02-08 08:09:17 +00:00
rpc Fix up some cut-n-paste damage and some out-of-date comments. 2006-01-20 15:20:41 +00:00
security Add stub AUE_EACCESS entry. 2006-02-11 23:55:08 +00:00
sparc64 Fix a c/p error. 2006-02-28 21:25:00 +00:00
sys Allow PHOLD()'s of curproc even if P_WEXIT is set. Normally we don't want 2006-02-28 20:11:30 +00:00
tools Fix a leftover "iwi_boot" string. 2006-01-30 16:32:08 +00:00
ufs - Using LK_NOWAIT in qsync() can get us into infinite loop situations that 2006-02-22 06:12:53 +00:00
vm Lock the vm_object while checking its type to see if it is a vnode-backed 2006-02-21 22:09:54 +00:00
Makefile add nfsclient/, nfs4client/, and rpc/ directories to the 2006-01-10 20:58:27 +00:00