git: intr: Per-cpu MI interrupt information array

Sepherosa Ziehau sephe at crater.dragonflybsd.org
Wed Dec 14 22:51:22 PST 2011


commit c83c147ec7809044a209b1ea4b3cc251ab6474df
Author: Sepherosa Ziehau <sephe at dragonflybsd.org>
Date:   Thu Dec 15 13:47:26 2011 +0800

    intr: Per-cpu MI interrupt information array
    
    - Interrupt information is only recorded in its target CPU's interrupt
      information array.
    - Interrupt threads, emergency polling threads, interrupt livelock
      processing and hardware interrupt threads scheduling only access
      the interrupt information of the CPU they are running on; they have
      already been locked to the interrupt's target CPU.
    - Location of SWI information is saved in a global array swi_info_ary,
      since scheduling SWI does not necessarily happens on the CPU that
      SWI thread is running, we need a quick and correct way find the SWI
      information.
    - Factor out sched_ithd_intern, which accept interrupt information
      (struct intr_info) instead of interrupt number.  Split the original
      sched_ithd() into sched_ithd_soft(), which schedules SWI thread, and
      sched_ithd_hard() which schedules hardware interrupt thread.
    - vmstat(8) interrupt reporting w/ -v is augmented to print the interrupts'
      target CPU.
    
    This paves way to the per-cpu MD interrupt description table

Summary of changes:
 sys/kern/kern_intr.c                       |  223 ++++++++++++++++++----------
 sys/platform/pc32/acpica5/acpi_fadt.c      |    4 +-
 sys/platform/pc32/i386/ipl.s               |    4 +-
 sys/platform/pc32/isa/clock.c              |    4 +-
 sys/platform/pc64/acpica5/acpi_fadt.c      |    4 +-
 sys/platform/pc64/isa/clock.c              |    4 +-
 sys/platform/pc64/x86_64/ipl.s             |    4 +-
 sys/platform/vkernel/platform/machintr.c   |    8 +-
 sys/platform/vkernel64/platform/machintr.c |    8 +-
 sys/sys/interrupt.h                        |    5 +-
 usr.bin/vmstat/vmstat.c                    |    9 +-
 11 files changed, 170 insertions(+), 107 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/c83c147ec7809044a209b1ea4b3cc251ab6474df


-- 
DragonFly BSD source repository





More information about the Commits mailing list