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