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>