PERFORCE change 102279 for review
Paolo Pisati
piso at FreeBSD.org
Mon Jul 24 13:28:22 UTC 2006
http://perforce.freebsd.org/chv.cgi?CH=102279
Change 102279 by piso at piso_newluxor on 2006/07/24 13:27:43
Mark with XXX_FILTER all the functions that override
bus_generic_setup_intr() and keep a copy of driver_intr_t intr:
if they keep a reference to *intr, maybe they want
a copy of *filter too?!?!?
Mark this code with a well known string, so people with
better knowledge of what's going on, can easily find all
these spots and fix them.
Affected files ...
.. //depot/projects/soc2006/intr_filter/dev/ata/ata-cbus.c#4 edit
.. //depot/projects/soc2006/intr_filter/dev/ata/ata-pci.c#3 edit
.. //depot/projects/soc2006/intr_filter/dev/pccard/pccard.c#3 edit
.. //depot/projects/soc2006/intr_filter/dev/pccbb/pccbb.c#5 edit
.. //depot/projects/soc2006/intr_filter/dev/pccbb/pccbbvar.h#4 edit
.. //depot/projects/soc2006/intr_filter/dev/puc/puc.c#7 edit
.. //depot/projects/soc2006/intr_filter/dev/scc/scc_core.c#8 edit
.. //depot/projects/soc2006/intr_filter/dev/sound/isa/gusc.c#3 edit
.. //depot/projects/soc2006/intr_filter/dev/sound/isa/sbc.c#4 edit
.. //depot/projects/soc2006/intr_filter/dev/sound/pci/csa.c#3 edit
.. //depot/projects/soc2006/intr_filter/sparc64/fhc/fhc.c#3 edit
.. //depot/projects/soc2006/intr_filter/sparc64/pci/psycho.c#6 edit
.. //depot/projects/soc2006/intr_filter/sparc64/sbus/sbus.c#6 edit
Differences ...
==== //depot/projects/soc2006/intr_filter/dev/ata/ata-cbus.c#4 (text+ko) ====
@@ -194,6 +194,9 @@
struct ata_cbus_controller *controller = device_get_softc(dev);
int unit = ((struct ata_channel *)device_get_softc(child))->unit;
+ /*
+ * XXX_FILTER this code doesn't take care of filters.
+ */
controller->interrupt[unit].function = intr;
controller->interrupt[unit].argument = arg;
*cookiep = controller;
==== //depot/projects/soc2006/intr_filter/dev/ata/ata-pci.c#3 (text+ko) ====
@@ -345,7 +345,10 @@
else {
struct ata_pci_controller *controller = device_get_softc(dev);
int unit = ((struct ata_channel *)device_get_softc(child))->unit;
-
+
+ /*
+ * XXX_FILTER this code doesn't take care of filters.
+ */
controller->interrupt[unit].function = function;
controller->interrupt[unit].argument = argument;
*cookiep = controller;
==== //depot/projects/soc2006/intr_filter/dev/pccard/pccard.c#3 (text+ko) ====
@@ -1224,6 +1224,9 @@
pf, cookiep);
if (err != 0)
return (err);
+ /*
+ * XXX_FILTER this code doesn't take care of filters.
+ */
pf->intr_handler = intr;
pf->intr_handler_arg = arg;
pf->intr_handler_cookie = *cookiep;
==== //depot/projects/soc2006/intr_filter/dev/pccbb/pccbb.c#5 (text+ko) ====
@@ -368,6 +368,9 @@
if (ih == NULL)
return (ENOMEM);
*cookiep = ih;
+ /*
+ * XXX_FILTER this code doesn't take care of filters.
+ */
ih->intr = intr;
ih->arg = arg;
ih->sc = sc;
==== //depot/projects/soc2006/intr_filter/dev/pccbb/pccbbvar.h#4 (text+ko) ====
@@ -31,14 +31,7 @@
* Structure definitions for the Cardbus Bridge driver
*/
-/*
- * XXX this structure and all the code that manipulates
- * it don't support interrupt filter model.
- */
struct cbb_intrhand {
-#if 0
- driver_filter_t *filter;
-#endif
driver_intr_t *intr;
void *arg;
struct cbb_softc *sc;
==== //depot/projects/soc2006/intr_filter/dev/puc/puc.c#7 (text+ko) ====
@@ -637,6 +637,9 @@
sc->sc_serdevs |= 1UL << (port->p_nr - 1);
port->p_hasintr = 1;
+ /*
+ * XXX_FILTER this code doesn't take care of filters.
+ */
port->p_ih = (driver_intr_t *)filter;
port->p_iharg = arg;
==== //depot/projects/soc2006/intr_filter/dev/scc/scc_core.c#8 (text) ====
@@ -533,6 +533,9 @@
m = device_get_ivars(child);
m->m_hasintr = 1;
+ /*
+ * XXX_FILTER this code doesn't take care of filters.
+ */
m->m_fastintr = IS_FAST(filter, ihand) ? 1 : 0;
m->ih = ihand;
m->ih_arg = arg;
==== //depot/projects/soc2006/intr_filter/dev/sound/isa/gusc.c#3 (text+ko) ====
@@ -426,10 +426,16 @@
devclass = device_get_devclass(child);
if (strcmp(devclass_get_name(devclass), "midi") == 0) {
+ /*
+ * XXX_FILTER this code doesn't take care of filters.
+ */
scp->midi_intr.intr = intr;
scp->midi_intr.arg = arg;
return 0;
} else if (strcmp(devclass_get_name(devclass), "pcm") == 0) {
+ /*
+ * XXX_FILTER this code doesn't take care of filters.
+ */
scp->pcm_intr.intr = intr;
scp->pcm_intr.arg = arg;
return 0;
==== //depot/projects/soc2006/intr_filter/dev/sound/isa/sbc.c#4 (text+ko) ====
@@ -521,6 +521,9 @@
i = 0;
while ((ret == 0) && (i < INTR_MAX)) {
if (ihl->intr[i] == NULL) {
+ /*
+ * XXX_FILTER this code doesn't take care of filters.
+ */
ihl->intr[i] = intr;
ihl->intr_arg[i] = arg;
*cookiep = &ihl->intr[i];
==== //depot/projects/soc2006/intr_filter/dev/sound/pci/csa.c#3 (text+ko) ====
@@ -460,11 +460,17 @@
switch (func->func) {
case SCF_PCM:
+ /*
+ * XXX_FILTER this code doesn't take care of filters.
+ */
scp->pcmintr = intr;
scp->pcmintr_arg = arg;
break;
case SCF_MIDI:
+ /*
+ * XXX_FILTER this code doesn't take care of filters.
+ */
scp->midiintr = intr;
scp->midiintr_arg = arg;
break;
==== //depot/projects/soc2006/intr_filter/sparc64/fhc/fhc.c#3 (text+ko) ====
@@ -238,6 +238,9 @@
fc = malloc(sizeof(*fc), M_DEVBUF, M_WAITOK | M_ZERO);
if (fc == NULL)
return (0);
+ /*
+ * XXX_FILTER this code doesn't take care of filters.
+ */
fc->fc_func = func;
fc->fc_arg = arg;
fc->fc_bt = bt;
==== //depot/projects/soc2006/intr_filter/sparc64/pci/psycho.c#6 (text+ko) ====
@@ -988,6 +988,9 @@
device_printf(dev, "%s: INO %d, map %#lx, clr %#lx\n", __func__, ino,
(u_long)intrmapptr, (u_long)intrclrptr);
#endif
+ /*
+ * XXX_FILTER this code doesn't take care of filters.
+ */
pc->pci_sc = sc;
pc->pci_arg = arg;
pc->pci_handler = intr;
==== //depot/projects/soc2006/intr_filter/sparc64/sbus/sbus.c#6 (text+ko) ====
@@ -693,6 +693,9 @@
panic("%s: IRQ not found!", __func__);
}
+ /*
+ * XXX_FILTER this code doesn't take care of filters.
+ */
scl->scl_sc = sc;
scl->scl_arg = arg;
scl->scl_handler = intr;
More information about the p4-projects
mailing list