Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 8 Apr 2003 17:42:56 -0700 (PDT)
From:      Peter Wemm <peter@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 28583 for review
Message-ID:  <200304090042.h390gu9N015307@repoman.freebsd.org>

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

Change 28583 by peter@peter_daintree on 2003/04/08 17:42:27

	IFC @28572

Affected files ...

.. //depot/projects/hammer/lib/libutil/pw_util.c#4 integrate
.. //depot/projects/hammer/sys/dev/adlink/adlink.c#2 integrate
.. //depot/projects/hammer/sys/dev/ata/ata-raid.c#7 integrate
.. //depot/projects/hammer/sys/dev/fxp/if_fxp.c#11 integrate
.. //depot/projects/hammer/sys/i386/include/pmap.h#5 integrate
.. //depot/projects/hammer/sys/kern/uipc_cow.c#6 integrate
.. //depot/projects/hammer/sys/sparc64/conf/GENERIC#9 integrate

Differences ...

==== //depot/projects/hammer/lib/libutil/pw_util.c#4 (text+ko) ====

@@ -43,7 +43,7 @@
 static const char sccsid[] = "@(#)pw_util.c	8.3 (Berkeley) 4/2/94";
 #endif
 static const char rcsid[] =
-  "$FreeBSD: src/lib/libutil/pw_util.c,v 1.28 2003/03/17 02:12:55 das Exp $";
+  "$FreeBSD: src/lib/libutil/pw_util.c,v 1.29 2003/04/08 18:04:30 des Exp $";
 #endif /* not lint */
 
 /*
@@ -290,7 +290,6 @@
 	struct stat st1, st2;
 	const char *editor;
 	char *editcmd;
-	int editcmdlen;
 	int pstat;
 
 	if ((editor = getenv("EDITOR")) == NULL)
@@ -306,14 +305,8 @@
 			(void)setgid(getgid());
 			(void)setuid(getuid());
 		}
-		if ((editcmdlen = sysconf(_SC_ARG_MAX) - 6) <= 0 ||
-		    (editcmd = malloc(editcmdlen)) == NULL)
-			_exit(EXIT_FAILURE);
-		if (snprintf(editcmd, editcmdlen, "%s %s",
-		    editor, tempname) >= editcmdlen) {
-			free(editcmd);	/* pedantry */
+		if (asprintf(&editcmd, "exec %s %s", editor, tempname) == NULL)
 			_exit(EXIT_FAILURE);
-		}
 		errno = 0;
 		execl(_PATH_BSHELL, "sh", "-c", editcmd, NULL);
 		free(editcmd);
@@ -322,13 +315,16 @@
 		/* parent */
 		break;
 	}
+	setpgid(editpid, editpid);
+	tcsetpgrp(1, editpid);
 	for (;;) {
-		editpid = waitpid(editpid, &pstat, WUNTRACED);
-		if (editpid == -1) {
+		if (waitpid(editpid, &pstat, WUNTRACED) == -1) {
 			unlink(tempname);
 			return (-1);
 		} else if (WIFSTOPPED(pstat)) {
 			raise(WSTOPSIG(pstat));
+			tcsetpgrp(1, getpgid(editpid));
+			kill(editpid, SIGCONT);
 		} else if (WIFEXITED(pstat) && WEXITSTATUS(pstat) == 0) {
 			editpid = -1;
 			break;

==== //depot/projects/hammer/sys/dev/adlink/adlink.c#2 (text+ko) ====

@@ -26,13 +26,15 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/adlink/adlink.c,v 1.1 2003/04/04 18:53:04 phk Exp $
+ * $FreeBSD: src/sys/dev/adlink/adlink.c,v 1.2 2003/04/08 19:12:48 phk Exp $
  */
 
+#ifdef _KERNEL
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/malloc.h>
 #include <sys/kernel.h>
+#include <sys/kthread.h>
 #include <sys/conf.h>
 #include <sys/bus.h>
 #include <machine/bus.h>
@@ -44,17 +46,54 @@
 #include <vm/vm.h>
 #include <vm/pmap.h>
 
+#endif /* _KERNEL */
+
+#include <sys/ioccom.h>
+
+struct wave {
+	int			index;
+	int			period;
+	int			offset;
+	int			length;
+	int			avg;
+	off_t			mapvir;
+	int			flags;
+
+	int			npages;
+	void			**virtual;
+};
+
+#define ADLINK_SETWAVE		_IOWR('A', 232, struct wave)
+#define ADLINK_GETWAVE		_IOWR('A', 233, struct wave)
+
+#ifdef _KERNEL
+
+#define INTPERPAGE (PAGE_SIZE / sizeof(int))
+#define I16PERPAGE (PAGE_SIZE / sizeof(int16_t))
+
 /*
- * We sample one channel (= 16 bits) at 1 msps giving 2Mbyte/sec,
- * 50 pages will give us about 1/10 second buffering.
+ * Sample rate
+ */
+#define SPS	1250000
+
+/*
+ * We sample one channel (= 16 bits) at 1.25 msps giving 2.5Mbyte/sec,
+ * 100 pages will give us about 1/6 second buffering.
  */
-#define NRING	50
+#define NRING	100
 
-#define IN4(sc, offset) bus_space_read_4(sc->t_io, sc->h_io, offset)
+/*
+ * How many waves are we willing to entertain
+ */
+#define NWAVE	25
 
 struct info {
 	int			nring;
 	off_t			o_ring;
+	
+	int			ngri;
+	int			ppgri;
+	off_t			o_gri;
 };
 
 struct softc {
@@ -64,21 +103,145 @@
 	bus_space_tag_t		t0, t1;
 	bus_space_handle_t	h0, h1;
 	dev_t			dev;
+	off_t			mapvir;
 
+	struct proc		*procp;
+
 	struct info		*info;
 
+	struct wave		*wave[NWAVE];
+
 	int			idx;
 	void			*ring[NRING];
-	vm_paddr_t		phys[NRING];
+	vm_paddr_t		pring[NRING];
 	int			stat[NRING];
+
+	uint64_t		cnt;
+
+	u_char			flags[I16PERPAGE];
 };
 
+static void
+adlink_wave(struct softc *sc, struct wave *wp, int16_t *sp)
+{
+	int f, i, k, m, *ip;
+
+	f = 0;
+	for (i = 0; i < I16PERPAGE; ) {
+		k = (sc->cnt - wp->offset + i) % wp->period;
+		if (k >= wp->length) {
+			i += wp->period - k;
+			sp += wp->period - k;
+			continue;
+		}
+		m = k % INTPERPAGE;
+		ip = (int *)(wp->virtual[k / INTPERPAGE]) + m;
+		while (m < INTPERPAGE && i < I16PERPAGE && k < wp->length) {
+			if (sc->flags[i] >= wp->index)
+				*ip += (*sp * 8 - *ip) >> wp->avg;
+			if (wp->flags & 1)
+				sc->flags[i] = wp->index;
+			sp++;
+			ip++;
+			m++;
+			i++;
+			k++;
+		}
+	}
+}
+
+static void
+adlink_tickle(struct softc *sc)
+{
+
+	wakeup(sc);
+	tsleep(&sc->ring, PUSER | PCATCH, "tickle", 1);
+}
+
 static int
+adlink_new_wave(struct softc *sc, int index, int period, int offset, int length, int avg, int flags)
+{
+	struct wave *wp;
+	int l, i;
+	void **oldvir, **newvir;
+
+	if (index < 0 || index >= NWAVE)
+		return (EINVAL);
+	wp = sc->wave[index];
+	if (wp == NULL) {
+		adlink_tickle(sc);
+		wp = malloc(sizeof *wp, M_DEVBUF, M_WAITOK | M_ZERO);
+	}
+	l = howmany(length, INTPERPAGE);
+	/* Setting a high average here to neuter the realtime bits */
+	wp->avg = 31;
+	if (wp->npages < l) {
+		oldvir = wp->virtual;
+		adlink_tickle(sc);
+		newvir = malloc(sizeof(void *) * l, M_DEVBUF, M_WAITOK | M_ZERO);
+		if (wp->npages > 0) {
+			adlink_tickle(sc);
+			bcopy(oldvir, newvir, wp->npages * sizeof(void *));
+		}
+		for (i = wp->npages; i < l; i++) {
+			adlink_tickle(sc);
+			newvir[i] = malloc(PAGE_SIZE, M_DEVBUF, M_WAITOK);
+		}
+		wp->virtual = newvir;
+		wp->npages = l;
+		wp->mapvir = sc->mapvir;
+		sc->mapvir += l * PAGE_SIZE;
+	} else {
+		oldvir = NULL;
+	}
+	wp->index = index;
+	wp->period = period;
+	wp->offset = offset;
+	wp->length = length;
+	wp->flags = flags;
+	
+	for (i = 0; i < l; i++) {
+		adlink_tickle(sc);
+		bzero(wp->virtual[i], PAGE_SIZE);
+	}
+	wp->avg = avg;
+	sc->wave[index] = wp;
+	printf("Wave[%d] {period %d, offset %d, length %d, avg %d, flags %x}\n",
+	    wp->index, wp->period, wp->offset, wp->length, wp->avg, wp->flags);
+	free(oldvir, M_DEVBUF);
+	return (0);
+}
+
+static void
+adlink_loran(void *arg)
+{
+	struct softc *sc;
+	int idx, i;
+
+	sc = arg;
+	idx = 0;
+	for (;;) {
+		while (sc->stat[idx] == 0)
+			msleep(sc, NULL, PRIBIO, "loran", 1);
+		memset(sc->flags, NWAVE, sizeof sc->flags);
+		for (i = 0; i < NWAVE; i++) {
+			if (sc->wave[i] != NULL)
+				adlink_wave(sc, sc->wave[i], sc->ring[idx]);
+		}
+		sc->cnt += I16PERPAGE;
+		sc->stat[idx] = 0;
+		idx++;
+		idx %= NRING;
+	}
+	kthread_exit(0);
+}
+
+static int
 adlink_open(dev_t dev, int oflags, int devtype, struct thread *td)
 {
 	static int once;
 	struct softc *sc;
-	int i;
+	int i, error;
 	uint32_t u;
 
 	if (once)
@@ -88,49 +251,114 @@
 	sc = dev->si_drv1;
 	sc->info = malloc(PAGE_SIZE, M_DEVBUF, M_ZERO | M_WAITOK);
 	sc->info->nring = NRING;
+
 	sc->info->o_ring = PAGE_SIZE;
 	for (i = 0; i < NRING; i++) {
 		sc->ring[i] = malloc(PAGE_SIZE, M_DEVBUF, M_ZERO | M_WAITOK);
-		sc->phys[i] = vtophys(sc->ring[i]);
+		sc->pring[i] = vtophys(sc->ring[i]);
 	}
 
+	error = adlink_new_wave(sc, NWAVE - 1, SPS, 0, SPS, 7, 0);
+	if (error)
+		return (error);
+
+	error = kthread_create(adlink_loran, sc, &sc->procp,
+	    0, 0, "adlink%d", device_get_unit(sc->device));
+	if (error)
+		return (error);
+
+	/* Enable interrupts on write complete */
 	bus_space_write_4(sc->t0, sc->h0, 0x38, 0x00004000);
+
+	/* Sample CH0 only */
 	bus_space_write_4(sc->t1, sc->h1, 0x00, 1);
-	bus_space_write_4(sc->t1, sc->h1, 0x04, 10);
+
+	/* Divide clock by ten */
+	bus_space_write_4(sc->t1, sc->h1, 0x04, 4);
+
+	/* Software trigger mode: software */
 	bus_space_write_4(sc->t1, sc->h1, 0x08, 0);
+
+	/* Trigger level zero */
 	bus_space_write_4(sc->t1, sc->h1, 0x0c, 0);
+
+	/* Trigger source CH0 (not used) */
 	bus_space_write_4(sc->t1, sc->h1, 0x10, 0);
+
+	/* Fifo control/status: flush */
 	bus_space_write_4(sc->t1, sc->h1, 0x18, 3);
+
+	/* Clock source: external sine */
 	bus_space_write_4(sc->t1, sc->h1, 0x20, 2);
 
-	bus_space_write_4(sc->t0, sc->h0, 0x24, sc->phys[i]);
+	/* Set up Write DMA */
+	bus_space_write_4(sc->t0, sc->h0, 0x24, sc->pring[i]);
 	bus_space_write_4(sc->t0, sc->h0, 0x28, PAGE_SIZE);
-
 	u = bus_space_read_4(sc->t0, sc->h0, 0x3c);
 	bus_space_write_4(sc->t0, sc->h0, 0x3c, u | 0x00000600);
 
+	/* Acquisition Enable Register: go! */
 	bus_space_write_4(sc->t1, sc->h1, 0x1c, 1);
 	return (0);
 }
 
 static int
+adlink_ioctl(dev_t dev, u_long cmd, caddr_t data, int fflag, struct thread *td)
+{
+	struct softc *sc;
+	struct wave *wp;
+	int i, error;
+	
+	sc = dev->si_drv1;
+	wp = (struct wave *)data;
+	i = wp->index;
+	if (i < 0 || i >= NWAVE)
+		return (EINVAL);
+	if (cmd == ADLINK_GETWAVE) {
+		if (sc->wave[i] == NULL)
+			return (ENOENT);
+		bcopy(sc->wave[i], wp, sizeof(*wp));
+		return (0);
+	}
+	if (cmd == ADLINK_SETWAVE) {
+		error = adlink_new_wave(sc,
+			i,
+			wp->period,
+			wp->offset,
+			wp->length,
+			wp->avg,
+			wp->flags);
+		if (error)
+			return (error);
+		bcopy(sc->wave[i], wp, sizeof(*wp));
+		return (0);
+	}
+	return (ENOIOCTL);
+}
+
+static int
 adlink_mmap(dev_t dev, vm_offset_t offset, vm_paddr_t *paddr, int nprot)
 {
-	int i;
 	struct softc *sc;
+	struct wave *wp;
+	int i, j;
 
 	sc = dev->si_drv1;
 	if (nprot != VM_PROT_READ)
 		return (-1);
-	if (offset == 0) {
-		*paddr = vtophys(sc->info);
+	for (i = 0; i < NWAVE; i++) {
+		if (sc->wave[i] == NULL)
+			continue;
+		wp = sc->wave[i];
+		if (offset < wp->mapvir)
+			continue;
+		j = (offset - wp->mapvir) / PAGE_SIZE;
+		if (j >= wp->npages)
+			continue;
+		*paddr = vtophys(wp->virtual[j]);
 		return (0);
 	}
-	i = (offset - sc->info->o_ring) / PAGE_SIZE;
-	if (i >= NRING)
-		return (-1);
-	*paddr = vtophys(sc->ring[i]);
-	return (0);
+	return (-1);
 }
 
 static void
@@ -138,7 +366,7 @@
 {
 	struct softc *sc;
 	uint32_t u;
-	int i;
+	int i, j;
 
 	sc = arg;
 	u = bus_space_read_4(sc->t0, sc->h0, 0x38);
@@ -146,16 +374,27 @@
 		return;
 	bus_space_write_4(sc->t0, sc->h0, 0x38, u | 0x003f4000);
 
-	sc->stat[sc->idx] = 1;
-	i = (++sc->idx) % NRING;
+	j = sc->idx;
+	sc->stat[j] = 1;
+	i = (j + 1) % NRING;
 	sc->idx = i;
-	bus_space_write_4(sc->t0, sc->h0, 0x24, sc->phys[i]);
+	u = bus_space_read_4(sc->t1, sc->h1, 0x18);
+	if (u & 1) {
+		printf("adlink FIFO overrun\n");
+		return;
+	}
+	bus_space_write_4(sc->t0, sc->h0, 0x24, sc->pring[i]);
 	bus_space_write_4(sc->t0, sc->h0, 0x28, PAGE_SIZE);
+	wakeup(sc);
+	if (sc->stat[i]) {
+		printf("adlink page busy\n");
+	}
 }
 
 static struct cdevsw adlink_cdevsw = {
 	.d_open =	adlink_open,
 	.d_close =	nullclose,
+	.d_ioctl =	adlink_ioctl,
 	.d_mmap =	adlink_mmap,
 	.d_name =	"adlink",
 };
@@ -182,6 +421,10 @@
 	bzero(sc, sizeof *sc);
 	sc->device = self;
 
+	/*
+	 * This is the PCI mapped registers of the AMCC 9535 "matchmaker"
+	 * chip.
+	 */
 	rid = 0x10;
 	sc->r0 = bus_alloc_resource(self, SYS_RES_IOPORT, &rid,
 	    0, ~0, 1, RF_ACTIVE);
@@ -191,6 +434,10 @@
 	sc->h0 = rman_get_bushandle(sc->r0);
 	printf("Res0 %x %x\n", sc->t0, sc->h0);
 
+	/*
+	 * This is the PCI mapped registers of the ADC hardware, they
+	 * are described in the manual which comes with the card.
+	 */
 	rid = 0x14;
 	sc->r1 =  bus_alloc_resource(self, SYS_RES_IOPORT, &rid, 
             0, ~0, 1, RF_ACTIVE);
@@ -206,8 +453,13 @@
 	if (sc->ri == NULL)
 		return (ENODEV);
 
-	i = bus_setup_intr(self, sc->ri, INTR_TYPE_MISC,
+	i = bus_setup_intr(self, sc->ri, INTR_MPSAFE | INTR_TYPE_MISC | INTR_FAST,
 	    adlink_intr, sc, &sc->intrhand);
+	if (i) {
+		printf("adlink: Couldn't get FAST intr\n");
+		i = bus_setup_intr(self, sc->ri, INTR_TYPE_MISC,
+		    adlink_intr, sc, &sc->intrhand);
+	}
 
 	if (i)
 		return (ENODEV);
@@ -236,3 +488,4 @@
 };
 
 DRIVER_MODULE(adlink, pci, adlink_driver, adlink_devclass, 0, 0);
+#endif /* _KERNEL */

==== //depot/projects/hammer/sys/dev/ata/ata-raid.c#7 (text+ko) ====

@@ -25,7 +25,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/sys/dev/ata/ata-raid.c,v 1.60 2003/04/08 07:48:52 sos Exp $
+ * $FreeBSD: src/sys/dev/ata/ata-raid.c,v 1.61 2003/04/08 18:01:30 sos Exp $
  */
 
 #include "opt_ata.h"
@@ -1457,7 +1457,7 @@
     printf("heads		%d\n", config->heads);
     printf("sectors		%d\n", config->sectors);
     printf("cylinders	%d\n", config->cylinders);
-    printf("total_sectors	%lld\n", config->total_sectors);
+    printf("total_sectors	%lld\n", (long long)config->total_sectors);
     printf("interleave	%d\n", config->interleave);
     printf("reserved	%d\n", config->reserved);
     printf("offset		%d\n", config->offset);
@@ -1465,6 +1465,6 @@
 	printf("disk %d:	flags = 0x%02x %b\n", i, config->disks[i].flags, config->disks[i].flags, "\20\4ONLINE\3SPARE\2ASSIGNED\1PRESENT\n");
 	if (config->disks[i].device)
 	    printf("	%s\n", config->disks[i].device->name);
-	printf("	sectors	%lld\n", config->disks[i].disk_sectors);
+	printf("	sectors	%lld\n", (long long)config->disks[i].disk_sectors);
     }
 }

==== //depot/projects/hammer/sys/dev/fxp/if_fxp.c#11 (text+ko) ====

@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/fxp/if_fxp.c,v 1.164 2003/04/08 17:21:15 mux Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/fxp/if_fxp.c,v 1.166 2003/04/08 18:56:45 mux Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -223,8 +223,9 @@
 static int		sysctl_hw_fxp_int_delay(SYSCTL_HANDLER_ARGS);
 static __inline void 	fxp_scb_wait(struct fxp_softc *sc);
 static __inline void	fxp_scb_cmd(struct fxp_softc *sc, int cmd);
-static __inline void	fxp_dma_wait(volatile u_int16_t *status,
-			    struct fxp_softc *sc);
+static __inline void	fxp_dma_wait(struct fxp_softc *sc,
+    			    volatile u_int16_t *status, bus_dma_tag_t dmat,
+			    bus_dmamap_t map);
 
 static device_method_t fxp_methods[] = {
 	/* Device interface */
@@ -288,12 +289,16 @@
 }
 
 static __inline void
-fxp_dma_wait(volatile u_int16_t *status, struct fxp_softc *sc)
+fxp_dma_wait(struct fxp_softc *sc, volatile u_int16_t *status,
+    bus_dma_tag_t dmat, bus_dmamap_t map)
 {
 	int i = 10000;
 
-	while (!(le16toh(*status) & FXP_CB_STATUS_C) && --i)
+	bus_dmamap_sync(dmat, map, BUS_DMASYNC_POSTREAD);
+	while (!(le16toh(*status) & FXP_CB_STATUS_C) && --i) {
 		DELAY(2);
+		bus_dmamap_sync(dmat, map, BUS_DMASYNC_POSTREAD);
+	}
 	if (i == 0)
 		device_printf(sc->dev, "DMA timeout\n");
 }
@@ -1383,8 +1388,10 @@
 		 * granularities, we must prevent the card from DMA'ing
 		 * up the status while we update the command field.
 		 * This could cause us to overwrite the completion status.
+		 * XXX This is probably bogus and we're _not_ looking
+		 * for atomicity here.
 		 */
-		atomic_clear_short(&sc->fxp_desc.tx_last->tx_cb->cb_command,
+		atomic_clear_16(&sc->fxp_desc.tx_last->tx_cb->cb_command,
 		    htole16(FXP_CB_COMMAND_S));
 #else
 		sc->fxp_desc.tx_last->tx_cb->cb_command &=
@@ -1902,7 +1909,7 @@
 		CSR_WRITE_4(sc, FXP_CSR_SCB_GENERAL, sc->mcs_addr);
 		fxp_scb_cmd(sc, FXP_SCB_COMMAND_CU_START);
 		/* ...and wait for it to complete. */
-		fxp_dma_wait(&mcsp->cb_status, sc);
+		fxp_dma_wait(sc, &mcsp->cb_status, sc->mcs_tag, sc->mcs_map);
 		bus_dmamap_sync(sc->mcs_tag, sc->mcs_map,
 		    BUS_DMASYNC_POSTWRITE);
 	}
@@ -2014,7 +2021,7 @@
 	CSR_WRITE_4(sc, FXP_CSR_SCB_GENERAL, sc->fxp_desc.cbl_addr);
 	fxp_scb_cmd(sc, FXP_SCB_COMMAND_CU_START);
 	/* ...and wait for it to complete. */
-	fxp_dma_wait(&cbp->cb_status, sc);
+	fxp_dma_wait(sc, &cbp->cb_status, sc->cbl_tag, sc->cbl_map);
 	bus_dmamap_sync(sc->cbl_tag, sc->cbl_map, BUS_DMASYNC_POSTWRITE);
 
 	/*
@@ -2035,7 +2042,7 @@
 	bus_dmamap_sync(sc->cbl_tag, sc->cbl_map, BUS_DMASYNC_PREWRITE);
 	fxp_scb_cmd(sc, FXP_SCB_COMMAND_CU_START);
 	/* ...and wait for it to complete. */
-	fxp_dma_wait(&cb_ias->cb_status, sc);
+	fxp_dma_wait(sc, &cb_ias->cb_status, sc->cbl_tag, sc->cbl_map);
 	bus_dmamap_sync(sc->cbl_tag, sc->cbl_map, BUS_DMASYNC_POSTWRITE);
 
 	/*
@@ -2553,7 +2560,7 @@
 	CSR_WRITE_4(sc, FXP_CSR_SCB_GENERAL, sc->fxp_desc.cbl_addr);
 	fxp_scb_cmd(sc, FXP_SCB_COMMAND_CU_START);
 	/* ...and wait for it to complete. */
-	fxp_dma_wait(&cbp->cb_status, sc);
+	fxp_dma_wait(sc, &cbp->cb_status, sc->cbl_tag, sc->cbl_map);
 	bus_dmamap_sync(sc->cbl_tag, sc->cbl_map, BUS_DMASYNC_POSTWRITE);
 	device_printf(sc->dev,
 	    "Microcode loaded, int_delay: %d usec  bundle_max: %d\n",

==== //depot/projects/hammer/sys/i386/include/pmap.h#5 (text+ko) ====

@@ -42,7 +42,7 @@
  *
  *	from: hp300: @(#)pmap.h	7.2 (Berkeley) 12/16/90
  *	from: @(#)pmap.h	7.4 (Berkeley) 5/12/91
- * $FreeBSD: src/sys/i386/include/pmap.h,v 1.97 2003/04/07 14:27:19 jake Exp $
+ * $FreeBSD: src/sys/i386/include/pmap.h,v 1.98 2003/04/08 18:22:41 jake Exp $
  */
 
 #ifndef _MACHINE_PMAP_H_
@@ -195,7 +195,7 @@
 {
 	vm_paddr_t pa;
 
-	if ((pa = (vm_offset_t) PTD[va >> PDRSHIFT]) & PG_PS) {
+	if ((pa = PTD[va >> PDRSHIFT]) & PG_PS) {
 		pa = (pa & ~(NBPDR - 1)) | (va & (NBPDR - 1));
 	} else {
 		pa = *vtopte(va);

==== //depot/projects/hammer/sys/kern/uipc_cow.c#6 (text+ko) ====

@@ -29,7 +29,7 @@
  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
  *
- * $FreeBSD: src/sys/kern/uipc_cow.c,v 1.12 2003/03/29 06:14:14 alc Exp $
+ * $FreeBSD: src/sys/kern/uipc_cow.c,v 1.13 2003/04/08 18:24:28 alc Exp $
  */
 /*
  * This is a set of routines for enabling and disabling copy on write
@@ -52,13 +52,6 @@
 #include <vm/vm_map.h>
 #include <vm/vm_page.h>
 #include <vm/vm_object.h>
-#if 0
-#include <vm/vm_pager.h>
-#include <vm/vm_kern.h>
-#include <vm/vm_extern.h>
-#include <vm/vm_zone.h>
-#include <vm/swap_pager.h>
-#endif
 
 
 struct netsend_cow_stats {
@@ -111,7 +104,7 @@
 	vm_offset_t uva;
 	int s;
 
-	vmspace = curproc->p_vmspace;;
+	vmspace = curproc->p_vmspace;
 	map = &vmspace->vm_map;
 	uva = (vm_offset_t) uio->uio_iov->iov_base;
 

==== //depot/projects/hammer/sys/sparc64/conf/GENERIC#9 (text+ko) ====

@@ -18,7 +18,7 @@
 #
 # For hardware specific information check HARDWARE.TXT
 #
-# $FreeBSD: src/sys/sparc64/conf/GENERIC,v 1.51 2003/03/22 14:18:23 ru Exp $
+# $FreeBSD: src/sys/sparc64/conf/GENERIC,v 1.52 2003/04/08 20:55:30 mux Exp $
 
 machine		sparc64
 cpu		SUN4U
@@ -150,7 +150,7 @@
 # PCI Ethernet NICs that use the common MII bus controller code.
 device		miibus		# MII bus support
 #device		dc		# DEC/Intel 21143 and workalikes
-#device		fxp		# Intel EtherExpress PRO/100B (82557, 82558)
+device		fxp		# Intel EtherExpress PRO/100B (82557, 82558)
 device		gem		# Sun GEM/Sun ERI/Apple GMAC
 device		hme		# Sun HME (Happy Meal Ethernet)
 #device		pcn		# AMD Am79C97x PCI 10/100 NICs



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