freebsd-dev/sys/i386
John Baldwin eaf86d1678 Add preliminary support for binding interrupts to CPUs:
- Add a new intr_event method ie_assign_cpu() that is invoked when the MI
  code wishes to bind an interrupt source to an individual CPU.  The MD
  code may reject the binding with an error.  If an assign_cpu function
  is not provided, then the kernel assumes the platform does not support
  binding interrupts to CPUs and fails all requests to do so.
- Bind ithreads to CPUs on their next execution loop once an interrupt
  event is bound to a CPU.  Only shared ithreads are bound.  We currently
  leave private ithreads for drivers using filters + ithreads in the
  INTR_FILTER case unbound.
- A new intr_event_bind() routine is used to bind an interrupt event to
  a CPU.
- Implement binding on amd64 and i386 by way of the existing pic_assign_cpu
  PIC method.
- For x86, provide a 'intr_bind(IRQ, cpu)' wrapper routine that looks up
  an interrupt source and binds its interrupt event to the specified CPU.
  MI code can currently (ab)use this by doing:

	intr_bind(rman_get_start(irq_res), cpu);

  however, I plan to add a truly MI interface (probably a bus_bind_intr(9))
  where the implementation in the x86 nexus(4) driver would end up calling
  intr_bind() internally.

Requested by:	kmacy, gallatin, jeff
Tested on:	{amd64, i386} x {regular, INTR_FILTER}
2008-03-14 19:41:48 +00:00
..
acpica Rework how the nexus(4) device works on x86 to better handle the idea of 2008-03-13 20:39:04 +00:00
bios Hold Giant over the entire execution of the suspend path instead of 2007-12-06 01:39:23 +00:00
compile
conf Remove kernel support for M:N threading. 2008-03-12 10:12:01 +00:00
cpufreq - Don't execute cpuid to fetch the features. We already have the features 2008-03-10 22:00:35 +00:00
i386 Add preliminary support for binding interrupts to CPUs: 2008-03-14 19:41:48 +00:00
ibcs2 Remove kernel support for M:N threading. 2008-03-12 10:12:01 +00:00
include Add preliminary support for binding interrupts to CPUs: 2008-03-14 19:41:48 +00:00
isa Use cpu_spinwait() (i.e., "pause") when spinning on rdtsc during DELAY(). 2008-01-17 18:59:38 +00:00
linux Since version 4.3, gcc changed its behaviour concerning the i386/amd64 2008-03-13 10:54:38 +00:00
pci More properly handle links who only have 1 valid IRQ in their bitmask. The 2007-12-21 16:53:27 +00:00
svr4 Since version 4.3, gcc changed its behaviour concerning the i386/amd64 2008-03-13 10:54:38 +00:00
xbox Replace explicit calls to video methods with their respective variants 2007-12-29 23:26:59 +00:00
Makefile Update entries for building tags. 2007-05-13 18:21:54 +00:00