PERFORCE change 38302 for review
Marcel Moolenaar
marcel at FreeBSD.org
Fri Sep 19 16:07:57 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=38302
Change 38302 by marcel at 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) <<<
More information about the p4-projects
mailing list