Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Sep 2003 16:07:54 -0700 (PDT)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 38302 for review
Message-ID:  <200309192307.h8JN7sEO067154@repoman.freebsd.org>

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

Change 38302 by marcel@marcel_nfs on 2003/09/19 16:07:27

	IFC @38301

Affected files ...

.. //depot/projects/ia64/crypto/openssh/FREEBSD-tricks#3 integrate
.. //depot/projects/ia64/lib/libpam/modules/pam_ssh/pam_ssh.c#13 integrate
.. //depot/projects/ia64/release/Makefile#70 integrate
.. //depot/projects/ia64/release/scripts/doFS.sh#19 integrate
.. //depot/projects/ia64/share/man/man5/device.hints.5#8 integrate
.. //depot/projects/ia64/sys/alpha/conf/GENERIC#25 integrate
.. //depot/projects/ia64/sys/amd64/conf/GENERIC#11 integrate
.. //depot/projects/ia64/sys/conf/NOTES#69 integrate
.. //depot/projects/ia64/sys/contrib/dev/acpica/rsaddr.c#10 integrate
.. //depot/projects/ia64/sys/contrib/dev/acpica/rsirq.c#11 integrate
.. //depot/projects/ia64/sys/dev/ata/ata-queue.c#5 integrate
.. //depot/projects/ia64/sys/dev/ata/atapi-cam.c#17 integrate
.. //depot/projects/ia64/sys/dev/puc/pucdata.c#20 integrate
.. //depot/projects/ia64/sys/dev/usb/usbdevs#46 integrate
.. //depot/projects/ia64/sys/dev/usb/usbdevs.h#44 integrate
.. //depot/projects/ia64/sys/dev/usb/usbdevs_data.h#44 integrate
.. //depot/projects/ia64/sys/i386/conf/GENERIC#41 integrate
.. //depot/projects/ia64/sys/ia64/ia64/machdep.c#94 integrate
.. //depot/projects/ia64/sys/ia64/ia64/trap.c#64 integrate
.. //depot/projects/ia64/sys/kern/kern_proc.c#46 integrate
.. //depot/projects/ia64/sys/kern/vfs_subr.c#54 integrate
.. //depot/projects/ia64/sys/sys/lock.h#9 integrate
.. //depot/projects/ia64/sys/sys/mutex.h#16 integrate
.. //depot/projects/ia64/sys/vm/uma.h#13 integrate
.. //depot/projects/ia64/sys/vm/uma_core.c#52 integrate
.. //depot/projects/ia64/sys/vm/uma_dbg.c#10 integrate
.. //depot/projects/ia64/sys/vm/uma_int.h#17 integrate
.. //depot/projects/ia64/tools/tools/ath/athstats.c#2 integrate
.. //depot/projects/ia64/tools/tools/mtxstat/mtxstat.pl#2 integrate
.. //depot/projects/ia64/tools/tools/tinderbox/tbmaster.pl#19 integrate
.. //depot/projects/ia64/tools/tools/tinderbox/tinderbox.pl#10 integrate

Differences ...

==== //depot/projects/ia64/crypto/openssh/FREEBSD-tricks#3 (text+ko) ====

@@ -1,8 +1,8 @@
-# $FreeBSD: src/crypto/openssh/FREEBSD-tricks,v 1.3 2003/04/23 17:21:55 des Exp $
+# $FreeBSD: src/crypto/openssh/FREEBSD-tricks,v 1.4 2003/09/19 11:29:51 des Exp $
 
 # Shell code to remove FreeBSD tags before merging
 grep -rl '\$Fre.BSD:' . >tags
-while read f < tags ; do
+cat tags | while read f ; do
     sed -i.orig -e '/\$Fre.BSD:/d' $f
 done
 
@@ -11,7 +11,7 @@
 xargs perl -n -i.orig -e 'print; s/\$(Id|OpenBSD): [^\$]*\$/\$FreeBSD\$/ && print'
 
 # Shell code to reexpand FreeBSD tags
-while read f < tags ; do
+cat tags | while read f ; do
     id=$(cvs diff $f | grep '\$Fre.BSD:' | sed 's/.*\(\$Fre.BSD:.*\$\).*/\1/') ;
     if [ -n "$id" ] ; then
         sed -i.orig -e "s@\\\$Fre.BSD\\\$@$id@" $f ;

==== //depot/projects/ia64/lib/libpam/modules/pam_ssh/pam_ssh.c#13 (text+ko) ====

@@ -33,11 +33,12 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libpam/modules/pam_ssh/pam_ssh.c,v 1.38 2003/02/10 18:59:20 des Exp $");
+__FBSDID("$FreeBSD: src/lib/libpam/modules/pam_ssh/pam_ssh.c,v 1.39 2003/09/19 11:33:03 des Exp $");
 
 #include <sys/param.h>
 #include <sys/wait.h>
 
+#include <errno.h>
 #include <fcntl.h>
 #include <paths.h>
 #include <pwd.h>
@@ -410,7 +411,7 @@
 	}
 	openpam_log(PAM_LOG_DEBUG, "killing ssh agent %d", (int)pid);
 	if (kill(pid, SIGTERM) == -1 ||
-	    waitpid(pid, &status, 0) == -1)
+	    (waitpid(pid, &status, 0) == -1 && errno != ECHILD))
 		return (PAM_SYSTEM_ERR);
 	return (PAM_SUCCESS);
 }

==== //depot/projects/ia64/release/Makefile#70 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/release/Makefile,v 1.818 2003/08/11 04:21:58 obrien Exp $
+# $FreeBSD: src/release/Makefile,v 1.819 2003/09/19 09:06:15 ru Exp $
 #
 # make release [BUILDNAME=somename] CHROOTDIR=/some/dir CVSROOT=/cvs/dir \
 #     [RELEASETAG=tag]
@@ -494,7 +494,7 @@
 .endif
 	mkdir ${RD}/trees
 	mkdir ${RD}/kernels
-	for i in ${DISTRIBUTIONS} ; do \
+	for i in ${DISTRIBUTIONS} special; do \
 		mkdir ${RD}/trees/$$i && \
 		mtree -deU -f ${MTREEFILES}/BSD.root.dist \
 		    -p ${RD}/trees/$$i > /dev/null && \
@@ -661,6 +661,11 @@
 #
 
 release.9:
+.if exists(${.CURDIR}/../sys/boot/${TARGET}/loader)
+	cd ${.CURDIR}/../sys/boot/${TARGET}/loader; \
+	${WMAKE} clean cleandepend; \
+	${WMAKE} -DNOMAN -DNOFORTH all install DESTDIR=${RD}/trees/special
+.endif
 	cp ${RD}/trees/base/etc/disktab /etc
 	rm -rf ${RD}/mfsfd
 	mkdir ${RD}/mfsfd
@@ -1069,9 +1074,9 @@
 	@mkdir -p ${RD}/image.${FSIMAGE}/boot
 .if ${TARGET} == "i386"
 	@${WMAKEENV} kgzip -v -l ${RD}/trees/base/usr/lib/kgzldr.o \
-	    -o ${RD}/image.${FSIMAGE}/boot/loader ${RD}/trees/base/boot/loader
+	    -o ${RD}/image.${FSIMAGE}/boot/loader ${RD}/trees/special/boot/loader
 .else
-	@cp ${RD}/trees/base/boot/loader ${RD}/image.${FSIMAGE}/boot
+	@cp ${RD}/trees/special/boot/loader ${RD}/image.${FSIMAGE}/boot
 .endif
 	@[ -r ${RD}/kernels/BOOTMFS.${FSIMAGE}.hints ] && \
 	  sed -e '/^hint/s/^/set /' -e '/^#/d' \

==== //depot/projects/ia64/release/scripts/doFS.sh#19 (text+ko) ====

@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $FreeBSD: src/release/scripts/doFS.sh,v 1.53 2003/08/08 18:23:00 ru Exp $
+# $FreeBSD: src/release/scripts/doFS.sh,v 1.54 2003/09/19 09:08:41 ru Exp $
 #
 
 set -ex
@@ -29,22 +29,6 @@
 	FSSIZE=$(roundup $(($sk*12/10)) 1024)
 fi
 
-#
-# We don't have any bootblocks on ia64. Note that -B implies -r,
-# so we have to specifically specify -r when we don't have -B.
-# bsdlabel fails otherwise.
-#
-if [ -f "${RD}/trees/base/boot/boot" ]; then
-	BOOT="-B -b ${RD}/trees/base/boot/boot"
-elif [ -f "${RD}/trees/base/boot/boot1" ]; then
-	BOOT="-B -b ${RD}/trees/base/boot/boot1"
-	if [ -f "${RD}/trees/base/boot/boot2" ]; then
-		BOOT="${BOOT} -s ${RD}/trees/base/boot/boot2"
-	fi
-else
-	BOOT="-r"
-fi
-
 deadlock=20
 
 dofs_vn () {
@@ -137,11 +121,29 @@
     done
 }
 
+#
+# We don't have any bootblocks on ia64. Note that -B implies -r,
+# so we have to specifically specify -r when we don't have -B.
+# bsdlabel fails otherwise.
+#
 case `uname -r` in
 [1-4].*)
+	if [ -f "${RD}/trees/base/boot/boot1" ]; then
+		BOOT="-B -b ${RD}/trees/base/boot/boot1"
+		if [ -f "${RD}/trees/base/boot/boot2" ]; then
+			BOOT="${BOOT} -s ${RD}/trees/base/boot/boot2"
+		fi
+	else
+		BOOT="-r"
+	fi
 	dofs_vn
 	;;
 *)
+	if [ -f "${RD}/trees/base/boot/boot" ]; then
+		BOOT="-B -b ${RD}/trees/base/boot/boot"
+	else
+		BOOT="-r"
+	fi
 	dofs_md
 	;;
 esac

==== //depot/projects/ia64/share/man/man5/device.hints.5#8 (text+ko) ====

@@ -23,7 +23,7 @@
 .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/share/man/man5/device.hints.5,v 1.9 2003/09/07 04:18:17 jb Exp $
+.\" $FreeBSD: src/share/man/man5/device.hints.5,v 1.10 2003/09/19 22:27:54 jb Exp $
 .\"
 .Dd October 7, 2001
 .Dt DEVICE.HINTS 5
@@ -93,6 +93,8 @@
 specifies a bus to which the device is attached.
 .It Li port
 specifies the start address of I/O ports to be used by the device.
+.It Li portsize
+specifies the number of ports used by the device.
 .It Li irq
 is the interrupt line number to be used.
 .It Li drq

==== //depot/projects/ia64/sys/alpha/conf/GENERIC#25 (text+ko) ====

@@ -18,7 +18,7 @@
 #
 # For hardware specific information check HARDWARE.TXT
 #
-# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.162 2003/07/21 19:15:25 ticso Exp $
+# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.163 2003/09/19 20:04:55 joerg Exp $
 
 machine		alpha
 cpu		EV4
@@ -139,6 +139,11 @@
 device		ppi		# Parallel port interface device
 #device		vpo		# Requires scbus and da
  
+# If you've got a "dumb" serial or parallel PCI card that is
+# supported by the puc(4) glue driver, uncomment the following
+# line to enable it (connects to the sio and/or ppc drivers):
+#device         puc
+ 
 # PCI Ethernet NICs.
 device		de		# DEC/Intel DC21x4x (``Tulip'')
 device		txp		# 3Com 3cR990 (``Typhoon'')

==== //depot/projects/ia64/sys/amd64/conf/GENERIC#11 (text+ko) ====

@@ -16,7 +16,7 @@
 # If you are in doubt as to the purpose or necessity of a line, check first 
 # in NOTES.
 #
-# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.395 2003/09/15 22:40:00 obrien Exp $
+# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.396 2003/09/19 20:04:55 joerg Exp $
 
 machine		amd64
 cpu		HAMMER
@@ -158,6 +158,10 @@
 device		ppi		# Parallel port interface device
 #device		vpo		# Requires scbus and da
 
+# If you've got a "dumb" serial or parallel PCI card that is
+# supported by the puc(4) glue driver, uncomment the following
+# line to enable it (connects to the sio and/or ppc drivers):
+#device         puc
 
 # PCI Ethernet NICs.
 device		de		# DEC/Intel DC21x4x (``Tulip'')

==== //depot/projects/ia64/sys/conf/NOTES#69 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1175 2003/09/11 23:06:41 marcel Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1176 2003/09/19 19:04:30 jhb Exp $
 #
 # NOTES -- Lines that can be cut/pasted into kernel and hints configs.
 #
@@ -167,6 +167,13 @@
 # CPU.
 options 	ADAPTIVE_MUTEXES
 
+# MUTEX_NOINLINE forces mutex operations to call functions to perform each
+# operation rather than inlining the simple cases.  This can be used to
+# shrink the size of the kernel text segment.  Note that this behavior is
+# already implied by the INVARIANT_SUPPORT, INVARIANTS, MUTEX_PROFILING,
+# and WITNESS options.
+options 	MUTEX_NOINLINE
+
 # SMP Debugging Options:
 #
 # MUTEX_DEBUG enables various extra assertions in the mutex code.

==== //depot/projects/ia64/sys/contrib/dev/acpica/rsaddr.c#10 (text+ko) ====

@@ -168,6 +168,10 @@
     Buffer += 1;
     ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
 
+    /* Check for the minimum length. */
+    if (Temp16 < 13)
+        return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE);
+
     *BytesConsumed = Temp16 + 3;
     OutputStruct->Id = ACPI_RSTYPE_ADDRESS16;
 
@@ -275,11 +279,13 @@
     /*
      * This will leave us pointing to the Resource Source Index
      * If it is present, then save it off and calculate the
-     * pointer to where the null terminated string goes:
-     * Each Interrupt takes 32-bits + the 5 bytes of the
-     * stream that are default.
+     * pointer to where the null terminated string goes.
+     *
+     * Note that some buggy resources have a length that indicates the
+     * Index byte is present even though it isn't (since there is no
+     * following Resource String.)  We add one to catch these.
      */
-    if (*BytesConsumed > 16)
+    if (*BytesConsumed > 16 + 1)
     {
         /* Dereference the Index */
 
@@ -555,6 +561,10 @@
      */
     Buffer += 1;
     ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
+
+    /* Check for the minimum length. */
+    if (Temp16 < 23)
+        return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE);
     *BytesConsumed = Temp16 + 3;
 
     OutputStruct->Id = ACPI_RSTYPE_ADDRESS32;
@@ -667,9 +677,13 @@
     /*
      * This will leave us pointing to the Resource Source Index
      * If it is present, then save it off and calculate the
-     * pointer to where the null terminated string goes:
+     * pointer to where the null terminated string goes.
+     *
+     * Note that some buggy resources have a length that indicates the
+     * Index byte is present even though it isn't (since there is no
+     * following Resource String.)  We add one to catch these.
      */
-    if (*BytesConsumed > 26)
+    if (*BytesConsumed > 26 + 1)
     {
         /* Dereference the Index */
 
@@ -944,7 +958,11 @@
     Buffer += 1;
     ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
 
+    /* Check for the minimum length. */
+    if (Temp16 < 43)
+        return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE);
     *BytesConsumed = Temp16 + 3;
+
     OutputStruct->Id = ACPI_RSTYPE_ADDRESS64;
 
     /*
@@ -1056,11 +1074,13 @@
     /*
      * This will leave us pointing to the Resource Source Index
      * If it is present, then save it off and calculate the
-     * pointer to where the null terminated string goes:
-     * Each Interrupt takes 32-bits + the 5 bytes of the
-     * stream that are default.
+     * pointer to where the null terminated string goes.
+     *
+     * Note that some buggy resources have a length that indicates the
+     * Index byte is present even though it isn't (since there is no
+     * following Resource String.)  We add one to catch these.
      */
-    if (*BytesConsumed > 46)
+    if (*BytesConsumed > 46 + 1)
     {
         /* Dereference the Index */
 

==== //depot/projects/ia64/sys/contrib/dev/acpica/rsirq.c#11 (text+ko) ====

@@ -408,7 +408,11 @@
     Buffer += 1;
     ACPI_MOVE_16_TO_16 (&Temp16, Buffer);
 
+    /* Check for the minimum length. */
+    if (Temp16 < 6)
+        return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE);
     *BytesConsumed = Temp16 + 3;
+
     OutputStruct->Id = ACPI_RSTYPE_EXT_IRQ;
 
     /*
@@ -446,6 +450,12 @@
     Buffer += 1;
     Temp8 = *Buffer;
 
+    /* Minimum number of IRQs is one. */
+    if (Temp8 < 1) {
+        *BytesConsumed = 0;
+        return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE);
+    }
+
     OutputStruct->Data.ExtendedIrq.NumberOfInterrupts = Temp8;
 
     /*
@@ -480,7 +490,8 @@
      * stream that are default.
      */
     if (*BytesConsumed >
-        ((ACPI_SIZE) OutputStruct->Data.ExtendedIrq.NumberOfInterrupts * 4) + 5)
+        ((ACPI_SIZE) OutputStruct->Data.ExtendedIrq.NumberOfInterrupts * 4)
+        + 5 + 1)
     {
         /* Dereference the Index */
 

==== //depot/projects/ia64/sys/dev/ata/ata-queue.c#5 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-queue.c,v 1.5 2003/09/18 09:22:14 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-queue.c,v 1.6 2003/09/19 12:46:12 sos Exp $");
 
 #include "opt_ata.h"
 #include <sys/param.h>
@@ -264,7 +264,7 @@
 	if (request->result)
 	    break;
 
-	if (request->error & ATA_E_MASK) {
+	if (request->error) {
 	    switch ((request->error & ATA_SK_MASK)) {
 	    case ATA_SK_RECOVERED_ERROR:
 		ata_prtdev(request->device, "WARNING - %s recovered error\n",
@@ -297,6 +297,8 @@
 			       "\2NO_MEDIA\1ILLEGAL_LENGTH");
 		request->result = EIO;
 	    }
+	    if (request->error & ATA_E_MASK)
+		request->result = EIO;
 	}
 	break;
     }
@@ -369,6 +371,7 @@
 	case 0x0a: return ("WRITE");
 	case 0x10: return ("WEOF");
 	case 0x11: return ("SPACE");
+	case 0x12: return ("INQUIRY");
 	case 0x15: return ("MODE_SELECT");
 	case 0x19: return ("ERASE");
 	case 0x1a: return ("MODE_SENSE");

==== //depot/projects/ia64/sys/dev/ata/atapi-cam.c#17 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/atapi-cam.c,v 1.22 2003/09/11 17:34:47 thomas Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/atapi-cam.c,v 1.23 2003/09/19 16:25:44 thomas Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -59,7 +59,7 @@
     int			lun;
     union ccb		*ccb;
     int			flags;
-#define DOING_AUTOSENSE 1
+#define QUEUED		0x0001
 
     char		*dxfer_alloc;
     TAILQ_ENTRY(atapi_hcb) chain;
@@ -369,6 +369,7 @@
 	struct ccb_scsiio *csio = &ccb->csio;
 	int tid = ccb_h->target_id, lid = ccb_h->target_lun;
 	struct ata_device *dev = get_ata_device(softc, tid);
+	int request_flags = ATA_R_QUIET | ATA_R_ATAPI;
 
 	CAM_DEBUG(ccb_h->path, CAM_DEBUG_SUBTRACE, ("XPT_SCSI_IO\n"));
 
@@ -397,9 +398,24 @@
 	    /* scatter-gather not supported */
 	    xpt_print_path(ccb_h->path);
 	    printf("ATAPI/CAM does not support scatter-gather yet!\n");
-	    break;
+	    goto action_invalid;
 	}
 
+	switch (ccb_h->flags & CAM_DIR_MASK) {
+	case CAM_DIR_IN:
+	     request_flags |= ATA_R_READ;
+	     break;
+	case CAM_DIR_OUT:
+	     request_flags |= ATA_R_WRITE;
+	     break;
+	case CAM_DIR_NONE:
+	     request_flags |= ATA_R_CONTROL;
+	     break;
+	default:
+	     ata_prtdev(dev, "unknown IO operation\n");
+	     goto action_invalid;
+	 }
+
 	if ((hcb = allocate_hcb(softc, unit, bus, ccb)) == NULL) {
 	    printf("cannot allocate ATAPI/CAM hcb\n");
 	    goto action_oom;
@@ -409,8 +425,6 @@
 	    goto action_oom;
 	}
 
-	ccb_h->status |= CAM_SIM_QUEUED;
-
 	bcopy((ccb_h->flags & CAM_CDB_POINTER) ?
 	      csio->cdb_io.cdb_ptr : csio->cdb_io.cdb_bytes,
 	      request->u.atapi.ccb, csio->cdb_len);
@@ -467,8 +481,8 @@
 
 	if ((ccb_h->flags & CAM_DIR_MASK) == CAM_DIR_IN && (len & 1)) {
 	    /* ATA always transfers an even number of bytes */
-	    if (!(buf = hcb->dxfer_alloc = malloc(++len, M_ATACAM,
-						  M_NOWAIT | M_ZERO))) {
+	    if ((buf = hcb->dxfer_alloc
+                 = malloc(++len, M_ATACAM, M_NOWAIT | M_ZERO)) == NULL) {
 		printf("cannot allocate ATAPI/CAM buffer\n");
 		goto action_oom;
 	    }
@@ -481,23 +495,11 @@
 	request->timeout = ccb_h->timeout;
 	request->retries = 2;
 	request->callback = &atapi_cb;
-	request->flags = (ATA_R_QUIET | ATA_R_ATAPI);
-	switch (ccb_h->flags & CAM_DIR_MASK) {
-	case CAM_DIR_IN:
-	     request->flags |= ATA_R_READ;
-	     break;
-	case CAM_DIR_OUT:
-	     request->flags |= ATA_R_WRITE;
-	     break;
-	case CAM_DIR_NONE:
-	     request->flags |= ATA_R_CONTROL;
-	     break;
-	default:
-	     ata_prtdev(dev, "unknown IO operation\n");
-	     goto action_invalid;
-	 }
+	request->flags = request_flags;
 
 	TAILQ_INSERT_TAIL(&softc->pending_hcbs, hcb, chain);
+	hcb->flags |= QUEUED;
+	ccb_h->status |= CAM_SIM_QUEUED;
 
 	ata_queue_request(request);
 	return;
@@ -509,6 +511,8 @@
 	goto action_invalid;
     }
 
+    /* NOTREACHED */
+
 action_oom:
     if (request != NULL)
 	ata_free_request(request);
@@ -523,9 +527,9 @@
     return;
 
 action_invalid:
-   ccb_h->status = CAM_REQ_INVALID;
-   xpt_done(ccb);
-   return;
+    ccb_h->status = CAM_REQ_INVALID;
+    xpt_done(ccb);
+    return;
 }
 
 static void
@@ -690,7 +694,8 @@
 static void
 free_hcb(struct atapi_hcb *hcb)
 {
-    TAILQ_REMOVE(&hcb->softc->pending_hcbs, hcb, chain);
+    if ((hcb->flags & QUEUED) != 0)
+	TAILQ_REMOVE(&hcb->softc->pending_hcbs, hcb, chain);
     if (hcb->dxfer_alloc != NULL)
 	free(hcb->dxfer_alloc, M_ATACAM);
     free(hcb, M_ATACAM);

==== //depot/projects/ia64/sys/dev/puc/pucdata.c#20 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/puc/pucdata.c,v 1.25 2003/09/06 21:48:50 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/puc/pucdata.c,v 1.26 2003/09/19 19:55:08 joerg Exp $");
 
 /*
  * PCI "universal" communications card driver configuration data (used to
@@ -772,6 +772,30 @@
 		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8 },
 	    },
 	},
+	/*
+	 * VScom (Titan?) PCI-800L.  More modern variant of the
+	 * PCI-800.  Uses 6 discrete 16550 UARTs, plus another
+	 * two of them obviously implemented as macro cells in
+	 * the ASIC.  This causes the weird port access pattern
+	 * below, where two of the IO port ranges each access
+	 * one of the ASIC UARTs, and a block of IO addresses
+	 * access the external UARTs.
+	 */
+	{   "Titan VScom PCI-800L",
+	    NULL,
+	    {   0x14d2, 0x8080, 0x14d2, 0x8080  },
+	    {   0xffff, 0xffff, 0xffff, 0xffff  },
+	    {
+		{ PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ * 8 },
+		{ PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ * 8 },
+		{ PUC_PORT_TYPE_COM, 0x20, 0x00, COM_FREQ * 8 },
+		{ PUC_PORT_TYPE_COM, 0x20, 0x08, COM_FREQ * 8 },
+		{ PUC_PORT_TYPE_COM, 0x20, 0x10, COM_FREQ * 8 },
+		{ PUC_PORT_TYPE_COM, 0x20, 0x18, COM_FREQ * 8 },
+		{ PUC_PORT_TYPE_COM, 0x20, 0x20, COM_FREQ * 8 },
+		{ PUC_PORT_TYPE_COM, 0x20, 0x28, COM_FREQ * 8 },
+	    },
+	},
 
 	/* NEC PK-UG-X001 K56flex PCI Modem card.
 	   NEC MARTH bridge chip and Rockwell RCVDL56ACF/SP using. */

==== //depot/projects/ia64/sys/dev/usb/usbdevs#46 (text+ko) ====

@@ -1,4 +1,4 @@
-$FreeBSD: src/sys/dev/usb/usbdevs,v 1.136 2003/09/18 15:41:06 obrien Exp $
+$FreeBSD: src/sys/dev/usb/usbdevs,v 1.137 2003/09/19 22:42:51 jb Exp $
 
 /*
  * Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc.
@@ -484,6 +484,7 @@
 product BELKIN F5U103		0x0103	F5U103 Serial adapter
 product BELKIN F5U109		0x0109	F5U109 Serial adapter
 product BELKIN F5U120		0x1203	F5U120-PC Hub
+product BELKIN F5U208		0x0208	F5U208 VideoBus II
 
 /* Billionton products */
 product BILLIONTON USB100	0x0986	USB100N 10/100 FastEthernet Adapter
@@ -704,6 +705,7 @@
 product HP 840C			0x0604	DeskJet 840c
 product HP 2200C		0x0605	ScanJet 2200C
 product HP 5300C		0x0701	Scanjet 5300C
+product HP 4400C		0x0705	Scanjet 4400C
 product HP 970CSE		0x1004	Deskjet 970Cse
 product HP 5400C		0x1005	Scanjet 5400C
 product HP 930C			0x1204	DeskJet 930c

==== //depot/projects/ia64/sys/dev/usb/usbdevs.h#44 (text+ko) ====

@@ -1,10 +1,10 @@
-/*	$FreeBSD: src/sys/dev/usb/usbdevs.h,v 1.144 2003/09/18 15:41:06 obrien Exp $	*/
+/*	$FreeBSD: src/sys/dev/usb/usbdevs.h,v 1.145 2003/09/19 22:42:51 jb Exp $	*/
 
 /*
  * THIS FILE IS AUTOMATICALLY GENERATED.  DO NOT EDIT.
  *
  * generated from:
- *	FreeBSD: src/sys/dev/usb/usbdevs,v 1.135 2003/08/22 05:43:29 njl Exp 
+ *	FreeBSD: src/sys/dev/usb/usbdevs,v 1.136 2003/09/18 15:41:06 obrien Exp 
  */
 
 /*
@@ -491,6 +491,7 @@
 #define	USB_PRODUCT_BELKIN_F5U103	0x0103		/* F5U103 Serial adapter */
 #define	USB_PRODUCT_BELKIN_F5U109	0x0109		/* F5U109 Serial adapter */
 #define	USB_PRODUCT_BELKIN_F5U120	0x1203		/* F5U120-PC Hub */
+#define	USB_PRODUCT_BELKIN_F5U208	0x0208		/* F5U208 VideoBus II */
 
 /* Billionton products */
 #define	USB_PRODUCT_BILLIONTON_USB100	0x0986		/* USB100N 10/100 FastEthernet Adapter */
@@ -711,6 +712,7 @@
 #define	USB_PRODUCT_HP_840C	0x0604		/* DeskJet 840c */
 #define	USB_PRODUCT_HP_2200C	0x0605		/* ScanJet 2200C */
 #define	USB_PRODUCT_HP_5300C	0x0701		/* Scanjet 5300C */
+#define	USB_PRODUCT_HP_4400C	0x0705		/* Scanjet 4400C */
 #define	USB_PRODUCT_HP_970CSE	0x1004		/* Deskjet 970Cse */
 #define	USB_PRODUCT_HP_5400C	0x1005		/* Scanjet 5400C */
 #define	USB_PRODUCT_HP_930C	0x1204		/* DeskJet 930c */

==== //depot/projects/ia64/sys/dev/usb/usbdevs_data.h#44 (text+ko) ====

@@ -1,10 +1,10 @@
-/*	$FreeBSD: src/sys/dev/usb/usbdevs_data.h,v 1.144 2003/09/18 15:41:07 obrien Exp $	*/
+/*	$FreeBSD: src/sys/dev/usb/usbdevs_data.h,v 1.145 2003/09/19 22:42:51 jb Exp $	*/
 
 /*
  * THIS FILE IS AUTOMATICALLY GENERATED.  DO NOT EDIT.
  *
  * generated from:
- *	FreeBSD: src/sys/dev/usb/usbdevs,v 1.135 2003/08/22 05:43:29 njl Exp 
+ *	FreeBSD: src/sys/dev/usb/usbdevs,v 1.136 2003/09/18 15:41:06 obrien Exp 
  */
 
 /*
@@ -472,6 +472,12 @@
 	    "F5U120-PC Hub",
 	},
 	{
+	    USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_F5U208,
+	    0,
+	    "Belkin Components",
+	    "F5U208 VideoBus II",
+	},
+	{
 	    USB_VENDOR_BILLIONTON, USB_PRODUCT_BILLIONTON_USB100,
 	    0,
 	    "Billionton Systems",
@@ -1258,6 +1264,12 @@
 	    "Scanjet 5300C",
 	},
 	{
+	    USB_VENDOR_HP, USB_PRODUCT_HP_4400C,
+	    0,
+	    "Hewlett Packard",
+	    "Scanjet 4400C",
+	},
+	{
 	    USB_VENDOR_HP, USB_PRODUCT_HP_970CSE,
 	    0,
 	    "Hewlett Packard",

==== //depot/projects/ia64/sys/i386/conf/GENERIC#41 (text+ko) ====

@@ -16,7 +16,7 @@
 # If you are in doubt as to the purpose or necessity of a line, check first 
 # in NOTES.
 #
-# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.391 2003/09/10 18:54:58 obrien Exp $
+# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.392 2003/09/19 20:04:55 joerg Exp $
 
 machine		i386
 cpu		I486_CPU
@@ -177,6 +177,10 @@
 device		ppi		# Parallel port interface device
 #device		vpo		# Requires scbus and da
 
+# If you've got a "dumb" serial or parallel PCI card that is
+# supported by the puc(4) glue driver, uncomment the following
+# line to enable it (connects to the sio and/or ppc drivers):
+#device         puc
 
 # PCI Ethernet NICs.
 device		de		# DEC/Intel DC21x4x (``Tulip'')

==== //depot/projects/ia64/sys/ia64/ia64/machdep.c#94 (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.154 2003/09/09 05:59:09 marcel Exp $
+ * $FreeBSD: src/sys/ia64/ia64/machdep.c,v 1.155 2003/09/19 22:51:26 marcel Exp $
  */
 
 #include "opt_compat.h"
@@ -1082,9 +1082,9 @@
 		ustk = (uint64_t*)s.bspstore;
 		kstk = (uint64_t*)td->td_kstack;
 		while (s.ndirty > 0) {
-			*ustk++ = *kstk++;
+			suword64(ustk++, *kstk++);
 			if (((uintptr_t)ustk & 0x1ff) == 0x1f8)
-				*ustk++ = 0;
+				suword64(ustk++, 0);
 			if (((uintptr_t)kstk & 0x1ff) == 0x1f8) {
 				kstk++;
 				s.ndirty -= 8;
@@ -1127,6 +1127,7 @@
 {
 	struct _special s;
 	struct trapframe *tf;
+	uint64_t psrmask;
 
 	tf = td->td_frame;
 
@@ -1134,15 +1135,22 @@
 	    ("Whoa there! We have more than 8KB of dirty registers!"));
 
 	s = mc->mc_special;
-	/* Only copy the user mask from the new context. */
-	s.psr = (s.psr & 0x1f) | (tf->tf_special.psr & ~0x1f);
+	/*
+	 * Only copy the user mask and the restart instruction bit from
+	 * the new context.
+	 */
+	psrmask = IA64_PSR_BE | IA64_PSR_UP | IA64_PSR_AC | IA64_PSR_MFL |
+	    IA64_PSR_MFH | IA64_PSR_RI;
+	s.psr = (tf->tf_special.psr & ~psrmask) | (s.psr & psrmask);
 	/* We don't have any dirty registers of the new context. */
 	s.ndirty = 0;
 	if (mc->mc_flags & _MC_FLAGS_ASYNC_CONTEXT) {
+		KASSERT((tf->tf_flags & FRAME_SYSCALL) == 0, ("foo"));
 		tf->tf_scratch = mc->mc_scratch;
 		tf->tf_scratch_fp = mc->mc_scratch_fp;
 		/* XXX High FP */
 	} else {
+		KASSERT((tf->tf_flags & FRAME_SYSCALL) != 0, ("foo"));
 		s.cfm = s.pfs;
 		s.pfs = tf->tf_special.pfs;
 		s.iip = s.rp;

==== //depot/projects/ia64/sys/ia64/ia64/trap.c#64 (text+ko) ====

@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/ia64/ia64/trap.c,v 1.89 2003/08/20 05:30:34 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/ia64/ia64/trap.c,v 1.90 2003/09/19 22:41:52 marcel Exp $");
 
 #include "opt_ddb.h"
 #include "opt_ktrace.h"
@@ -311,6 +311,17 @@
 	printf("\n");
 }
 
+static void
+trap_panic(int vector, struct trapframe *tf)
+{
+
+	printtrap(vector, tf, 1, TRAPF_USERMODE(tf));
+#ifdef DDB
+	kdb_trap(vector, tf);
+#endif
+	panic("trap");
+}
+
 /*
  *
  */
@@ -342,18 +353,11 @@
 	struct proc *p;
 	struct thread *td;
 	u_int64_t ucode;
-	int i, user;
+	int error, sig, user;
 	u_int sticks;
 
 	user = TRAPF_USERMODE(framep) ? 1 : 0;
 
-	/* Short-circuit break instruction based system calls. */
-	if (vector == IA64_VEC_BREAK && user &&
-	    framep->tf_special.ifa == 0x100000) {
-		break_syscall(framep);
-		return;
-	}
-
 	/* Sanitize the FP state in case the user has trashed it. */
 	ia64_set_fpsr(IA64_FPSR_DEFAULT);
 
@@ -374,132 +378,197 @@
 		    ("kernel trap doesn't have ucred"));
 	}
 
+	sig = 0;
 	switch (vector) {
+	case IA64_VEC_VHPT:
+		/*
+		 * This one is tricky. We should hardwire the VHPT, but
+		 * don't at this time. I think we're mostly lucky that
+		 * the VHPT is mapped.
+		 */
+		trap_panic(vector, framep);
+		break;
 
-	case IA64_VEC_UNALIGNED_REFERENCE: {
+	case IA64_VEC_ITLB:
+	case IA64_VEC_DTLB:
+	case IA64_VEC_EXT_INTR:
+		/* We never call trap() with these vectors. */
+		trap_panic(vector, framep);
+		break;
+
+	case IA64_VEC_ALT_ITLB:
+	case IA64_VEC_ALT_DTLB:
 		/*
-		 * If user-land, do whatever fixups, printing, and
-		 * signalling is appropriate (based on system-wide
-		 * and per-process unaligned-access-handling flags).
+		 * These should never happen, because regions 0-4 use the
+		 * VHPT. If we get one of these it means we didn't program
+		 * the region registers correctly.
 		 */
-		if (user) {
-			i = unaligned_fixup(framep, td);
-			if (i == 0)
-				goto out;
-			ucode = framep->tf_special.ifa;	/* VA */
-			break;
-		}
+		trap_panic(vector, framep);
+		break;
 
+	case IA64_VEC_NESTED_DTLB:
 		/*
-		 * Unaligned access from kernel mode is always an error,
-		 * EVEN IF A COPY FAULT HANDLER IS SET!
-		 *
-		 * It's an error if a copy fault handler is set because
-		 * the various routines which do user-initiated copies
-		 * do so in a bcopy-like manner.  In other words, the
-		 * kernel never assumes that pointers provided by the
-		 * user are properly aligned, and so if the kernel
-		 * does cause an unaligned access it's a kernel bug.
+		 * We never call trap() with this vector. We may want to
+		 * do that in the future in case the nested TLB handler
+		 * could not find the translation it needs. In that case
+		 * we could switch to a special (hardwired) stack and
+		 * come here to produce a nice panic().
 		 */
-		goto dopanic;
-	}
+		trap_panic(vector, framep);
+		break;
 
-	case IA64_VEC_FLOATING_POINT_FAULT:
-		/* FALLTHROUGH */
+	case IA64_VEC_IKEY_MISS:
+	case IA64_VEC_DKEY_MISS:
+	case IA64_VEC_KEY_PERMISSION:
+		/*
+		 * We don't use protection keys, so we should never get
+		 * these faults.
+		 */
+		trap_panic(vector, framep);
+		break;
 
-	case IA64_VEC_FLOATING_POINT_TRAP: {
-		FP_STATE fp_state;
-		FPSWA_RET fpswa_ret;
-		FPSWA_BUNDLE bundle;
+	case IA64_VEC_DIRTY_BIT:
+	case IA64_VEC_INST_ACCESS:
+	case IA64_VEC_DATA_ACCESS:
+		/*
+		 * We get here if we read or write to a page of which the
+		 * PTE does not have the access bit or dirty bit set and
+		 * we can not find the PTE in our datastructures. This
+		 * either means we have a stale PTE in the TLB, or we lost
+		 * the PTE in our datastructures.
+		 */
+		trap_panic(vector, framep);
+		break;
 
-		/* Always fatal in kernel. Should never happen. */
-		if (!user)
-			goto dopanic;
+	case IA64_VEC_BREAK:
+		if (user) {
+			if (framep->tf_special.ifa == 0x100000) {
+				break_syscall(framep);
+				return;		/* do_ast() already called. */
+			} else if (framep->tf_special.ifa == 0x180000) {
+				mcontext_t mc;
 
-		if (fpswa_interface == NULL) {
-			i = SIGFPE;
-			ucode = 0;
-			break;
+				error = copyin((void*)framep->tf_scratch.gr8,
+				    &mc, sizeof(mc));
+				if (!error) {
+					set_mcontext(td, &mc);
+					return;	/* Don't call do_ast()!!! */
+				}
+				ucode = framep->tf_scratch.gr8;
+				sig = SIGSEGV;
+			} else {
+				framep->tf_special.psr &= ~IA64_PSR_SS;
+				sig = SIGTRAP;
+			}
+		} else {
+#ifdef DDB
+			if (kdb_trap(vector, framep))
+				return;
+			panic("trap");
+#else
+			trap_panic(vector, framep);
+#endif
 		}
+		break;
+
+	case IA64_VEC_PAGE_NOT_PRESENT:
+	case IA64_VEC_INST_ACCESS_RIGHTS:
+	case IA64_VEC_DATA_ACCESS_RIGHTS: {
+		vm_offset_t va;
+		struct vmspace *vm;
+		vm_map_t map;
+		vm_prot_t ftype;
+		int rv;
 
-		i = copyin((void *)(framep->tf_special.iip), &bundle, 16);
-		if (i) {
-			i = SIGBUS;	/* EFAULT, basically */

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



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