From owner-p4-projects@FreeBSD.ORG  Mon Mar  5 17:17:31 2007
Return-Path: <owner-p4-projects@FreeBSD.ORG>
X-Original-To: p4-projects@freebsd.org
Delivered-To: p4-projects@freebsd.org
Received: by hub.freebsd.org (Postfix, from userid 32767)
	id 137D716A403; Mon,  5 Mar 2007 17:17:31 +0000 (UTC)
X-Original-To: perforce@freebsd.org
Delivered-To: perforce@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
	by hub.freebsd.org (Postfix) with ESMTP id DBB1316A400
	for <perforce@freebsd.org>; Mon,  5 Mar 2007 17:17:30 +0000 (UTC)
	(envelope-from piso@freebsd.org)
Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41])
	by mx1.freebsd.org (Postfix) with ESMTP id CBAC813C4A5
	for <perforce@freebsd.org>; Mon,  5 Mar 2007 17:17:30 +0000 (UTC)
	(envelope-from piso@freebsd.org)
Received: from repoman.freebsd.org (localhost [127.0.0.1])
	by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l25HHUOQ097726
	for <perforce@freebsd.org>; Mon, 5 Mar 2007 17:17:30 GMT
	(envelope-from piso@freebsd.org)
Received: (from perforce@localhost)
	by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l25HHUYn097723
	for perforce@freebsd.org; Mon, 5 Mar 2007 17:17:30 GMT
	(envelope-from piso@freebsd.org)
Date: Mon, 5 Mar 2007 17:17:30 GMT
Message-Id: <200703051717.l25HHUYn097723@repoman.freebsd.org>
X-Authentication-Warning: repoman.freebsd.org: perforce set sender to
	piso@freebsd.org using -f
From: Paolo Pisati <piso@FreeBSD.org>
To: Perforce Change Reviews <perforce@freebsd.org>
Cc: 
Subject: PERFORCE change 115344 for review
X-BeenThere: p4-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: p4 projects tree changes <p4-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/p4-projects>,
	<mailto:p4-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/p4-projects>
List-Post: <mailto:p4-projects@freebsd.org>
List-Help: <mailto:p4-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/p4-projects>,
	<mailto:p4-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 05 Mar 2007 17:17:31 -0000

http://perforce.freebsd.org/chv.cgi?CH=115344

Change 115344 by piso@piso_longino on 2007/03/05 17:16:31

	Restore ability to use filter+ithread handler for fhc,
	psycho and sbus.

Affected files ...

.. //depot/projects/soc2006/intr_filter/sparc64/fhc/fhc.c#6 edit
.. //depot/projects/soc2006/intr_filter/sparc64/pci/psycho.c#12 edit
.. //depot/projects/soc2006/intr_filter/sparc64/sbus/sbus.c#10 edit

Differences ...

==== //depot/projects/soc2006/intr_filter/sparc64/fhc/fhc.c#6 (text+ko) ====

@@ -51,7 +51,7 @@
 
 struct fhc_clr {
 	driver_filter_t		*fc_filter;
-	driver_filter_t		*fc_func;
+	driver_intr_t		*fc_func;
 	void			*fc_arg;
 	void			*fc_cookie;
 	bus_space_tag_t		fc_bt;
@@ -64,7 +64,7 @@
 };
 
 static int fhc_filter_stub(void *);
-static int fhc_intr_stub(void *);
+static void fhc_intr_stub(void *);
 static void fhc_led_func(void *, int);
 static int fhc_print_res(struct fhc_devinfo *);
 
@@ -219,7 +219,7 @@
 	long vec;
 	uint32_t inr;
 
-	if (filt != NULL && func != NULL)
+	if (filter != NULL && func != NULL)
 		return (EINVAL);
 
 	sc = device_get_softc(bus);
@@ -244,7 +244,7 @@
 	if (fc == NULL)
 		return (0);
 	fc->fc_filter = filter;
-	fc->fc_func = (filt != NULL) ? filt : (driver_filter_t *)func;
+	fc->fc_func = func;
 	fc->fc_arg = arg;
 	fc->fc_bt = bt;
 	fc->fc_bh = bh;
@@ -298,12 +298,12 @@
 	return (res);
 }
 
+void
 fhc_intr_stub(void *arg)
 {
 	struct fhc_clr *fc = arg;
 
 	fc->fc_func(fc->fc_arg);
-	return (FILTER_HANDLED);
 }
 
 struct resource *

==== //depot/projects/soc2006/intr_filter/sparc64/pci/psycho.c#12 (text+ko) ====

@@ -85,7 +85,7 @@
 static int psycho_find_intrmap(struct psycho_softc *, int, bus_addr_t *,
     bus_addr_t *, u_long *);
 static int psycho_filter_stub(void *);
-static int psycho_intr_stub(void *);
+static void psycho_intr_stub(void *);
 static bus_space_tag_t psycho_alloc_bus_tag(struct psycho_softc *, int);
 
 /* Interrupt handlers */
@@ -93,11 +93,7 @@
 static int psycho_ce(void *);
 static int psycho_pci_bus(void *);
 static 
-#ifdef DEBUGGER_ON_POWERFAIL
 int
-#else
-void
-#endif
 psycho_powerfail(void *);
 static int psycho_overtemp(void *);
 #ifdef PSYCHO_MAP_WAKEUP
@@ -178,7 +174,7 @@
 	struct psycho_softc	*pci_sc;
 	bus_addr_t		pci_clr;	/* clear register */
 	driver_filter_t		*pci_filter;
-	driver_filter_t		*pci_handler;	/* handler to call */
+	driver_intr_t		*pci_handler;	/* handler to call */
 	void			*pci_arg;	/* argument for the handler */
 	void			*pci_cookie;	/* parent bus int. cookie */
 	device_t		pci_ppb;	/* farest PCI-PCI bridge */
@@ -709,8 +705,8 @@
 		    &sc->sc_ihand[index]);
 	else
 		res = bus_setup_intr(sc->sc_dev, sc->sc_irq_res[index], 
-		    INTR_TYPE_MISC | iflags, NULL, handler, sc, 
-		    &sc->sc_ihand[index]);
+		    INTR_TYPE_MISC | iflags, NULL, (driver_intr_t *)handler, 
+		    sc, &sc->sc_ihand[index]);
 	if (res != 0)
 		panic("%s: failed to get interrupt", __func__);
 	PSYCHO_WRITE8(sc, map, INTMAP_ENABLE(mr, PCPU_GET(mid)));
@@ -822,11 +818,7 @@
 }
 
 static 
-#ifdef DEBUGGER_ON_POWERFAIL
 int
-#else
-void
-#endif
 psycho_powerfail(void *arg)
 {
 
@@ -835,12 +827,12 @@
 
 	kdb_enter("powerfail");
 	PSYCHO_WRITE8(sc, PSR_POWER_INT_CLR, 0);
-	return(FILTER_HANDLED);
+	return (FILTER_HANDLED);
 #else
 	printf("Power Failure Detected: Shutting down NOW.\n");
 	shutdown_nice(0);
+	return (FILTER_HANDLED);
 #endif
-	return (FILTER_HANDLED);
 }
 
 static int
@@ -1035,7 +1027,7 @@
 }
 
 /* Write to the correct clr register, and call the actual handler. */
-static int
+static void
 psycho_intr_stub(void *arg)
 {
 	struct psycho_clr *pc = arg;
@@ -1046,7 +1038,6 @@
 		(void)PSYCHO_READ8(pc->pci_sc, PSR_DMA_WRITE_SYNC);
 	}
 	pc->pci_handler(pc->pci_arg);
-	return (FILTER_HANDLED);
 }
 
 static int
@@ -1067,7 +1058,7 @@
 	uint64_t mr;
 	int error, ino;
 
-	if (filt != NULL && intr != NULL)
+	if (filter != NULL && intr != NULL)
 		return (EINVAL);
 
 	sc = device_get_softc(dev);
@@ -1100,7 +1091,7 @@
 	pc->pci_sc = sc;
 	pc->pci_arg = arg;
 	pc->pci_filter = filter;
-	pc->pci_handler = (filt != NULL) ? filt : (driver_filter_t *)intr;
+	pc->pci_handler = intr;
 	pc->pci_clr = intrclrptr;
 
 	/*

==== //depot/projects/soc2006/intr_filter/sparc64/sbus/sbus.c#10 (text+ko) ====

@@ -182,7 +182,7 @@
 	struct sbus_softc	*scl_sc;
 	bus_addr_t		scl_clr;	/* clear register */
 	driver_filter_t		*scl_filter;
-	driver_filter_t		*scl_handler;	/* handler to call */
+	driver_intr_t		*scl_handler;	/* handler to call */
 	void			*scl_arg;	/* argument for the handler */
 	void			*scl_cookie;	/* parent bus int. cookie */
 };
@@ -211,7 +211,7 @@
     phandle_t);
 static void sbus_destroy_dinfo(struct sbus_devinfo *);
 static int sbus_filter_stub(void *);
-static int sbus_intr_stub(void *);
+static void sbus_intr_stub(void *);
 static bus_space_tag_t sbus_alloc_bustag(struct sbus_softc *);
 static int sbus_overtemp(void *);
 static int sbus_pwrfail(void *);
@@ -654,14 +654,13 @@
 }
 
 /* Write to the correct clr register, and call the actual handler. */
-static int
+static void
 sbus_intr_stub(void *arg)
 {
 	struct sbus_clr *scl;
 
 	scl = (struct sbus_clr *)arg;
 	scl->scl_handler(scl->scl_arg);
-	return (FILTER_HANDLED);
 }
 
 static int
@@ -716,8 +715,8 @@
 
 	scl->scl_sc = sc;
 	scl->scl_arg = arg;
-	scl->scl_filter = filter;
-	scl->scl_handler = (filt != NULL) ? filt : (driver_filter_t *)intr;
+	scl->scl_filter = filt;
+	scl->scl_handler = intr;
 	scl->scl_clr = intrclrptr;
 	/* Disable the interrupt while we fiddle with it */
 	SYSIO_WRITE8(sc, intrmapptr, intrmap & ~INTMAP_V);