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