Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 24 Oct 2003 11:09:49 -0700 (PDT)
From:      Sam Leffler <sam@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 40411 for review
Message-ID:  <200310241809.h9OI9nAG007913@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=40411

Change 40411 by sam@sam_ebb on 2003/10/24 11:09:38

	IFC @ 40409

Affected files ...

.. //depot/projects/hostcache/sys/conf/NOTES#2 integrate
.. //depot/projects/hostcache/sys/conf/files#3 integrate
.. //depot/projects/hostcache/sys/conf/files.ia64#2 integrate
.. //depot/projects/hostcache/sys/conf/options#2 integrate
.. //depot/projects/hostcache/sys/dev/dcons/dcons.c#1 branch
.. //depot/projects/hostcache/sys/dev/dcons/dcons.h#1 branch
.. //depot/projects/hostcache/sys/dev/dcons/dcons_crom.c#1 branch
.. //depot/projects/hostcache/sys/dev/firewire/firewire.c#2 integrate
.. //depot/projects/hostcache/sys/dev/firewire/fwdev.c#2 integrate
.. //depot/projects/hostcache/sys/dev/hatm/if_hatm.c#2 integrate
.. //depot/projects/hostcache/sys/dev/pccbb/pccbb.c#2 integrate
.. //depot/projects/hostcache/sys/ia64/ia64/db_disasm.c#2 delete
.. //depot/projects/hostcache/sys/ia64/ia64/db_interface.c#2 integrate
.. //depot/projects/hostcache/sys/ia64/ia64/machdep.c#2 integrate
.. //depot/projects/hostcache/sys/ia64/include/inst.h#2 delete
.. //depot/projects/hostcache/sys/modules/Makefile#2 integrate
.. //depot/projects/hostcache/sys/modules/dcons/Makefile#1 branch
.. //depot/projects/hostcache/sys/modules/dcons_crom/Makefile#1 branch
.. //depot/projects/hostcache/sys/modules/netgraph/atm/Makefile#2 integrate
.. //depot/projects/hostcache/sys/modules/netgraph/atm/atmbase/Makefile#1 branch
.. //depot/projects/hostcache/sys/modules/netgraph/atm/sscfu/Makefile#1 branch
.. //depot/projects/hostcache/sys/modules/netgraph/atm/sscop/Makefile#1 branch
.. //depot/projects/hostcache/sys/net/if.c#2 integrate
.. //depot/projects/hostcache/sys/net/if_var.h#2 integrate
.. //depot/projects/hostcache/sys/net/route.c#3 integrate
.. //depot/projects/hostcache/sys/net/route.h#3 integrate
.. //depot/projects/hostcache/sys/netgraph/atm/ng_sscfu.h#1 branch
.. //depot/projects/hostcache/sys/netgraph/atm/ng_sscop.h#1 branch
.. //depot/projects/hostcache/sys/netgraph/atm/ngatmbase.c#1 branch
.. //depot/projects/hostcache/sys/netgraph/atm/ngatmbase.h#1 branch
.. //depot/projects/hostcache/sys/netgraph/atm/sscfu/ng_sscfu.c#1 branch
.. //depot/projects/hostcache/sys/netgraph/atm/sscfu/ng_sscfu_cust.h#1 branch
.. //depot/projects/hostcache/sys/netgraph/atm/sscop/ng_sscop.c#1 branch
.. //depot/projects/hostcache/sys/netgraph/atm/sscop/ng_sscop_cust.h#1 branch
.. //depot/projects/hostcache/sys/netinet/ip_dummynet.c#2 integrate
.. //depot/projects/hostcache/sys/netinet/tcp_subr.c#3 integrate
.. //depot/projects/hostcache/sys/vm/swap_pager.c#2 integrate
.. //depot/projects/hostcache/sys/vm/vm_pageout.c#2 integrate
.. //depot/projects/hostcache/sys/vm/vm_pager.h#2 integrate
.. //depot/projects/hostcache/sys/vm/vnode_pager.c#2 integrate

Differences ...

==== //depot/projects/hostcache/sys/conf/NOTES#2 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1179 2003/10/22 22:27:49 njl Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1180 2003/10/24 15:44:08 simokawa Exp $
 #
 # NOTES -- Lines that can be cut/pasted into kernel and hints configs.
 #
@@ -2241,11 +2241,21 @@
 options		UVSCOM_DEFAULT_OPKTSIZE=8	# default output packet size
 
 #####################################################################
-# Firewire support
+# FireWire support
 
-device		firewire	# Firewire bus code
+device		firewire	# FireWire bus code
 device		sbp		# SCSI over Firewire (Requires scbus and da)
-device		fwe		# Ethernet over Firewire (non-standard!)
+device		fwe		# Ethernet over FireWire (non-standard!)
+
+#####################################################################
+# dcons support (Dumb Console Device)
+
+device		dcons			# dumb console driver
+device		dcons_crom		# FireWire attachment
+options		DCONS_BUF_SIZE=16384	# buffer size
+options		DCONS_POLL_HZ=100	# polling rate
+options		DCONS_FORCE_CONSOLE=0	# force to be the primary console
+options		DCONS_FORCE_GDB=1	# force to be the gdb device
 
 #####################################################################
 # crypto subsystem

==== //depot/projects/hostcache/sys/conf/files#3 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.837 2003/10/22 20:39:33 rwatson Exp $
+# $FreeBSD: src/sys/conf/files,v 1.838 2003/10/24 15:44:08 simokawa Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -351,6 +351,8 @@
 dev/cs/if_cs_isa.c	optional cs isa
 dev/cs/if_cs_pccard.c	optional cs card
 dev/cs/if_cs_pccard.c	optional cs pccard
+dev/dcons/dcons.c	optional dcons
+dev/dcons/dcons_crom.c	optional dcons_crom
 dev/digi/digi.c		optional digi
 dev/digi/digi_isa.c	optional digi isa
 dev/digi/digi_pci.c	optional digi pci

==== //depot/projects/hostcache/sys/conf/files.ia64#2 (text+ko) ====

@@ -1,7 +1,7 @@
 # This file tells config what files go into building a kernel,
 # files marked standard are always included.
 #
-# $FreeBSD: src/sys/conf/files.ia64,v 1.60 2003/10/23 06:11:37 marcel Exp $
+# $FreeBSD: src/sys/conf/files.ia64,v 1.61 2003/10/24 06:48:41 marcel Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -92,7 +92,6 @@
 ia64/ia64/clock_if.m		standard
 ia64/ia64/context.S		standard
 ia64/ia64/critical.c		standard
-ia64/ia64/db_disasm.c		optional	ddb
 ia64/ia64/db_interface.c	optional	ddb
 ia64/ia64/db_trace.c		optional	ddb
 ia64/ia64/dump_machdep.c	standard

==== //depot/projects/hostcache/sys/conf/options#2 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.416 2003/10/22 22:27:49 njl Exp $
+# $FreeBSD: src/sys/conf/options,v 1.417 2003/10/24 15:44:08 simokawa Exp $
 #
 #        On the handling of kernel options
 #
@@ -675,3 +675,9 @@
 AH_DEBUG		opt_ah.h
 AH_DEBUG_ALQ		opt_ah.h
 AH_ASSERT		opt_ah.h
+
+# dcons options 
+DCONS_BUF_SIZE		opt_dcons.h
+DCONS_POLL_HZ		opt_dcons.h
+DCONS_FORCE_CONSOLE	opt_dcons.h
+DCONS_FORCE_GDB		opt_dcons.h

==== //depot/projects/hostcache/sys/dev/firewire/firewire.c#2 (text+ko) ====

@@ -31,7 +31,7 @@
  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  * 
- * $FreeBSD: src/sys/dev/firewire/firewire.c,v 1.62 2003/10/06 07:17:43 simokawa Exp $
+ * $FreeBSD: src/sys/dev/firewire/firewire.c,v 1.63 2003/10/24 07:42:21 simokawa Exp $
  *
  */
 
@@ -338,15 +338,27 @@
 	splx(s);
 }
 
+#define WATCHDOC_HZ 10
 static void
 firewire_watchdog(void *arg)
 {
 	struct firewire_comm *fc;
+	static int watchdoc_clock = 0;
 
 	fc = (struct firewire_comm *)arg;
-	firewire_xfer_timeout(fc);
-	fc->timeout(fc);
-	callout_reset(&fc->timeout_callout, hz / 10,
+
+	/*
+	 * At boot stage, the device interrupt is disabled and
+	 * We encounter a timeout easily. To avoid this,
+	 * ignore clock interrupt for a while.
+	 */
+	if (watchdoc_clock > WATCHDOC_HZ * 15) {
+		firewire_xfer_timeout(fc);
+		fc->timeout(fc);
+	} else
+		watchdoc_clock ++;
+
+	callout_reset(&fc->timeout_callout, hz / WATCHDOC_HZ,
 			(void *)firewire_watchdog, (void *)fc);
 }
 

==== //depot/projects/hostcache/sys/dev/firewire/fwdev.c#2 (text+ko) ====

@@ -31,7 +31,7 @@
  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  * 
- * $FreeBSD: src/sys/dev/firewire/fwdev.c,v 1.33 2003/10/02 04:06:55 simokawa Exp $
+ * $FreeBSD: src/sys/dev/firewire/fwdev.c,v 1.34 2003/10/24 13:55:51 simokawa Exp $
  *
  */
 
@@ -471,13 +471,11 @@
 		it->flag |= (0x3f & ichreq->ch);
 		it->flag |= ((0x3 & ichreq->tag) << 6);
 		d->it = it;
-		err = 0;
 		break;
 	case FW_GTSTREAM:
 		if (it != NULL) {
 			ichreq->ch = it->flag & 0x3f;
 			ichreq->tag = it->flag >> 2 & 0x3;
-			err = 0;
 		} else
 			err = EINVAL;
 		break;
@@ -507,13 +505,11 @@
 		if (d->ir != NULL) {
 			ichreq->ch = ir->flag & 0x3f;
 			ichreq->tag = ir->flag >> 2 & 0x3;
-			err = 0;
 		} else
 			err = EINVAL;
 		break;
 	case FW_SSTBUF:
 		bcopy(ibufreq, &d->bufreq, sizeof(d->bufreq));
-		err = 0;
 		break;
 	case FW_GSTBUF:
 		bzero(&ibufreq->rx, sizeof(ibufreq->rx));
@@ -532,14 +528,18 @@
 	case FW_ASYREQ:
 	{
 		struct tcode_info *tinfo;
+		int pay_len = 0;
 
-		xfer = fw_xfer_alloc_buf(M_FWXFER, asyreq->req.len,
-		    PAGE_SIZE/*XXX*/);
-		if(xfer == NULL){
-			err = ENOMEM;
-			return err;
-		}
 		fp = &asyreq->pkt;
+		tinfo = &sc->fc->tcode[fp->mode.hdr.tcode];
+
+		if ((tinfo->flag & FWTI_BLOCK_ASY) != 0)
+			pay_len = MAX(0, asyreq->req.len - tinfo->hdr_len);
+
+		xfer = fw_xfer_alloc_buf(M_FWXFER, pay_len, PAGE_SIZE/*XXX*/);
+		if (xfer == NULL)
+			return (ENOMEM);
+
 		switch (asyreq->req.type) {
 		case FWASREQNODE:
 			break;
@@ -550,7 +550,7 @@
 				device_printf(sc->fc->bdev,
 					"cannot find node\n");
 				err = EINVAL;
-				goto error;
+				goto out;
 			}
 			fp->mode.hdr.dst = FWLOCALBUS | fwdev->dst;
 			break;
@@ -561,38 +561,35 @@
 			/* nothing to do */
 			break;
 		}
-		xfer->send.spd = asyreq->req.sped;
-		tinfo = &sc->fc->tcode[fp->mode.hdr.tcode];
+
 		bcopy(fp, (void *)&xfer->send.hdr, tinfo->hdr_len);
-		if ((tinfo->flag & FWTI_BLOCK_ASY) != 0)
+		if (pay_len > 0)
 			bcopy((char *)fp + tinfo->hdr_len,
-			    (void *)&xfer->send.payload,
-			    asyreq->req.len - tinfo->hdr_len);
+			    (void *)&xfer->send.payload, pay_len);
+		xfer->send.spd = asyreq->req.sped;
 		xfer->act.hand = fw_asy_callback;
-		err = fw_asyreq(sc->fc, -1, xfer);
-		if(err){
-			fw_xfer_free_buf(xfer);
-			return err;
+
+		if ((err = fw_asyreq(sc->fc, -1, xfer)) != 0)
+			goto out;
+		if ((err = tsleep(xfer, FWPRI, "asyreq", hz)) != 0)
+			goto out;
+		if (xfer->resp != 0) {
+			err = EIO;
+			goto out;
 		}
-		err = tsleep(xfer, FWPRI, "asyreq", hz);
-		if (err == 0) {
-			if (xfer->resp != 0) {
-				err = EIO;
-				goto error;
-			}
-			tinfo = &sc->fc->tcode[xfer->recv.hdr.mode.hdr.tcode];
-			if (asyreq->req.len >= xfer->recv.pay_len +
-			    tinfo->hdr_len) {
-				asyreq->req.len = xfer->recv.pay_len;
-			}else{
-				err = EINVAL;
-			}
-			bcopy(&xfer->recv.hdr, fp, tinfo->hdr_len);
-			bcopy(xfer->recv.payload,
-			    (char *)fp + tinfo->hdr_len,
-			    asyreq->req.len - tinfo->hdr_len);
-		}
-error:
+		if ((tinfo->flag & FWTI_TLABEL) == 0)
+			goto out;
+
+		/* copy response */
+		tinfo = &sc->fc->tcode[xfer->recv.hdr.mode.hdr.tcode];
+		if (asyreq->req.len >= xfer->recv.pay_len + tinfo->hdr_len)
+			asyreq->req.len = xfer->recv.pay_len;
+		else
+			err = EINVAL;
+		bcopy(&xfer->recv.hdr, fp, tinfo->hdr_len);
+		bcopy(xfer->recv.payload, (char *)fp + tinfo->hdr_len,
+		    MAX(0, asyreq->req.len - tinfo->hdr_len));
+out:
 		fw_xfer_free_buf(xfer);
 		break;
 	}

==== //depot/projects/hostcache/sys/dev/hatm/if_hatm.c#2 (text+ko) ====

@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/hatm/if_hatm.c,v 1.10 2003/09/02 17:30:35 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/hatm/if_hatm.c,v 1.11 2003/10/24 16:44:26 harti Exp $");
 
 #include "opt_inet.h"
 #include "opt_natm.h"
@@ -1334,61 +1334,61 @@
 hatm_configure(struct hatm_softc *sc)
 {
 	/* Receive buffer pool 0 small */
-	kenv_getuint(sc, "rbps0.size", &sc->rbp_s0.size,
+	kenv_getuint(sc, "rbps0_size", &sc->rbp_s0.size,
 	    HE_CONFIG_RBPS0_SIZE, 0);
-	kenv_getuint(sc, "rbps0.thresh", &sc->rbp_s0.thresh,
+	kenv_getuint(sc, "rbps0_thresh", &sc->rbp_s0.thresh,
 	    HE_CONFIG_RBPS0_THRESH, 0);
 	sc->rbp_s0.bsize = MBUF0_SIZE;
 
 	/* Receive buffer pool 0 large */
-	kenv_getuint(sc, "rbpl0.size", &sc->rbp_l0.size,
+	kenv_getuint(sc, "rbpl0_size", &sc->rbp_l0.size,
 	    HE_CONFIG_RBPL0_SIZE, 0);
-	kenv_getuint(sc, "rbpl0.thresh", &sc->rbp_l0.thresh,
+	kenv_getuint(sc, "rbpl0_thresh", &sc->rbp_l0.thresh,
 	    HE_CONFIG_RBPL0_THRESH, 0);
 	sc->rbp_l0.bsize = MCLBYTES - MBUFL_OFFSET;
 
 	/* Receive buffer return queue 0 */
-	kenv_getuint(sc, "rbrq0.size", &sc->rbrq_0.size,
+	kenv_getuint(sc, "rbrq0_size", &sc->rbrq_0.size,
 	    HE_CONFIG_RBRQ0_SIZE, 0);
-	kenv_getuint(sc, "rbrq0.thresh", &sc->rbrq_0.thresh,
+	kenv_getuint(sc, "rbrq0_thresh", &sc->rbrq_0.thresh,
 	    HE_CONFIG_RBRQ0_THRESH, 0);
-	kenv_getuint(sc, "rbrq0.tout", &sc->rbrq_0.tout,
+	kenv_getuint(sc, "rbrq0_tout", &sc->rbrq_0.tout,
 	    HE_CONFIG_RBRQ0_TOUT, 0);
-	kenv_getuint(sc, "rbrq0.pcnt", &sc->rbrq_0.pcnt,
+	kenv_getuint(sc, "rbrq0_pcnt", &sc->rbrq_0.pcnt,
 	    HE_CONFIG_RBRQ0_PCNT, 0);
 
 	/* Receive buffer pool 1 small */
-	kenv_getuint(sc, "rbps1.size", &sc->rbp_s1.size,
+	kenv_getuint(sc, "rbps1_size", &sc->rbp_s1.size,
 	    HE_CONFIG_RBPS1_SIZE, 0);
-	kenv_getuint(sc, "rbps1.thresh", &sc->rbp_s1.thresh,
+	kenv_getuint(sc, "rbps1_thresh", &sc->rbp_s1.thresh,
 	    HE_CONFIG_RBPS1_THRESH, 0);
 	sc->rbp_s1.bsize = MBUF1_SIZE;
 
 	/* Receive buffer return queue 1 */
-	kenv_getuint(sc, "rbrq1.size", &sc->rbrq_1.size,
+	kenv_getuint(sc, "rbrq1_size", &sc->rbrq_1.size,
 	    HE_CONFIG_RBRQ1_SIZE, 0);
-	kenv_getuint(sc, "rbrq1.thresh", &sc->rbrq_1.thresh,
+	kenv_getuint(sc, "rbrq1_thresh", &sc->rbrq_1.thresh,
 	    HE_CONFIG_RBRQ1_THRESH, 0);
-	kenv_getuint(sc, "rbrq1.tout", &sc->rbrq_1.tout,
+	kenv_getuint(sc, "rbrq1_tout", &sc->rbrq_1.tout,
 	    HE_CONFIG_RBRQ1_TOUT, 0);
-	kenv_getuint(sc, "rbrq1.pcnt", &sc->rbrq_1.pcnt,
+	kenv_getuint(sc, "rbrq1_pcnt", &sc->rbrq_1.pcnt,
 	    HE_CONFIG_RBRQ1_PCNT, 0);
 
 	/* Interrupt queue 0 */
-	kenv_getuint(sc, "irq0.size", &sc->irq_0.size,
+	kenv_getuint(sc, "irq0_size", &sc->irq_0.size,
 	    HE_CONFIG_IRQ0_SIZE, 0);
-	kenv_getuint(sc, "irq0.thresh", &sc->irq_0.thresh,
+	kenv_getuint(sc, "irq0_thresh", &sc->irq_0.thresh,
 	    HE_CONFIG_IRQ0_THRESH, 0);
 	sc->irq_0.line = HE_CONFIG_IRQ0_LINE;
 
 	/* Transmit buffer return queue 0 */
-	kenv_getuint(sc, "tbrq0.size", &sc->tbrq.size,
+	kenv_getuint(sc, "tbrq0_size", &sc->tbrq.size,
 	    HE_CONFIG_TBRQ_SIZE, 0);
-	kenv_getuint(sc, "tbrq0.thresh", &sc->tbrq.thresh,
+	kenv_getuint(sc, "tbrq0_thresh", &sc->tbrq.thresh,
 	    HE_CONFIG_TBRQ_THRESH, 0);
 
 	/* Transmit buffer ready queue */
-	kenv_getuint(sc, "tpdrq.size", &sc->tpdrq.size,
+	kenv_getuint(sc, "tpdrq_size", &sc->tpdrq.size,
 	    HE_CONFIG_TPDRQ_SIZE, 0);
 	/* Max TPDs per VCC */
 	kenv_getuint(sc, "tpdmax", &sc->max_tpd,

==== //depot/projects/hostcache/sys/dev/pccbb/pccbb.c#2 (text+ko) ====

@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/pccbb/pccbb.c,v 1.95 2003/08/22 08:49:56 imp Exp $
+ * $FreeBSD: src/sys/dev/pccbb/pccbb.c,v 1.96 2003/10/24 07:20:13 imp Exp $
  */
 
 /*
@@ -1162,10 +1162,10 @@
  	 */
 	if (sc->flags & CBB_CARD_OK) {
 		STAILQ_FOREACH(ih, &sc->intr_handlers, entries) {
-			if ((ih->flags & INTR_MPSAFE) != 0)
+			if ((ih->flags & INTR_MPSAFE) == 0)
 				mtx_lock(&Giant);
 			(*ih->intr)(ih->arg);
-			if ((ih->flags & INTR_MPSAFE) != 0)
+			if ((ih->flags & INTR_MPSAFE) == 0)
 				mtx_unlock(&Giant);
 		}
 	}

==== //depot/projects/hostcache/sys/ia64/ia64/db_interface.c#2 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/ia64/ia64/db_interface.c,v 1.23 2003/05/16 21:26:40 marcel Exp $ */
+/* $FreeBSD: src/sys/ia64/ia64/db_interface.c,v 1.24 2003/10/24 06:42:03 marcel Exp $ */
 
 /* 
  * Mach Operating System
@@ -50,16 +50,16 @@
 
 #include <vm/vm.h>
 
-#include <machine/inst.h>
 #include <machine/db_machdep.h>
 #include <machine/mutex.h>
+#include <machine/setjmp.h>
 
 #include <ddb/ddb.h>
-
 #include <ddb/db_access.h>
 #include <ddb/db_sym.h>
 #include <ddb/db_variables.h>
-#include <machine/setjmp.h>
+
+#include <ia64/disasm/disasm.h>
 
 static jmp_buf *db_nofault = 0;
 extern jmp_buf	db_jmpbuf;
@@ -398,10 +398,7 @@
  * Read bytes from kernel address space for debugger.
  */
 void
-db_read_bytes(addr, size, data)
-	vm_offset_t	addr;
-	register size_t	size;
-	register char	*data;
+db_read_bytes(vm_offset_t addr, size_t size, char *data)
 {
 
 	db_nofault = &db_jmpbuf;
@@ -418,10 +415,7 @@
  * Write bytes to kernel address space for debugger.
  */
 void
-db_write_bytes(addr, size, data)
-	vm_offset_t	addr;
-	register size_t	size;
-	register char	*data;
+db_write_bytes(vm_offset_t addr, size_t size, char *data)
 {
 
 	db_nofault = &db_jmpbuf;
@@ -442,9 +436,7 @@
 }
 
 u_long
-db_register_value(regs, regno)
-	db_regs_t *regs;
-	int regno;
+db_register_value(db_regs_t *regs, int regno)
 {
 	uint64_t *rsp;
 	uint64_t bsp;
@@ -479,68 +471,95 @@
 }
 
 void
-db_read_bundle(db_addr_t addr, struct ia64_bundle *bp)
+db_write_breakpoint(vm_offset_t addr, u_int64_t *storage)
 {
-	u_int64_t low, high;
-
-	db_read_bytes(addr, 8, (caddr_t) &low);
-	db_read_bytes(addr+8, 8, (caddr_t) &high);
-
-	ia64_unpack_bundle(low, high, bp);
 }
 
 void
-db_write_bundle(db_addr_t addr, struct ia64_bundle *bp)
+db_clear_breakpoint(vm_offset_t addr, u_int64_t *storage)
 {
-	u_int64_t low, high;
-
-	ia64_pack_bundle(&low, &high, bp);
-
-	db_write_bytes(addr, 8, (caddr_t) &low);
-	db_write_bytes(addr+8, 8, (caddr_t) &high);
-
-	ia64_fc(addr);
-	ia64_sync_i();
 }
 
 void
-db_write_breakpoint(vm_offset_t addr, u_int64_t *storage)
+db_skip_breakpoint()
 {
-	struct ia64_bundle b;
-	int slot;
 
-	slot = addr & 15;
-	addr &= ~15;
-	db_read_bundle(addr, &b);
-	*storage = b.slot[slot];
-	b.slot[slot] = 0x80100 << 6; /* break.* 0x80100 */
-	db_write_bundle(addr, &b);
+	ddb_regs.tf_special.psr += IA64_PSR_RI_1;
+	if ((ddb_regs.tf_special.psr & IA64_PSR_RI) > IA64_PSR_RI_2) {
+		ddb_regs.tf_special.psr &= ~IA64_PSR_RI;
+		ddb_regs.tf_special.iip += 16;
+	}
 }
 
-void
-db_clear_breakpoint(vm_offset_t addr, u_int64_t *storage)
+db_addr_t
+db_disasm(db_addr_t loc, boolean_t altfmt)
 {
-	struct ia64_bundle b;
-	int slot;
+	char buf[32];
+	struct asm_bundle bundle;
+	const struct asm_inst *i;
+	const char *tmpl;
+	int n, slot;
+
+	slot = loc & 0xf;
+	loc &= ~0xful;
+	db_read_bytes(loc, 16, buf);
+	if (asm_decode((uintptr_t)buf, &bundle)) {
+		i = bundle.b_inst + slot;
+		tmpl = bundle.b_templ + slot;
+		if (*tmpl == ';' || (slot == 2 && bundle.b_templ[1] == ';'))
+			tmpl++;
+		if (*tmpl == 'L' || i->i_op == ASM_OP_NONE) {
+			db_printf("\n");
+			goto out;
+		}
+
+		/* Unit + slot. */
+		db_printf("[%c%d] ", *tmpl, slot);
+
+		/* Predicate. */
+		if (i->i_oper[0].o_value != 0) {
+			asm_operand(i->i_oper+0, buf, loc);
+			db_printf("(%s) ", buf);
+		} else
+			db_printf("   ");
 
-	slot = addr & 15;
-	addr &= ~15;
-	db_read_bundle(addr, &b);
-	b.slot[slot] = *storage;
-	db_write_bundle(addr, &b);
-}
+		/* Mnemonic & completers. */
+		asm_mnemonic(i->i_op, buf);
+		db_printf(buf);
+		n = 0;
+		while (n < i->i_ncmpltrs) {
+			asm_completer(i->i_cmpltr + n, buf);
+			db_printf(buf);
+			n++;
+		}
+		db_printf(" ");
 
-void
-db_skip_breakpoint(void)
-{
-	/*
-	 * Skip past the break instruction.
-	 */
-	ddb_regs.tf_special.psr += IA64_PSR_RI_1;
-	if ((ddb_regs.tf_special.psr & IA64_PSR_RI) > IA64_PSR_RI_2) {
-		ddb_regs.tf_special.psr &= ~IA64_PSR_RI;
-		ddb_regs.tf_special.iip += 16;
+		/* Operands. */
+		n = 1;
+		while (n < 7 && i->i_oper[n].o_type != ASM_OPER_NONE) {
+			if (n > 1) {
+				if (n == i->i_srcidx)
+					db_printf("=");
+				else
+					db_printf(",");
+			}
+			asm_operand(i->i_oper + n, buf, loc);
+			db_printf(buf);
+			n++;
+		}
+	} else {
+		tmpl = NULL;
+		slot = 2;
 	}
+	db_printf("\n");
+
+out:
+	slot++;
+	if (slot == 1 && tmpl[1] == 'L')
+		slot++;
+	if (slot > 2)
+		slot = 16;
+	return (loc + slot);
 }
 
 void

==== //depot/projects/hostcache/sys/ia64/ia64/machdep.c#2 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/ia64/ia64/machdep.c,v 1.160 2003/10/21 01:13:49 marcel Exp $
+ * $FreeBSD: src/sys/ia64/ia64/machdep.c,v 1.162 2003/10/24 06:52:21 marcel Exp $
  */
 
 #include "opt_compat.h"
@@ -85,7 +85,6 @@
 #include <sys/ucontext.h>
 #include <machine/sigframe.h>
 #include <machine/efi.h>
-#include <machine/inst.h>
 #include <machine/unwind.h>
 #include <i386/include/specialreg.h>
 
@@ -418,8 +417,7 @@
 	__asm __volatile("rsm	psr.ic|psr.i");
 	__asm __volatile("srlz.d");
 	__asm __volatile("mov	cr.ifa=%0" :: "r"(ia64_port_base));
-	/* XXX We should use the size from the memory descriptor. */
-	__asm __volatile("mov	cr.itir=%0" :: "r"(24 << 2));
+	__asm __volatile("mov	cr.itir=%0" :: "r"(IA64_ID_PAGE_SHIFT << 2));
 	__asm __volatile("itr.d dtr[%0]=%1" :: "r"(2), "r"(*(u_int64_t*)&pte));
 	__asm __volatile("mov	psr.l=%0" :: "r" (psr));
 	__asm __volatile("srlz.d");
@@ -1439,30 +1437,6 @@
 }
 #endif /* no DDB */
 
-/*
- * Utility functions for manipulating instruction bundles.
- */
-void
-ia64_unpack_bundle(u_int64_t low, u_int64_t high, struct ia64_bundle *bp)
-{
-	bp->template = low & 0x1f;
-	bp->slot[0] = (low >> 5) & ((1L<<41) - 1);
-	bp->slot[1] = (low >> 46) | ((high & ((1L<<23) - 1)) << 18);
-	bp->slot[2] = (high >> 23);
-}
-
-void
-ia64_pack_bundle(u_int64_t *lowp, u_int64_t *highp,
-		 const struct ia64_bundle *bp)
-{
-	u_int64_t low, high;
-
-	low = bp->template | (bp->slot[0] << 5) | (bp->slot[1] << 46);
-	high = (bp->slot[1] >> 18) | (bp->slot[2] << 23);
-	*lowp = low;
-	*highp = high;
-}
-
 int
 sysbeep(int pitch, int period)
 {

==== //depot/projects/hostcache/sys/modules/Makefile#2 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/modules/Makefile,v 1.351 2003/09/26 20:26:24 fjoe Exp $
+# $FreeBSD: src/sys/modules/Makefile,v 1.352 2003/10/24 15:44:09 simokawa Exp $
 
 .if !defined(NOCRYPT) || defined(ALL_MODULES)
 .if exists(${.CURDIR}/../opencrypto)
@@ -32,6 +32,8 @@
 	${_cryptodev} \
 	cue \
 	dc \
+	dcons \
+	dcons_crom \
 	de \
 	digi \
 	dummynet \

==== //depot/projects/hostcache/sys/modules/netgraph/atm/Makefile#2 (text+ko) ====

@@ -1,8 +1,11 @@
-# $FreeBSD: src/sys/modules/netgraph/atm/Makefile,v 1.2 2003/08/11 08:40:01 harti Exp $
+# $FreeBSD: src/sys/modules/netgraph/atm/Makefile,v 1.3 2003/10/24 07:42:08 harti Exp $
 
 SUBDIR=			\
 	atm 		\
-	atmpif
+	atmbase		\
+	atmpif		\
+	sscfu		\
+	sscop
 
 .include <bsd.subdir.mk>
 

==== //depot/projects/hostcache/sys/net/if.c#2 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)if.c	8.5 (Berkeley) 1/9/95
- * $FreeBSD: src/sys/net/if.c,v 1.170 2003/10/23 13:49:10 des Exp $
+ * $FreeBSD: src/sys/net/if.c,v 1.171 2003/10/24 16:57:59 ume Exp $
  */
 
 #include "opt_compat.h"
@@ -369,6 +369,8 @@
 	struct sockaddr_dl *sdl;
 	struct ifaddr *ifa;
 
+	IF_AFDATA_LOCK_INIT(ifp);
+	ifp->if_afdata_initialized = 0;
 	IFNET_WLOCK();
 	TAILQ_INSERT_TAIL(&ifnet, ifp, if_link);
 	IFNET_WUNLOCK();
@@ -456,10 +458,8 @@
 	int s;
 
 	s = splnet();
-	IFNET_RLOCK();
 	for (ifp = TAILQ_FIRST(&ifnet); ifp; ifp = TAILQ_NEXT(ifp, if_list))
 		if_attachdomain1(ifp);
-	IFNET_RUNLOCK();
 	splx(s);
 }
 SYSINIT(domainifattach, SI_SUB_PROTO_IFATTACHDOMAIN, SI_ORDER_FIRST,
@@ -473,6 +473,22 @@
 
 	s = splnet();
 
+	/*
+	 * Since dp->dom_ifattach calls malloc() with M_WAITOK, we
+	 * cannot lock ifp->if_afdata initialization, entirely.
+	 */
+	if (IF_AFDATA_TRYLOCK(ifp) == 0) {
+		splx(s);
+		return;
+	}
+	if (ifp->if_afdata_initialized) {
+		IF_AFDATA_UNLOCK(ifp);
+		splx(s);
+		return;
+	}
+	ifp->if_afdata_initialized = 1;
+	IF_AFDATA_UNLOCK(ifp);
+
 	/* address family dependent data region */
 	bzero(ifp->if_afdata, sizeof(ifp->if_afdata));
 	for (dp = domains; dp; dp = dp->dom_next) {
@@ -576,11 +592,13 @@
 	/* Announce that the interface is gone. */
 	rt_ifannouncemsg(ifp, IFAN_DEPARTURE);
 
+	IF_AFDATA_LOCK(ifp);
 	for (dp = domains; dp; dp = dp->dom_next) {
 		if (dp->dom_ifdetach && ifp->if_afdata[dp->dom_family])
 			(*dp->dom_ifdetach)(ifp,
 			    ifp->if_afdata[dp->dom_family]);
 	}
+	IF_AFDATA_UNLOCK(ifp);
 
 #ifdef MAC
 	mac_destroy_ifnet(ifp);
@@ -590,6 +608,7 @@
 	TAILQ_REMOVE(&ifnet, ifp, if_link);
 	IFNET_WUNLOCK();
 	mtx_destroy(&ifp->if_snd.ifq_mtx);
+	IF_AFDATA_DESTROY(ifp);
 	splx(s);
 }
 

==== //depot/projects/hostcache/sys/net/if_var.h#2 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	From: @(#)if.h	8.1 (Berkeley) 6/10/93
- * $FreeBSD: src/sys/net/if_var.h,v 1.59 2003/10/17 15:46:30 ume Exp $
+ * $FreeBSD: src/sys/net/if_var.h,v 1.60 2003/10/24 16:57:59 ume Exp $
  */
 
 #ifndef	_NET_IF_VAR_H_
@@ -180,6 +180,8 @@
 	struct	label if_label;		/* interface MAC label */
 
 	void	*if_afdata[AF_MAX];
+	int	if_afdata_initialized;
+	struct	mtx if_afdata_mtx;
 };
 
 typedef void if_init_f_t(void *);
@@ -289,6 +291,13 @@
 } while (0)
 
 #ifdef _KERNEL
+#define	IF_AFDATA_LOCK_INIT(ifp)	\
+    mtx_init(&(ifp)->if_afdata_mtx, "if_afdata", NULL, MTX_DEF)
+#define	IF_AFDATA_LOCK(ifp)	mtx_lock(&(ifp)->if_afdata_mtx)
+#define	IF_AFDATA_TRYLOCK(ifp)	mtx_trylock(&(ifp)->if_afdata_mtx)
+#define	IF_AFDATA_UNLOCK(ifp)	mtx_unlock(&(ifp)->if_afdata_mtx)
+#define	IF_AFDATA_DESTROY(ifp)	mtx_destroy(&(ifp)->if_afdata_mtx)
+
 #define	IF_HANDOFF(ifq, m, ifp)			if_handoff(ifq, m, ifp, 0)
 #define	IF_HANDOFF_ADJ(ifq, m, ifp, adj)	if_handoff(ifq, m, ifp, adj)
 

==== //depot/projects/hostcache/sys/net/route.c#3 (text+ko) ====

@@ -1218,5 +1218,46 @@
 #undef senderr
 }
 
+static void
+rt_print_sockaddr(const char *leader, const char *tag, const struct sockaddr *sa)
+{
+	printf("%s%s: len %u af %u addr %7D\n", leader, tag,
+		sa->sa_len, sa->sa_family,
+		(const unsigned char *) sa->sa_data, ":");
+}
+
+static void
+rt_print1(const char *leader, const char *tag, const struct rtentry *rt)
+{
+	printf("%s%s @%p: refcnt %ld flags 0x%lx\n", leader, tag,
+		rt, rt->rt_refcnt, rt->rt_flags);
+	printf("%sllinfo %p nodes %p %p\n", leader,
+		rt->rt_llinfo, &rt->rt_nodes[0], &rt->rt_nodes[1]);
+	if (rt->rt_gateway)
+		rt_print_sockaddr(leader, "gw", rt->rt_gateway);
+	if (rt_key(rt))
+		rt_print_sockaddr(leader, "key", rt_key(rt));
+	if (rt_mask(rt))
+		rt_print_sockaddr(leader, "mask", rt_mask(rt));
+	if (rt->rt_ifp)
+		printf("%sifp: %p (%s%u)\n", leader,
+			rt->rt_ifp, rt->rt_ifp->if_name, rt->rt_ifp->if_unit);
+	if (rt->rt_ifa)
+		printf("%sifa: %p\n", leader, rt->rt_ifa);	/* XXX expand */
+	if (rt->rt_genmask)
+		rt_print_sockaddr(leader, "genmask", rt->rt_genmask);
+	if (rt->rt_gwroute)
+		rt_print1("   ", "gwroute", rt->rt_gwroute);
+	if (rt->rt_parent)
+		rt_print1("   ", "parent", rt->rt_parent);
+	/* XXX rt_rmx */
+}
+
+void
+rt_print(const struct rtentry *rt)
+{
+	rt_print1("", "route", rt);
+}
+
 /* This must be before ip6_init2(), which is now SI_ORDER_MIDDLE */
 SYSINIT(route, SI_SUB_PROTO_DOMAIN, SI_ORDER_THIRD, route_init, 0);

==== //depot/projects/hostcache/sys/net/route.h#3 (text+ko) ====

@@ -312,6 +312,7 @@
 	    struct sockaddr *, struct sockaddr *, int, struct rtentry **);
 int	 rtrequest1(int, struct rt_addrinfo *, struct rtentry **);
 int	 rt_check(struct rtentry **, struct rtentry **, struct sockaddr *);
+void	 rt_print(const struct rtentry *);
 #endif
 
 #endif

==== //depot/projects/hostcache/sys/netinet/ip_dummynet.c#2 (text+ko) ====

@@ -39,10 +39,7 @@
  *  + scheduler and dummynet functions;
  *  + configuration and initialization.
  *
- * NOTA BENE: critical sections are protected by splimp()/splx()
- *    pairs. One would think that splnet() is enough as for most of
- *    the netinet code, but it is not so because when used with
- *    bridging, dummynet is invoked at splimp().
+ * NOTA BENE: critical sections are protected by the "dummynet lock".
  *
  * Most important Changes:
  *
@@ -152,7 +149,6 @@
 	CTLFLAG_RD, &red_max_pkt_size, 0, "RED Max packet size");
 #endif
 
-#define DUMMYNET_DEBUG
 #ifdef DUMMYNET_DEBUG
 int	dummynet_debug = 0;
 #ifdef SYSCTL_NODE
@@ -194,10 +190,13 @@
 {
     if (rt == NULL)
 	return ;
-    if (rt->rt_refcnt <= 0)
+    RT_LOCK(rt);
+    if (rt->rt_refcnt <= 0) {
 	printf("dummynet: warning, refcnt now %ld, decreasing\n",
 	    rt->rt_refcnt);
-    RTFREE(rt);
+	rt_print(rt);		/* XXX */
+    }
+    RTFREE_LOCKED(rt);
 }
 
 /*
@@ -1198,11 +1197,13 @@
 	 * a pointer into *ro so it needs to be updated.
 	 */
 	pkt->ro = *(fwa->ro);
-	if (fwa->ro->ro_rt)
+	if (fwa->ro->ro_rt) {
+	    RT_LOCK(fwa->ro->ro_rt);
 	    fwa->ro->ro_rt->rt_refcnt++ ;
+	    RT_UNLOCK(fwa->ro->ro_rt);
+	}
 	if (fwa->dst == (struct sockaddr_in *)&fwa->ro->ro_dst) /* dst points into ro */
 	    fwa->dst = (struct sockaddr_in *)&(pkt->ro.ro_dst) ;
-
 	pkt->dn_dst = fwa->dst;
 	pkt->flags = fwa->flags;
     }

==== //depot/projects/hostcache/sys/netinet/tcp_subr.c#3 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)tcp_subr.c	8.2 (Berkeley) 5/24/95
- * $FreeBSD: src/sys/netinet/tcp_subr.c,v 1.163 2003/10/21 18:28:35 silby Exp $
+ * $FreeBSD: src/sys/netinet/tcp_subr.c,v 1.164 2003/10/24 05:44:14 silby Exp $
  */
 
 #include "opt_compat.h"
@@ -281,7 +281,7 @@
 	uma_zone_set_max(tcpcb_zone, maxsockets);
 	tcptw_zone = uma_zcreate("tcptw", sizeof(struct tcptw), 
 	    NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE);
-	uma_zone_set_max(tcptw_zone, maxsockets);
+	uma_zone_set_max(tcptw_zone, maxsockets / 5);
 	tcp_timer_init();
 	syncache_init();
 	tcp_hc_init();

==== //depot/projects/hostcache/sys/vm/swap_pager.c#2 (text+ko) ====

@@ -67,7 +67,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/vm/swap_pager.c,v 1.231 2003/10/18 14:10:27 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/vm/swap_pager.c,v 1.232 2003/10/24 06:43:04 alc Exp $");
 
 #include "opt_mac.h"

>>> TRUNCATED FOR MAIL (1000 lines) <<<



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200310241809.h9OI9nAG007913>