Use same interrupt vector handler for fast/slow interrupt handlers
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Fri, 10 Jul 2009 07:29:24 +0000 (15:29 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Sat, 11 Jul 2009 02:27:17 +0000 (10:27 +0800)
commit729e15a864dd5b8d269fbb921c7254de51d9676c
tree0655cdc63685e3ba734cc37f6c6ce40204e8ec09
parenta0f63ddc0da202edb4f9107d22aa5a54ec8d20cd
Use same interrupt vector handler for fast/slow interrupt handlers

Slow interrupt vector handler is removed.  Fast interrupt vector handler,
ithread_fast_handler(), now schedules slow interrupt handlers if necessary:
o  No fast interrupt handlers are registered
o  Mixed fast and slow interrpt handlers are registered
o  Non-MPSAFE fast interrupt handlers could not get BGL

i386/amd64: gd_ipending field in mdglobaldata is revoked, which is only
used by slow interrupt vector handler.

ithread_fast_handler()'s invoking convetion is changed:
- ithead_fast_handler() must be called with critical section being held
- Callers of ithead_fast_handler() no longer bump gd_intr_nesting_level

Discussed-with: dillon@
Reviewed-by: dillon@
23 files changed:
sys/kern/kern_intr.c
sys/platform/pc32/apic/apic_abi.c
sys/platform/pc32/apic/apic_ipl.h
sys/platform/pc32/apic/apic_vector.s
sys/platform/pc32/i386/genassym.c
sys/platform/pc32/i386/globals.s
sys/platform/pc32/i386/mp_machdep.c
sys/platform/pc32/icu/icu_abi.c
sys/platform/pc32/icu/icu_vector.s
sys/platform/pc32/include/globaldata.h
sys/platform/pc32/isa/ipl.s
sys/platform/pc32/isa/ipl_funcs.c
sys/platform/pc64/amd64/genassym.c
sys/platform/pc64/amd64/global.s
sys/platform/pc64/amd64/ipl.s
sys/platform/pc64/amd64/ipl_funcs.c
sys/platform/pc64/amd64/mp_machdep.c
sys/platform/pc64/apic/apic_abi.c
sys/platform/pc64/apic/apic_ipl.h
sys/platform/pc64/apic/apic_vector.s
sys/platform/pc64/icu/icu_abi.c
sys/platform/pc64/icu/icu_vector.s
sys/platform/pc64/include/globaldata.h