svn commit: r218460 - in stable/7/sys: sparc64/include sparc64/pci
sparc64/sbus sparc64/sparc64 sys
Marius Strobl
marius at FreeBSD.org
Tue Feb 8 22:14:19 UTC 2011
Author: marius
Date: Tue Feb 8 22:14:19 2011
New Revision: 218460
URL: http://svn.freebsd.org/changeset/base/218460
Log:
MFC: r216961
Reserve INTR_MD[1-4] similarly to what BUS_DMA_BUS[1-4] are intended for
and switch sparc64 to use the first one for bus error filter handlers of
bridge drivers instead of (ab)using INTR_FAST for that so we eventually
can get rid of the latter.
Reviewed by: jhb
Modified:
stable/7/sys/sparc64/include/intr_machdep.h
stable/7/sys/sparc64/pci/fire.c
stable/7/sys/sparc64/pci/psycho.c
stable/7/sys/sparc64/pci/schizo.c
stable/7/sys/sparc64/sbus/sbus.c
stable/7/sys/sparc64/sparc64/intr_machdep.c
stable/7/sys/sys/bus.h
Directory Properties:
stable/7/sys/ (props changed)
stable/7/sys/cddl/contrib/opensolaris/ (props changed)
stable/7/sys/contrib/dev/acpica/ (props changed)
stable/7/sys/contrib/pf/ (props changed)
Modified: stable/7/sys/sparc64/include/intr_machdep.h
==============================================================================
--- stable/7/sys/sparc64/include/intr_machdep.h Tue Feb 8 22:09:00 2011 (r218459)
+++ stable/7/sys/sparc64/include/intr_machdep.h Tue Feb 8 22:14:19 2011 (r218460)
@@ -47,11 +47,13 @@
#define PIL_STOP 5 /* stop cpu ipi */
#define PIL_PREEMPT 6 /* preempt idle thread cpu ipi */
#define PIL_FILTER 12 /* filter interrupts */
-#define PIL_FAST 13 /* fast interrupts */
+#define PIL_BRIDGE 13 /* bridge interrupts */
#define PIL_TICK 14 /* tick interrupts */
#ifndef LOCORE
+#define INTR_BRIDGE INTR_MD1
+
struct trapframe;
typedef void ih_func_t(struct trapframe *);
Modified: stable/7/sys/sparc64/pci/fire.c
==============================================================================
--- stable/7/sys/sparc64/pci/fire.c Tue Feb 8 22:09:00 2011 (r218459)
+++ stable/7/sys/sparc64/pci/fire.c Tue Feb 8 22:14:19 2011 (r218460)
@@ -835,7 +835,7 @@ fire_set_intr(struct fire_softc *sc, u_i
INTIGN(vec) != sc->sc_ign ||
intr_vectors[vec].iv_ic != &fire_ic ||
bus_setup_intr(sc->sc_dev, sc->sc_irq_res[index],
- INTR_TYPE_MISC | INTR_FAST, handler, NULL, arg,
+ INTR_TYPE_MISC | INTR_BRIDGE, handler, NULL, arg,
&sc->sc_ihand[index]) != 0)
panic("%s: failed to set up interrupt %d", __func__, index);
}
Modified: stable/7/sys/sparc64/pci/psycho.c
==============================================================================
--- stable/7/sys/sparc64/pci/psycho.c Tue Feb 8 22:09:00 2011 (r218459)
+++ stable/7/sys/sparc64/pci/psycho.c Tue Feb 8 22:14:19 2011 (r218460)
@@ -716,7 +716,7 @@ psycho_set_intr(struct psycho_softc *sc,
INTVEC(PSYCHO_READ8(sc, intrmap)) != vec ||
intr_vectors[vec].iv_ic != &psycho_ic ||
bus_setup_intr(sc->sc_dev, sc->sc_irq_res[index],
- INTR_TYPE_MISC | INTR_FAST, filt, intr, sc,
+ INTR_TYPE_MISC | INTR_BRIDGE, filt, intr, sc,
&sc->sc_ihand[index]) != 0)
panic("%s: failed to set up interrupt %d", __func__, index);
}
Modified: stable/7/sys/sparc64/pci/schizo.c
==============================================================================
--- stable/7/sys/sparc64/pci/schizo.c Tue Feb 8 22:09:00 2011 (r218459)
+++ stable/7/sys/sparc64/pci/schizo.c Tue Feb 8 22:14:19 2011 (r218460)
@@ -745,7 +745,7 @@ schizo_set_intr(struct schizo_softc *sc,
INTIGN(vec) != sc->sc_ign ||
intr_vectors[vec].iv_ic != &schizo_ic ||
bus_setup_intr(sc->sc_dev, sc->sc_irq_res[index],
- INTR_TYPE_MISC | INTR_FAST, handler, NULL, sc,
+ INTR_TYPE_MISC | INTR_BRIDGE, handler, NULL, sc,
&sc->sc_ihand[index]) != 0)
panic("%s: failed to set up interrupt %d", __func__, index);
}
Modified: stable/7/sys/sparc64/sbus/sbus.c
==============================================================================
--- stable/7/sys/sparc64/sbus/sbus.c Tue Feb 8 22:09:00 2011 (r218459)
+++ stable/7/sys/sparc64/sbus/sbus.c Tue Feb 8 22:14:19 2011 (r218460)
@@ -457,7 +457,7 @@ sbus_attach(device_t dev)
INTIGN(vec = rman_get_start(sc->sc_ot_ires)) != sc->sc_ign ||
INTVEC(SYSIO_READ8(sc, SBR_THERM_INT_MAP)) != vec ||
intr_vectors[vec].iv_ic != &sbus_ic ||
- bus_setup_intr(dev, sc->sc_ot_ires, INTR_TYPE_MISC | INTR_FAST,
+ bus_setup_intr(dev, sc->sc_ot_ires, INTR_TYPE_MISC | INTR_BRIDGE,
NULL, sbus_overtemp, sc, &sc->sc_ot_ihand) != 0)
panic("%s: failed to set up temperature interrupt", __func__);
i = 3;
@@ -467,7 +467,7 @@ sbus_attach(device_t dev)
INTIGN(vec = rman_get_start(sc->sc_pf_ires)) != sc->sc_ign ||
INTVEC(SYSIO_READ8(sc, SBR_POWER_INT_MAP)) != vec ||
intr_vectors[vec].iv_ic != &sbus_ic ||
- bus_setup_intr(dev, sc->sc_pf_ires, INTR_TYPE_MISC | INTR_FAST,
+ bus_setup_intr(dev, sc->sc_pf_ires, INTR_TYPE_MISC | INTR_BRIDGE,
NULL, sbus_pwrfail, sc, &sc->sc_pf_ihand) != 0)
panic("%s: failed to set up power fail interrupt", __func__);
Modified: stable/7/sys/sparc64/sparc64/intr_machdep.c
==============================================================================
--- stable/7/sys/sparc64/sparc64/intr_machdep.c Tue Feb 8 22:09:00 2011 (r218459)
+++ stable/7/sys/sparc64/sparc64/intr_machdep.c Tue Feb 8 22:14:19 2011 (r218460)
@@ -99,7 +99,7 @@ static const char *const pil_names[] = {
"preempt", /* PIL_PREEMPT */
"stray", "stray", "stray", "stray", "stray",
"filter", /* PIL_FILTER */
- "fast", /* PIL_FAST */
+ "bridge", /* PIL_BRIDGE */
"tick", /* PIL_TICK */
};
@@ -328,10 +328,10 @@ inthand_add(const char *name, int vec, d
if (vec < 0 || vec >= IV_MAX)
return (EINVAL);
/*
- * INTR_FAST filters/handlers are special purpose only, allowing
+ * INTR_BRIDGE filters/handlers are special purpose only, allowing
* them to be shared just would complicate things unnecessarily.
*/
- if ((flags & INTR_FAST) != 0 && (flags & INTR_EXCL) == 0)
+ if ((flags & INTR_BRIDGE) != 0 && (flags & INTR_EXCL) == 0)
return (EINVAL);
sx_xlock(&intr_table_lock);
iv = &intr_vectors[vec];
@@ -349,7 +349,7 @@ inthand_add(const char *name, int vec, d
ic->ic_disable(iv);
iv->iv_refcnt++;
if (iv->iv_refcnt == 1)
- intr_setup((flags & INTR_FAST) != 0 ? PIL_FAST :
+ intr_setup((flags & INTR_BRIDGE) != 0 ? PIL_BRIDGE :
filt != NULL ? PIL_FILTER : PIL_ITHREAD, intr_fast,
vec, intr_execute_handlers, iv);
else if (filt != NULL) {
Modified: stable/7/sys/sys/bus.h
==============================================================================
--- stable/7/sys/sys/bus.h Tue Feb 8 22:09:00 2011 (r218459)
+++ stable/7/sys/sys/bus.h Tue Feb 8 22:14:19 2011 (r218460)
@@ -190,7 +190,11 @@ enum intr_type {
INTR_FAST = 128,
INTR_EXCL = 256, /* exclusive interrupt */
INTR_MPSAFE = 512, /* this interrupt is SMP safe */
- INTR_ENTROPY = 1024 /* this interrupt provides entropy */
+ INTR_ENTROPY = 1024, /* this interrupt provides entropy */
+ INTR_MD1 = 4096, /* flag reserved for MD use */
+ INTR_MD2 = 8192, /* flag reserved for MD use */
+ INTR_MD3 = 16384, /* flag reserved for MD use */
+ INTR_MD4 = 32768 /* flag reserved for MD use */
};
enum intr_trigger {
More information about the svn-src-stable-7
mailing list