PERFORCE change 67913 for review
John Baldwin
jhb at FreeBSD.org
Thu Dec 30 11:11:36 PST 2004
http://perforce.freebsd.org/chv.cgi?CH=67913
Change 67913 by jhb at jhb_slimer on 2004/12/30 19:10:39
IFC @67912.
Affected files ...
.. //depot/projects/smpng/sys/alpha/conf/GENERIC#45 integrate
.. //depot/projects/smpng/sys/amd64/conf/GENERIC#26 integrate
.. //depot/projects/smpng/sys/conf/NOTES#88 integrate
.. //depot/projects/smpng/sys/dev/usb/ehci.c#16 integrate
.. //depot/projects/smpng/sys/dev/usb/ehci_pci.c#13 integrate
.. //depot/projects/smpng/sys/dev/usb/ehcivar.h#4 integrate
.. //depot/projects/smpng/sys/dev/usb/ohci_pci.c#11 integrate
.. //depot/projects/smpng/sys/dev/usb/ugen.c#33 integrate
.. //depot/projects/smpng/sys/dev/usb/uhci_pci.c#12 integrate
.. //depot/projects/smpng/sys/dev/usb/usbdevs#69 integrate
.. //depot/projects/smpng/sys/geom/raid3/g_raid3.c#11 integrate
.. //depot/projects/smpng/sys/i386/conf/GENERIC#59 integrate
.. //depot/projects/smpng/sys/kern/kern_umtx.c#15 integrate
.. //depot/projects/smpng/sys/kern/subr_witness.c#125 integrate
.. //depot/projects/smpng/sys/kern/sysv_msg.c#24 integrate
.. //depot/projects/smpng/sys/kern/vfs_cluster.c#36 integrate
.. //depot/projects/smpng/sys/modules/bktr/bktr/Makefile#5 integrate
.. //depot/projects/smpng/sys/modules/if_ppp/Makefile#5 integrate
.. //depot/projects/smpng/sys/modules/if_tun/Makefile#5 integrate
.. //depot/projects/smpng/sys/modules/io/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/mac_portacl/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/mem/Makefile#3 integrate
.. //depot/projects/smpng/sys/modules/netgraph/bluetooth/ubt/Makefile#6 integrate
.. //depot/projects/smpng/sys/modules/netgraph/bluetooth/ubtbcmfw/Makefile#5 integrate
.. //depot/projects/smpng/sys/modules/snp/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/sound/driver/uaudio/Makefile#3 integrate
.. //depot/projects/smpng/sys/modules/ti/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/ubsa/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/ubser/Makefile#3 integrate
.. //depot/projects/smpng/sys/modules/ucom/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/ucycom/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/uftdi/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/ugen/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/uhid/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/ukbd/Makefile#5 integrate
.. //depot/projects/smpng/sys/modules/ulpt/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/umct/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/umodem/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/ums/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/uplcom/Makefile#5 integrate
.. //depot/projects/smpng/sys/modules/urio/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/usb/Makefile#7 integrate
.. //depot/projects/smpng/sys/modules/uscanner/Makefile#5 integrate
.. //depot/projects/smpng/sys/modules/uvisor/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/uvscom/Makefile#5 integrate
.. //depot/projects/smpng/sys/modules/vkbd/Makefile#2 integrate
.. //depot/projects/smpng/sys/netgraph/ng_ether.c#19 integrate
.. //depot/projects/smpng/sys/netipx/ipx_input.c#10 integrate
.. //depot/projects/smpng/sys/netipx/ipx_pcb.c#13 integrate
.. //depot/projects/smpng/sys/netipx/ipx_pcb.h#5 integrate
.. //depot/projects/smpng/sys/netipx/ipx_usrreq.c#17 integrate
.. //depot/projects/smpng/sys/netipx/ipx_var.h#5 integrate
.. //depot/projects/smpng/sys/netipx/spx_usrreq.c#16 integrate
.. //depot/projects/smpng/sys/pci/agp_ali.c#11 integrate
.. //depot/projects/smpng/sys/pci/agp_intel.c#18 integrate
.. //depot/projects/smpng/sys/pci/agp_sis.c#11 integrate
.. //depot/projects/smpng/sys/pci/agp_via.c#14 integrate
.. //depot/projects/smpng/sys/powerpc/powerpc/pmap.c#50 integrate
.. //depot/projects/smpng/sys/sparc64/conf/GENERIC#51 integrate
.. //depot/projects/smpng/sys/sys/umtx.h#7 integrate
.. //depot/projects/smpng/sys/vm/vm_page.c#60 integrate
Differences ...
==== //depot/projects/smpng/sys/alpha/conf/GENERIC#45 (text+ko) ====
@@ -18,17 +18,17 @@
#
# For hardware specific information check HARDWARE.TXT
#
-# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.181 2004/11/09 22:23:34 wilko Exp $
+# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.182 2004/12/30 15:32:31 jhb Exp $
machine alpha
cpu EV4
cpu EV5
ident GENERIC
-#To statically compile in device wiring instead of /boot/device.hints
-#hints "GENERIC.hints"
+# To statically compile in device wiring instead of /boot/device.hints
+#hints "GENERIC.hints" # Default places to look for devices.
-makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols
+makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
# Platforms supported
options API_UP1000 # UP1000, UP1100 (Nautilus)
@@ -43,41 +43,44 @@
options DEC_KN300 # AlphaServer 4100 (Rawhide),
# AlphaServer 1200 (Tincup)
-#options SCHED_ULE #ULE scheduler
-options SCHED_4BSD #4BSD scheduler
-options PREEMPTION #Enable kernel thread preemption
-options INET #InterNETworking
-options INET6 #IPv6 communications protocols
-options FFS #Berkeley Fast Filesystem
-options SOFTUPDATES #Enable FFS soft updates support
-options UFS_ACL #Support for access control lists
-options UFS_DIRHASH #Improve performance on big directories
-options MD_ROOT #MD is a potential root device
-options NFSCLIENT #Network Filesystem Client
-options NFSSERVER #Network Filesystem Server
-options NFS_ROOT #NFS usable as root device
-options MSDOSFS #MSDOS Filesystem
-options CD9660 #ISO 9660 Filesystem
-options PROCFS #Process filesystem (requires PSEUDOFS)
-options PSEUDOFS #Pseudo-filesystem framework
-options GEOM_GPT #GUID Partition Tables.
-options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!]
-options COMPAT_FREEBSD4 #Compatible with FreeBSD4
-options SCSI_DELAY=5000 #Delay (in ms) before probing SCSI
-options KTRACE #ktrace(1) syscall trace support
-options SYSVSHM #SYSV-style shared memory
-options SYSVMSG #SYSV-style message queues
-options SYSVSEM #SYSV-style semaphores
-options _KPOSIX_PRIORITY_SCHEDULING #Posix P1003_1B real-time extensions
+#options SCHED_ULE # ULE scheduler
+options SCHED_4BSD # 4BSD scheduler
+options PREEMPTION # Enable kernel thread preemption
+options INET # InterNETworking
+options INET6 # IPv6 communications protocols
+options FFS # Berkeley Fast Filesystem
+options SOFTUPDATES # Enable FFS soft updates support
+options UFS_ACL # Support for access control lists
+options UFS_DIRHASH # Improve performance on big directories
+options MD_ROOT # MD is a potential root device
+options NFSCLIENT # Network Filesystem Client
+options NFSSERVER # Network Filesystem Server
+options NFS_ROOT # NFS usable as /, requires NFSCLIENT
+options MSDOSFS # MSDOS Filesystem
+options CD9660 # ISO 9660 Filesystem
+options PROCFS # Process filesystem (requires PSEUDOFS)
+options PSEUDOFS # Pseudo-filesystem framework
+options GEOM_GPT # GUID Partition Tables.
+options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]
+options COMPAT_FREEBSD4 # Compatible with FreeBSD4
+options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI
+options KTRACE # ktrace(1) support
+options SYSVSHM # SYSV-style shared memory
+options SYSVMSG # SYSV-style message queues
+options SYSVSEM # SYSV-style semaphores
+options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
+options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
+ # output. Adds ~128k to driver.
+options ADAPTIVE_GIANT # Giant mutex is adaptive.
# Debugging for use in -current
-options KDB #Enable kernel debugger support
-options DDB #Support DDB
-options GDB #Support remote GDB
-options INVARIANTS #Enable calls of extra sanity checking
-options INVARIANT_SUPPORT #Extra sanity checks of internal structures, required by INVARIANTS
-#options WITNESS #Enable checks to detect deadlocks and cycles
-options WITNESS_SKIPSPIN #Don't run witness on spinlocks for speed
+options KDB # Enable kernel debugger support.
+options DDB # Support DDB.
+options GDB # Support remote GDB.
+options INVARIANTS # Enable calls of extra sanity checking
+options INVARIANT_SUPPORT # Extra sanity checks of internal structures, required by INVARIANTS
+#options WITNESS # Enable checks to detect deadlocks and cycles
+options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed
# To make an SMP kernel, the next line is needed
options SMP # Symmetric MultiProcessor Kernel
@@ -157,8 +160,9 @@
device vx # 3Com 3c590, 3c595 (``Vortex'')
# PCI Ethernet NICs that use the common MII bus controller code.
+# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device miibus # MII bus support
-device dc # DEC/Intel 21143 and workalikes
+device dc # DEC/Intel 21143 and various workalikes
device fxp # Intel EtherExpress PRO/100B (82557, 82558)
device nge # NatSemi DP83820 gigabit ethernet
device pcn # AMD Am79C97x PCI 10/100 NICs
@@ -182,11 +186,11 @@
device pty # Pseudo-ttys (telnet etc)
device md # Memory "disks"
device gif # IPv6 and IPv4 tunneling
-device faith # IPv6-to-IPv4 relaying/(translation)
+device faith # IPv6-to-IPv4 relaying (translation)
# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
-device bpf #Berkeley packet filter
+device bpf # Berkeley packet filter
# USB support
device uhci # UHCI PCI->USB interface
@@ -196,13 +200,14 @@
device uhid # "Human Interface Devices"
device ukbd # Keyboard
device ulpt # Printer
-device umass # Disks/Mass storage - Requires scbus and da0
+device umass # Disks/Mass storage - Requires scbus and da
device ums # Mouse
-# USB Ethernet
+# USB Ethernet, requires miibus
device aue # ADMtek USB Ethernet
device axe # ASIX Electronics USB Ethernet
device cue # CATC USB Ethernet
device kue # Kawasaki LSI USB Ethernet
+device rue # RealTek RTL8150 USB Ethernet
# FireWire support
device firewire # FireWire bus code
==== //depot/projects/smpng/sys/amd64/conf/GENERIC#26 (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.426 2004/11/02 20:57:19 andre Exp $
+# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.427 2004/12/30 18:51:23 jhb Exp $
machine amd64
cpu HAMMER
@@ -53,7 +53,7 @@
options SYSVSHM # SYSV-style shared memory
options SYSVMSG # SYSV-style message queues
options SYSVSEM # SYSV-style semaphores
-options _KPOSIX_PRIORITY_SCHEDULING # Posix P1003_1B real-time extensions
+options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~128k to driver.
@@ -72,6 +72,7 @@
# Make an SMP-capable kernel by default
options SMP # Symmetric MultiProcessor Kernel
+
# Workarounds for some known-to-be-broken chipsets (nVidia nForce3-Pro150)
device atpic # 8259A compatability
options NO_MIXED_MODE # Don't penalize working chipsets
@@ -98,7 +99,7 @@
device ahd # AHA39320/29320 and onboard AIC79xx devices
device amd # AMD 53C974 (Tekram DC-390(T))
device isp # Qlogic family
-#device ispfw # Firmware for QLogic HBAs- normally a module
+#device ispfw # Firmware for QLogic HBAs- normally a module
device mpt # LSI-Logic MPT-Fusion
#device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (newer chipsets + those of `ncr')
==== //depot/projects/smpng/sys/conf/NOTES#88 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1290 2004/12/20 04:22:41 sam Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1291 2004/12/30 16:53:20 rwatson Exp $
#
# NOTES -- Lines that can be cut/pasted into kernel and hints configs.
#
@@ -423,7 +423,7 @@
options IPX #IPX/SPX communications protocols
options IPXIP #IPX in IP encapsulation (not available)
-#options NCP #NetWare Core protocol
+options NCP #NetWare Core protocol
options NETATALK #Appletalk communications protocols
options NETATALKDEBUG #Appletalk debugging
==== //depot/projects/smpng/sys/dev/usb/ehci.c#16 (text+ko) ====
@@ -65,7 +65,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/ehci.c,v 1.25 2004/12/18 01:20:18 julian Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/ehci.c,v 1.26 2004/12/29 01:21:18 julian Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -478,7 +478,8 @@
sqh->qh.qh_link =
htole32(sqh->physaddr | EHCI_LINK_QH);
sqh->qh.qh_curqtd = EHCI_NULL;
- sqh->next = NULL;
+ sqh->prev = sqh; /*It's a circular list.. */
+ sqh->next = sqh;
/* Fill the overlay qTD */
sqh->qh.qh_qtd.qtd_next = EHCI_NULL;
sqh->qh.qh_qtd.qtd_altnext = EHCI_NULL;
@@ -1490,6 +1491,8 @@
/*
* Add an ED to the schedule. Called at splusb().
+ * If in the async schedule, it will always have a next.
+ * If in the intr schedule it may not.
*/
void
ehci_add_qh(ehci_soft_qh_t *sqh, ehci_soft_qh_t *head)
@@ -1497,8 +1500,11 @@
SPLUSBCHECK;
sqh->next = head->next;
+ sqh->prev = head;
sqh->qh.qh_link = head->qh.qh_link;
head->next = sqh;
+ if (sqh->next)
+ sqh->next->prev = sqh;
head->qh.qh_link = htole32(sqh->physaddr | EHCI_LINK_QH);
#ifdef EHCI_DEBUG
@@ -1511,21 +1517,17 @@
/*
* Remove an ED from the schedule. Called at splusb().
+ * Will always have a 'next' if it's in the async list as it's circular.
*/
void
ehci_rem_qh(ehci_softc_t *sc, ehci_soft_qh_t *sqh, ehci_soft_qh_t *head)
{
- ehci_soft_qh_t *p;
-
SPLUSBCHECK;
/* XXX */
- for (p = head; p != NULL && p->next != sqh; p = p->next)
- ;
- if (p == NULL)
- panic("ehci_rem_qh: ED not found");
- p->next = sqh->next;
- p->qh.qh_link = sqh->qh.qh_link;
-
+ sqh->prev->qh.qh_link = sqh->qh.qh_link;
+ sqh->prev->next = sqh->next;
+ if (sqh->next)
+ sqh->next->prev = sqh->prev;
ehci_sync_hc(sc);
}
@@ -2226,6 +2228,7 @@
sc->sc_freeqhs = sqh->next;
memset(&sqh->qh, 0, sizeof(ehci_qh_t));
sqh->next = NULL;
+ sqh->prev = NULL;
return (sqh);
}
@@ -2484,7 +2487,6 @@
* have happened since the hardware runs concurrently.
* If the transaction has already happened we rely on the ordinary
* interrupt processing to process it.
- * XXX This is most probably wrong.
*/
void
ehci_abort_xfer(usbd_xfer_handle xfer, usbd_status status)
@@ -2493,11 +2495,12 @@
struct ehci_pipe *epipe = (struct ehci_pipe *)xfer->pipe;
ehci_softc_t *sc = (ehci_softc_t *)epipe->pipe.device->bus;
ehci_soft_qh_t *sqh = epipe->sqh;
- ehci_soft_qtd_t *sqtd;
- ehci_physaddr_t cur;
- u_int32_t qhstatus;
+ ehci_soft_qtd_t *sqtd, *snext, **psqtd;
+ ehci_physaddr_t cur, us, next;
int s;
int hit;
+ /* int count = 0; */
+ ehci_soft_qh_t *psqh;
DPRINTF(("ehci_abort_xfer: xfer=%p pipe=%p\n", xfer, epipe));
@@ -2516,27 +2519,29 @@
panic("ehci_abort_xfer: not in process context");
/*
- * Step 1: Make interrupt routine and hardware ignore xfer.
+ * Step 1: Make interrupt routine and timeouts ignore xfer.
*/
s = splusb();
xfer->status = status; /* make software ignore it */
usb_uncallout(xfer->timeout_handle, ehci_timeout, xfer);
usb_rem_task(epipe->pipe.device, &exfer->abort_task);
- qhstatus = sqh->qh.qh_qtd.qtd_status;
- sqh->qh.qh_qtd.qtd_status = qhstatus | htole32(EHCI_QTD_HALTED);
- for (sqtd = exfer->sqtdstart; ; sqtd = sqtd->nextqtd) {
- sqtd->qtd.qtd_status |= htole32(EHCI_QTD_HALTED);
- if (sqtd == exfer->sqtdend)
- break;
- }
splx(s);
/*
* Step 2: Wait until we know hardware has finished any possible
- * use of the xfer. Also make sure the soft interrupt routine
- * has run.
+ * use of the xfer. We do this by removing the entire
+ * queue from the async schedule and waiting for the doorbell.
+ * Nothing else should be touching the queue now.
+ */
+ psqh = sqh->prev;
+ ehci_rem_qh(sc, sqh, psqh);
+
+ /*
+ * Step 3: make sure the soft interrupt routine
+ * has run. This should remove any completed items off the queue.
+ * The hardware has no reference to completed items (TDs).
+ * It's safe to remove them at any time.
*/
- ehci_sync_hc(sc);
s = splusb();
#ifdef USB_USE_SOFTINTR
sc->sc_softwake = 1;
@@ -2545,33 +2550,89 @@
#ifdef USB_USE_SOFTINTR
tsleep(&sc->sc_softwake, PZERO, "ehciab", 0);
#endif /* USB_USE_SOFTINTR */
- splx(s);
/*
- * Step 3: Remove any vestiges of the xfer from the hardware.
+ * Step 4: Remove any vestiges of the xfer from the hardware.
* The complication here is that the hardware may have executed
- * beyond the xfer we're trying to abort. So as we're scanning
- * the TDs of this xfer we check if the hardware points to
- * any of them.
+ * into or even beyond the xfer we're trying to abort.
+ * So as we're scanning the TDs of this xfer we check if
+ * the hardware points to any of them.
+ *
+ * first we need to see if there are any transfers
+ * on this queue before the xfer we are aborting.. we need
+ * to update any pointers that point to us to point past
+ * the aborting xfer. (If there is something past us).
+ * Hardware and software.
*/
- s = splusb(); /* XXX why? */
cur = EHCI_LINK_ADDR(le32toh(sqh->qh.qh_curqtd));
hit = 0;
- for (sqtd = exfer->sqtdstart; ; sqtd = sqtd->nextqtd) {
- hit |= cur == sqtd->physaddr;
- if (sqtd == exfer->sqtdend)
- break;
+
+ /* If they initially point here. */
+ us = exfer->sqtdstart->physaddr;
+
+ /* We will change them to point here */
+ snext = exfer->sqtdend->nextqtd;
+ next = snext ? snext->physaddr : htole32(EHCI_NULL);
+
+ /*
+ * Now loop through any qTDs before us and keep track of the pointer
+ * that points to us for the end.
+ */
+ psqtd = &sqh->sqtd;
+ sqtd = sqh->sqtd;
+ while (sqtd && sqtd != exfer->sqtdstart) {
+ hit |= (cur == sqtd->physaddr);
+ if (EHCI_LINK_ADDR(le32toh(sqtd->qtd.qtd_next)) == us)
+ sqtd->qtd.qtd_next = next;
+ if (EHCI_LINK_ADDR(le32toh(sqtd->qtd.qtd_altnext)) == us)
+ sqtd->qtd.qtd_altnext = next;
+ psqtd = &sqtd->nextqtd;
+ sqtd = sqtd->nextqtd;
}
- sqtd = sqtd->nextqtd;
- /* Zap curqtd register if hardware pointed inside the xfer. */
- if (hit && sqtd != NULL) {
- DPRINTFN(1,("ehci_abort_xfer: cur=0x%08x\n", sqtd->physaddr));
- sqh->qh.qh_curqtd = htole32(sqtd->physaddr); /* unlink qTDs */
- sqh->qh.qh_qtd.qtd_status = qhstatus;
- } else {
- DPRINTFN(1,("ehci_abort_xfer: no hit\n"));
+ /* make the software pointer bypass us too */
+ *psqtd = exfer->sqtdend->nextqtd;
+
+ /*
+ * If we already saw the active one then we are pretty much done.
+ * We've done all the relinking we need to do.
+ */
+ if (!hit) {
+
+ /*
+ * Now reinitialise the QH to point to the next qTD
+ * (if there is one). We only need to do this if
+ * it was previously pointing to us.
+ * XXX Not quite sure what to do about the data toggle.
+ */
+ sqtd = exfer->sqtdstart;
+ for (sqtd = exfer->sqtdstart; ; sqtd = sqtd->nextqtd) {
+ if (cur == sqtd->physaddr) {
+ hit++;
+ }
+ /* count++; */
+ if (sqtd == exfer->sqtdend)
+ break;
+ }
+ sqtd = sqtd->nextqtd;
+ /*
+ * Only need to alter the QH if it was pointing at a qTD
+ * that we are removing.
+ */
+ if (hit) {
+ if (snext) {
+ ehci_set_qh_qtd(sqh, snext);
+ } else {
+
+ sqh->qh.qh_curqtd = 0; /* unlink qTDs */
+ sqh->qh.qh_qtd.qtd_status = 0;
+ sqh->qh.qh_qtd.qtd_next =
+ sqh->qh.qh_qtd.qtd_altnext
+ = htole32(EHCI_NULL);
+ DPRINTFN(1,("ehci_abort_xfer: no hit\n"));
+ }
+ }
}
-
+ ehci_add_qh(sqh, psqh);
/*
* Step 4: Execute callback.
*/
@@ -2580,6 +2641,7 @@
#endif
usb_transfer_complete(xfer);
+ /* printf("%s: %d TDs aborted\n", __func__, count); */
splx(s);
#undef exfer
}
==== //depot/projects/smpng/sys/dev/usb/ehci_pci.c#13 (text+ko) ====
@@ -36,7 +36,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/ehci_pci.c,v 1.14 2004/08/02 15:37:34 iedowse Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/ehci_pci.c,v 1.15 2004/12/28 22:17:10 jb Exp $");
/*
* USB Enhanced Host Controller Driver, a.k.a. USB 2.0 controller.
@@ -239,7 +239,7 @@
ehci_pci_detach(self);
return ENOMEM;
}
- device_set_ivars(sc->sc_bus.bdev, sc);
+ device_set_ivars(sc->sc_bus.bdev, &sc->sc_bus);
/* ehci_pci_match will never return NULL if ehci_pci_probe succeeded */
device_set_desc(sc->sc_bus.bdev, ehci_pci_match(self));
==== //depot/projects/smpng/sys/dev/usb/ehcivar.h#4 (text+ko) ====
@@ -1,5 +1,5 @@
/* $NetBSD: ehcivar.h,v 1.12 2001/12/31 12:16:57 augustss Exp $ */
-/* $FreeBSD: src/sys/dev/usb/ehcivar.h,v 1.5 2004/10/30 15:13:09 iedowse Exp $ */
+/* $FreeBSD: src/sys/dev/usb/ehcivar.h,v 1.6 2004/12/29 01:21:18 julian Exp $ */
/*
* Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -51,6 +51,7 @@
typedef struct ehci_soft_qh {
ehci_qh_t qh;
struct ehci_soft_qh *next;
+ struct ehci_soft_qh *prev;
struct ehci_soft_qtd *sqtd;
ehci_physaddr_t physaddr;
int islot; /* Interrupt list slot. */
==== //depot/projects/smpng/sys/dev/usb/ohci_pci.c#11 (text+ko) ====
@@ -36,7 +36,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/ohci_pci.c,v 1.40 2004/08/02 15:37:35 iedowse Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/ohci_pci.c,v 1.41 2004/12/28 22:17:10 jb Exp $");
/*
* USB Open Host Controller driver.
@@ -244,7 +244,7 @@
ohci_pci_detach(self);
return ENOMEM;
}
- device_set_ivars(sc->sc_bus.bdev, sc);
+ device_set_ivars(sc->sc_bus.bdev, &sc->sc_bus);
/* ohci_pci_match will never return NULL if ohci_pci_probe succeeded */
device_set_desc(sc->sc_bus.bdev, ohci_pci_match(self));
==== //depot/projects/smpng/sys/dev/usb/ugen.c#33 (text+ko) ====
@@ -8,7 +8,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/ugen.c,v 1.101 2004/12/22 17:31:44 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/ugen.c,v 1.102 2004/12/29 21:36:43 julian Exp $");
/*
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -1329,9 +1329,6 @@
case USB_SET_CONFIG:
if (!(flag & FWRITE))
return (EPERM);
-#if defined(__FreeBSD__)
- ugen_destroy_devnodes(sc);
-#endif
err = ugen_set_config(sc, *(int *)addr);
switch (err) {
case USBD_NORMAL_COMPLETION:
==== //depot/projects/smpng/sys/dev/usb/uhci_pci.c#12 (text+ko) ====
@@ -36,7 +36,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/uhci_pci.c,v 1.55 2004/10/13 14:51:42 le Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/uhci_pci.c,v 1.56 2004/12/28 22:17:10 jb Exp $");
/* Universal Host Controller Interface
*
@@ -297,7 +297,7 @@
uhci_pci_detach(self);
return ENOMEM;
}
- device_set_ivars(sc->sc_bus.bdev, sc);
+ device_set_ivars(sc->sc_bus.bdev, &sc->sc_bus);
/* uhci_pci_match must never return NULL if uhci_pci_probe succeeded */
device_set_desc(sc->sc_bus.bdev, uhci_pci_match(self));
==== //depot/projects/smpng/sys/dev/usb/usbdevs#69 (text+ko) ====
@@ -1,4 +1,4 @@
-$FreeBSD: src/sys/dev/usb/usbdevs,v 1.218 2004/12/27 06:58:05 imp Exp $
+$FreeBSD: src/sys/dev/usb/usbdevs,v 1.220 2004/12/29 06:21:41 imp Exp $
/* $NetBSD: usbdevs,v 1.388 2004/11/05 13:51:16 scw Exp $ */
/*
@@ -41,6 +41,11 @@
/*
* List of known USB vendors
*
+ * USB.org publishes a VID list of USB-IF member companies at
+ * http://www.usb.org/developers/tools
+ * Note that it does not show companies that have obtained a Vendor ID
+ * without becoming full members.
+ *
* Please note that these IDs do not do anything. Adding an ID here and
* regenerating the usbdevs.h and usbdevs_data.h only makes a symbolic name
* available to the source code and does not change any functionality, nor
@@ -1477,6 +1482,9 @@
product WESTERN EXTHDD 0x0400 External HDD
product WESTERN HUB 0x0500 USB HUB
+/* Windbond Electronics */
+product WINBOND UH104 0x5518 4-port USB Hub
+
/* Xirlink products */
product XIRLINK PCCAM 0x8080 IBM PC Camera
==== //depot/projects/smpng/sys/geom/raid3/g_raid3.c#11 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/geom/raid3/g_raid3.c,v 1.32 2004/12/25 19:17:47 pjd Exp $");
+__FBSDID("$FreeBSD: src/sys/geom/raid3/g_raid3.c,v 1.33 2004/12/28 21:52:45 pjd Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -1778,14 +1778,6 @@
G_RAID3_DEBUG(5, "%s: I'm here 1.", __func__);
continue;
}
-#if 1
- if (ep != NULL) {
- printf("The topology lock is already held.\n");
-#if 0
- tsleep(&ep, PRIBIO, "r3:hmm", hz * 3);
-#endif
- }
-#endif
/*
* Now I/O requests.
*/
@@ -1799,7 +1791,7 @@
* already held? Try again.
*/
mtx_unlock(&sc->sc_queue_mtx);
- tsleep(ep, PRIBIO, "r3:hmm1", hz / 5);
+ tsleep(ep, PRIBIO, "r3:top1", hz / 5);
continue;
}
if ((sc->sc_flags &
@@ -1879,7 +1871,7 @@
* We have some pending events, don't sleep now.
*/
G_RAID3_DEBUG(5, "%s: I'm here 7.", __func__);
- tsleep(ep, PRIBIO, "r3:hmm2", hz / 5);
+ tsleep(ep, PRIBIO, "r3:top2", hz / 5);
continue;
}
mtx_lock(&sc->sc_queue_mtx);
==== //depot/projects/smpng/sys/i386/conf/GENERIC#59 (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.420 2004/11/02 20:57:19 andre Exp $
+# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.421 2004/12/30 15:30:23 jhb Exp $
machine i386
cpu I486_CPU
@@ -71,9 +71,9 @@
options WITNESS # Enable checks to detect deadlocks and cycles
options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed
-# To make an SMP kernel, the next two are needed
-options SMP # Symmetric MultiProcessor Kernel
-device apic # I/O APIC
+# To make an SMP kernel, the next two lines are needed
+options SMP # Symmetric MultiProcessor Kernel
+device apic # I/O APIC
# Bus support. Do not remove isa, even if you have no isa slots
device isa
@@ -275,7 +275,7 @@
device ums # Mouse
device urio # Diamond Rio 500 MP3 player
device uscanner # Scanners
-# USB Ethernet, requires mii
+# USB Ethernet, requires miibus
device aue # ADMtek USB Ethernet
device axe # ASIX Electronics USB Ethernet
device cue # CATC USB Ethernet
==== //depot/projects/smpng/sys/kern/kern_umtx.c#15 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_umtx.c,v 1.24 2004/12/25 13:02:50 davidxu Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_umtx.c,v 1.25 2004/12/30 02:56:17 davidxu Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -608,53 +608,22 @@
}
static int
-do_unlock_and_wait(struct thread *td, struct umtx *umtx, long id, void *uaddr,
- struct timespec *abstime)
+do_wait(struct thread *td, struct umtx *umtx, long id, struct timespec *abstime)
{
struct umtx_q uq;
- intptr_t owner;
- intptr_t old;
struct timespec ts1, ts2;
struct timeval tv;
+ long tmp;
int timo, error = 0;
- if (umtx == uaddr)
- return (EINVAL);
-
- /*
- * Make sure we own this mtx.
- *
- * XXX Need a {fu,su}ptr this is not correct on arch where
- * sizeof(intptr_t) != sizeof(long).
- */
- if ((owner = fuword(&umtx->u_owner)) == -1)
- return (EFAULT);
-
- if ((owner & ~UMTX_CONTESTED) != id)
- return (EPERM);
-
- if ((error = umtxq_queue_me(td, uaddr, &uq)) != 0)
+ if ((error = umtxq_queue_me(td, umtx, &uq)) != 0)
return (error);
-
- old = casuptr((intptr_t *)&umtx->u_owner, id, UMTX_UNOWNED);
- if (old == -1) {
+ tmp = fuword(&umtx->u_owner);
+ if (tmp != id) {
umtxq_lock(&uq.uq_key);
umtxq_remove(&uq);
umtxq_unlock(&uq.uq_key);
- umtx_key_release(&uq.uq_key);
- return (EFAULT);
- }
- if (old != id) {
- error = do_unlock(td, umtx, id);
- if (error) {
- umtxq_lock(&uq.uq_key);
- umtxq_remove(&uq);
- umtxq_unlock(&uq.uq_key);
- umtx_key_release(&uq.uq_key);
- return (error);
- }
- }
- if (abstime == NULL) {
+ } else if (abstime == NULL) {
umtxq_lock(&uq.uq_key);
if (td->td_flags & TDF_UMTXQ)
error = umtxq_sleep(td, &uq.uq_key,
@@ -750,7 +719,7 @@
return do_lock(td, uap->umtx, uap->id, ts);
case UMTX_OP_UNLOCK:
return do_unlock(td, uap->umtx, uap->id);
- case UMTX_OP_UNLOCK_AND_WAIT:
+ case UMTX_OP_WAIT:
/* Allow a null timespec (wait forever). */
if (uap->uaddr2 == NULL)
ts = NULL;
@@ -763,10 +732,9 @@
return (EINVAL);
ts = &abstime;
}
- return do_unlock_and_wait(td, uap->umtx, uap->id,
- uap->uaddr, ts);
+ return do_wait(td, uap->umtx, uap->id, ts);
case UMTX_OP_WAKE:
- return do_wake(td, uap->uaddr, uap->id);
+ return do_wake(td, uap->umtx, uap->id);
default:
return (EINVAL);
}
==== //depot/projects/smpng/sys/kern/subr_witness.c#125 (text+ko) ====
@@ -82,7 +82,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/subr_witness.c,v 1.185 2004/12/27 10:47:08 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/subr_witness.c,v 1.186 2004/12/28 21:21:27 jhb Exp $");
#include "opt_ddb.h"
#include "opt_witness.h"
@@ -106,7 +106,7 @@
/* Define this to check for blessed mutexes */
#undef BLESSING
-#define WITNESS_COUNT 200
+#define WITNESS_COUNT 1024
#define WITNESS_CHILDCOUNT (WITNESS_COUNT * 4)
/*
* XXX: This is somewhat bogus, as we assume here that at most 1024 threads
@@ -191,7 +191,6 @@
static void witness_display(void(*)(const char *fmt, ...));
#endif
-MALLOC_DEFINE(M_WITNESS, "witness", "witness structure");
SYSCTL_NODE(_debug, OID_AUTO, witness, CTLFLAG_RW, 0, "Witness Locking");
/*
==== //depot/projects/smpng/sys/kern/sysv_msg.c#24 (text+ko) ====
@@ -18,7 +18,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/sysv_msg.c,v 1.54 2004/11/12 13:23:47 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/sysv_msg.c,v 1.55 2004/12/30 13:56:34 rwatson Exp $");
#include "opt_sysvipc.h"
@@ -132,6 +132,8 @@
TUNABLE_INT_FETCH("kern.ipc.msgssz", &msginfo.msgssz);
msginfo.msgmax = msginfo.msgseg * msginfo.msgssz;
TUNABLE_INT_FETCH("kern.ipc.msgmni", &msginfo.msgmni);
+ TUNABLE_INT_FETCH("kern.ipc.msgmnb", &msginfo.msgmnb);
+ TUNABLE_INT_FETCH("kern.ipc.msgtql", &msginfo.msgtql);
msgpool = malloc(msginfo.msgmax, M_MSG, M_WAITOK);
if (msgpool == NULL)
@@ -1136,8 +1138,8 @@
SYSCTL_DECL(_kern_ipc);
SYSCTL_INT(_kern_ipc, OID_AUTO, msgmax, CTLFLAG_RD, &msginfo.msgmax, 0, "");
SYSCTL_INT(_kern_ipc, OID_AUTO, msgmni, CTLFLAG_RDTUN, &msginfo.msgmni, 0, "");
-SYSCTL_INT(_kern_ipc, OID_AUTO, msgmnb, CTLFLAG_RD, &msginfo.msgmnb, 0, "");
-SYSCTL_INT(_kern_ipc, OID_AUTO, msgtql, CTLFLAG_RD, &msginfo.msgtql, 0, "");
+SYSCTL_INT(_kern_ipc, OID_AUTO, msgmnb, CTLFLAG_RDTUN, &msginfo.msgmnb, 0, "");
+SYSCTL_INT(_kern_ipc, OID_AUTO, msgtql, CTLFLAG_RDTUN, &msginfo.msgtql, 0, "");
SYSCTL_INT(_kern_ipc, OID_AUTO, msgssz, CTLFLAG_RDTUN, &msginfo.msgssz, 0, "");
SYSCTL_INT(_kern_ipc, OID_AUTO, msgseg, CTLFLAG_RDTUN, &msginfo.msgseg, 0, "");
SYSCTL_PROC(_kern_ipc, OID_AUTO, msqids, CTLFLAG_RD,
==== //depot/projects/smpng/sys/kern/vfs_cluster.c#36 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/vfs_cluster.c,v 1.160 2004/11/15 08:38:50 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/vfs_cluster.c,v 1.161 2004/12/29 04:49:10 alc Exp $");
#include "opt_debug_cluster.h"
@@ -453,7 +453,6 @@
TAILQ_INSERT_TAIL(&bp->b_cluster.cluster_head,
tbp, b_cluster.cluster_entry);
VM_OBJECT_LOCK(tbp->b_bufobj->bo_object);
- vm_page_lock_queues();
for (j = 0; j < tbp->b_npages; j += 1) {
vm_page_t m;
m = tbp->b_pages[j];
@@ -467,7 +466,6 @@
if ((m->valid & VM_PAGE_BITS_ALL) == VM_PAGE_BITS_ALL)
tbp->b_pages[j] = bogus_page;
}
- vm_page_unlock_queues();
VM_OBJECT_UNLOCK(tbp->b_bufobj->bo_object);
/*
* XXX shouldn't this be += size for both, like in
@@ -938,7 +936,6 @@
}
}
}
- vm_page_lock_queues();
for (j = 0; j < tbp->b_npages; j += 1) {
m = tbp->b_pages[j];
vm_page_io_start(m);
@@ -949,7 +946,6 @@
bp->b_npages++;
}
}
- vm_page_unlock_queues();
VM_OBJECT_UNLOCK(tbp->b_bufobj->bo_object);
}
bp->b_bcount += size;
==== //depot/projects/smpng/sys/modules/bktr/bktr/Makefile#5 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/modules/bktr/bktr/Makefile,v 1.6 2003/08/12 09:45:34 alex Exp $
+# $FreeBSD: src/sys/modules/bktr/bktr/Makefile,v 1.7 2004/12/29 08:43:14 imp Exp $
# Makefile for the bktr Brooktree Bt848/Bt878 PCI video capture device
@@ -7,7 +7,7 @@
KMOD= bktr
SRCS= bktr_core.c bktr_os.c bktr_audio.c bktr_tuner.c bktr_card.c msp34xx.c \
opt_devfs.h opt_bktr.h bus_if.h device_if.h \
- pci_if.h vnode_if.h
+ pci_if.h
opt_bktr.h:
echo "#define BKTR_FREEBSD_MODULE 1" > opt_bktr.h
==== //depot/projects/smpng/sys/modules/if_ppp/Makefile#5 (text+ko) ====
@@ -1,10 +1,10 @@
-# $FreeBSD: src/sys/modules/if_ppp/Makefile,v 1.32 2004/09/01 07:12:24 ru Exp $
+# $FreeBSD: src/sys/modules/if_ppp/Makefile,v 1.33 2004/12/29 08:45:48 imp Exp $
.PATH: ${.CURDIR}/../../net
KMOD= if_ppp
SRCS= if_ppp.c ppp_tty.c slcompress.c \
- opt_inet.h opt_ipx.h opt_mac.h opt_ppp.h vnode_if.h
+ opt_inet.h opt_ipx.h opt_mac.h opt_ppp.h
PPP_BSDCOMP?= 1 # 0/1
PPP_DEFLATE?= 1 # 0/1
==== //depot/projects/smpng/sys/modules/if_tun/Makefile#5 (text+ko) ====
@@ -1,10 +1,9 @@
-# $FreeBSD: src/sys/modules/if_tun/Makefile,v 1.27 2003/03/08 21:54:32 jlemon Exp $
+# $FreeBSD: src/sys/modules/if_tun/Makefile,v 1.28 2004/12/29 08:45:48 imp Exp $
.PATH: ${.CURDIR}/../../net
KMOD= if_tun
-SRCS= if_tun.c opt_atalk.h opt_inet.h opt_inet6.h opt_ipx.h opt_mac.h \
- vnode_if.h
+SRCS= if_tun.c opt_atalk.h opt_inet.h opt_inet6.h opt_ipx.h opt_mac.h
opt_atalk.h:
echo "#define NETATALK 1" > ${.TARGET}
==== //depot/projects/smpng/sys/modules/io/Makefile#2 (text+ko) ====
@@ -1,10 +1,10 @@
-# $FreeBSD: src/sys/modules/io/Makefile,v 1.1 2004/08/01 11:40:53 markm Exp $
+# $FreeBSD: src/sys/modules/io/Makefile,v 1.2 2004/12/29 08:44:03 imp Exp $
.PATH: ${.CURDIR}/../../dev/io
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list