cvs commit: src/sys/amd64/amd64 intr_machdep.c src/sys/amd64/include
intr_machdep.h src/sys/arm/arm intr.c src/sys/i386/i386
intr_machdep.c src/sys/i386/include intr_machdep.h
src/sys/ia64/ia64 interrupt.c src/sys/kern kern_intr.c ...
John Baldwin
jhb at FreeBSD.org
Fri Mar 14 12:41:48 PDT 2008
jhb 2008-03-14 19:41:48 UTC
FreeBSD src repository
Modified files:
sys/amd64/amd64 intr_machdep.c
sys/amd64/include intr_machdep.h
sys/arm/arm intr.c
sys/i386/i386 intr_machdep.c
sys/i386/include intr_machdep.h
sys/ia64/ia64 interrupt.c
sys/kern kern_intr.c
sys/powerpc/powerpc intr_machdep.c
sys/sparc64/sparc64 intr_machdep.c
sys/sun4v/sun4v intr_machdep.c
sys/sys interrupt.h
Log:
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}
Revision Changes Path
1.37 +52 -9 src/sys/amd64/amd64/intr_machdep.c
1.19 +3 -0 src/sys/amd64/include/intr_machdep.h
1.18 +2 -2 src/sys/arm/arm/intr.c
1.32 +52 -9 src/sys/i386/i386/intr_machdep.c
1.21 +3 -0 src/sys/i386/include/intr_machdep.h
1.63 +1 -1 src/sys/ia64/ia64/interrupt.c
1.155 +92 -4 src/sys/kern/kern_intr.c
1.18 +1 -1 src/sys/powerpc/powerpc/intr_machdep.c
1.29 +2 -2 src/sys/sparc64/sparc64/intr_machdep.c
1.8 +1 -1 src/sys/sun4v/sun4v/intr_machdep.c
1.38 +9 -4 src/sys/sys/interrupt.h
More information about the cvs-src
mailing list