PERFORCE change 55979 for review
Robert Watson
rwatson at FreeBSD.org
Sun Jun 27 22:38:37 PDT 2004
http://perforce.freebsd.org/chv.cgi?CH=55979
Change 55979 by rwatson at rwatson_tislabs on 2004/06/28 05:37:27
Integrate netperf_socket. Includes ip_divert fix from phk.
Affected files ...
.. //depot/projects/netperf_socket/sys/conf/files#33 integrate
.. //depot/projects/netperf_socket/sys/conf/kern.post.mk#8 integrate
.. //depot/projects/netperf_socket/sys/conf/kern.pre.mk#12 integrate
.. //depot/projects/netperf_socket/sys/dev/acpica/acpi.c#29 integrate
.. //depot/projects/netperf_socket/sys/dev/usb/Makefile.usbdevs#2 delete
.. //depot/projects/netperf_socket/sys/dev/usb/devlist2h.awk#3 delete
.. //depot/projects/netperf_socket/sys/dev/usb/usbdevs#15 integrate
.. //depot/projects/netperf_socket/sys/dev/usb/usbdevs.h#15 delete
.. //depot/projects/netperf_socket/sys/dev/usb/usbdevs_data.h#15 delete
.. //depot/projects/netperf_socket/sys/geom/geom_disk.c#5 integrate
.. //depot/projects/netperf_socket/sys/i386/acpica/acpi_machdep.c#7 integrate
.. //depot/projects/netperf_socket/sys/i386/i386/mem.c#6 integrate
.. //depot/projects/netperf_socket/sys/i386/include/float.h#4 integrate
.. //depot/projects/netperf_socket/sys/i386/include/proc.h#3 integrate
.. //depot/projects/netperf_socket/sys/kern/subr_bus.c#9 integrate
.. //depot/projects/netperf_socket/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c#8 integrate
.. //depot/projects/netperf_socket/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c#5 integrate
.. //depot/projects/netperf_socket/sys/netinet/ip_divert.c#10 integrate
.. //depot/projects/netperf_socket/sys/sparc64/include/bus.h#2 integrate
.. //depot/projects/netperf_socket/sys/sparc64/include/bus_private.h#2 integrate
.. //depot/projects/netperf_socket/sys/sparc64/sparc64/bus_machdep.c#4 integrate
.. //depot/projects/netperf_socket/sys/sparc64/sparc64/iommu.c#5 integrate
Differences ...
==== //depot/projects/netperf_socket/sys/conf/files#33 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.912 2004/06/27 02:36:33 rwatson Exp $
+# $FreeBSD: src/sys/conf/files,v 1.913 2004/06/27 20:16:56 imp Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -40,17 +40,17 @@
compile-with "CC=${CC} AWK=${AWK} sh $S/tools/emu10k1-mkalsa.sh $S/gnu/dev/sound/pci/emu10k1-alsa.h emu10k1-alsa%diked.h" \
no-obj no-implicit-rule before-depend \
clean "emu10k1-alsa%diked.h"
-miidevs.h standard \
+miidevs.h optional mii \
dependency "$S/tools/miidevs2h.awk $S/dev/mii/miidevs" \
compile-with "${AWK} -f $S/tools/miidevs2h.awk $S/dev/mii/miidevs" \
no-obj no-implicit-rule before-depend \
clean "miidevs.h"
-pccarddevs.h standard \
+pccarddevs.h optional pccard \
dependency "$S/tools/pccarddevs2h.awk $S/dev/pccard/pccarddevs" \
compile-with "${AWK} -f $S/tools/pccarddevs2h.awk $S/dev/pccard/pccarddevs" \
no-obj no-implicit-rule before-depend \
clean "pccarddevs.h"
-usbdevs.h standard \
+usbdevs.h optional usb \
dependency "$S/tools/usbdevs2h.awk $S/dev/usb/usbdevs" \
compile-with "${AWK} -f $S/tools/usbdevs2h.awk $S/dev/usb/usbdevs" \
no-obj no-implicit-rule before-depend \
==== //depot/projects/netperf_socket/sys/conf/kern.post.mk#8 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/kern.post.mk,v 1.67 2004/06/26 06:02:06 imp Exp $
+# $FreeBSD: src/sys/conf/kern.post.mk,v 1.68 2004/06/27 23:03:43 imp Exp $
# Part of a unified Makefile for building kernels. This part includes all
# the definitions that need to be after all the % directives except %RULES
@@ -130,17 +130,14 @@
if [ -f .depend ]; then mv .depend .olddep; fi
${MAKE} _kernel-depend
-# XXX this belongs elsewhere (inside GEN_CFILES if possible).
-GEN_M_CFILES= ${MFILES:T:S/.m$/.c/}
-
# The argument list can be very long, so use make -V and xargs to
# pass it to mkdep.
-_kernel-depend: assym.s vnode_if.h \
- ${BEFORE_DEPEND} ${CFILES} ${SYSTEM_CFILES} ${GEN_CFILES} \
- ${GEN_M_CFILES} ${SFILES} ${MFILES:T:S/.m$/.h/}
+_kernel-depend: assym.s vnode_if.h ${BEFORE_DEPEND} ${CFILES} \
+ ${SYSTEM_CFILES} ${GEN_CFILES} ${SFILES} \
+ ${MFILES:T:S/.m$/.h/}
if [ -f .olddep ]; then mv .olddep .depend; fi
rm -f .newdep
- ${MAKE} -V CFILES -V SYSTEM_CFILES -V GEN_CFILES -V GEN_M_CFILES | \
+ ${MAKE} -V CFILES -V SYSTEM_CFILES -V GEN_CFILES | \
MKDEP_CPP="${CC} -E" CC="${CC}" xargs mkdep -a -f .newdep ${CFLAGS}
${MAKE} -V SFILES | \
MKDEP_CPP="${CC} -E" xargs mkdep -a -f .newdep ${ASM_CFLAGS}
==== //depot/projects/netperf_socket/sys/conf/kern.pre.mk#12 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/kern.pre.mk,v 1.53 2004/06/13 17:29:06 mlaier Exp $
+# $FreeBSD: src/sys/conf/kern.pre.mk,v 1.54 2004/06/27 23:03:43 imp Exp $
# Part of a unified Makefile for building kernels. This part contains all
# of the definitions that need to be before %BEFORE_DEPEND.
@@ -117,7 +117,7 @@
NORMAL_LINT= ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC}
-GEN_CFILES= $S/$M/$M/genassym.c
+GEN_CFILES= $S/$M/$M/genassym.c ${MFILES:T:S/.m$/.c/}
SYSTEM_CFILES= config.c env.c hints.c majors.c vnode_if.c
SYSTEM_DEP= Makefile ${SYSTEM_OBJS}
SYSTEM_OBJS= locore.o ${MDOBJS} ${OBJS}
==== //depot/projects/netperf_socket/sys/dev/acpica/acpi.c#29 (text+ko) ====
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/acpica/acpi.c,v 1.166 2004/06/27 13:04:19 imp Exp $
+ * $FreeBSD: src/sys/dev/acpica/acpi.c,v 1.167 2004/06/28 03:36:37 imp Exp $
*/
#include "opt_acpi.h"
@@ -893,7 +893,7 @@
/* Copy the bus tag and handle from the pre-allocated resource. */
rman_set_bustag(res, rman_get_bustag(rle->res));
- rman_set_bushandle(res, rman_get_bushandle(res));
+ rman_set_bushandle(res, rman_get_start(res));
/* If requested, activate the resource using the parent's method. */
if (flags & RF_ACTIVE)
==== //depot/projects/netperf_socket/sys/dev/usb/usbdevs#15 (text+ko) ====
@@ -1,4 +1,4 @@
-$FreeBSD: src/sys/dev/usb/usbdevs,v 1.183 2004/06/24 05:05:56 jb Exp $
+$FreeBSD: src/sys/dev/usb/usbdevs,v 1.184 2004/06/27 17:27:04 alex Exp $
/*
* Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc.
@@ -600,7 +600,8 @@
product DALLAS J6502 0x4201 J-6502 speakers
/* Dell products */
-product DELL BC02 0x8000 Dell BC02 Bluetooth USB Adapter
+product DELL PORT 0x0058 Port Replicator
+product DELL BC02 0x8000 BC02 Bluetooth USB Adapter
/* Delorme Paublishing products */
product DELORME EARTHMATE 0x0100 Earthmate GPS
==== //depot/projects/netperf_socket/sys/geom/geom_disk.c#5 (text+ko) ====
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/geom/geom_disk.c,v 1.87 2004/05/30 18:04:06 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/geom/geom_disk.c,v 1.88 2004/06/27 20:53:20 phk Exp $");
#include "opt_geom.h"
@@ -404,7 +404,9 @@
g_cancel_event(dp);
dp->d_destroyed = 1;
- g_post_event(g_disk_destroy, dp, M_WAITOK, NULL);
+ if (dp->d_devstat != NULL)
+ devstat_remove_entry(dp->d_devstat);
+ g_post_event(g_disk_destroy, dp, M_WAITOK, NULL, NULL);
}
static void
==== //depot/projects/netperf_socket/sys/i386/acpica/acpi_machdep.c#7 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/acpica/acpi_machdep.c,v 1.22 2004/06/16 09:47:06 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/acpica/acpi_machdep.c,v 1.23 2004/06/28 02:38:20 imp Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -80,7 +80,7 @@
{
int state;
- state = 0xff; /* XXX unknown */
+ state = APM_UNKNOWN;
if (battp->state & ACPI_BATT_STAT_DISCHARG) {
if (battp->cap >= 50)
@@ -94,7 +94,7 @@
state = 3; /* charging */
/* If still unknown, determine it based on the battery capacity. */
- if (state == 0xff) {
+ if (state == APM_UNKNOWN) {
if (battp->cap >= 50)
state = 0; /* high */
else
@@ -137,18 +137,18 @@
aip->ai_major = 1;
aip->ai_minor = 2;
aip->ai_status = apm_softc.active;
- aip->ai_capabilities= 0xff00; /* XXX unknown */
+ aip->ai_capabilities= 0xff00; /* unknown */
if (acpi_acad_get_acline(&acline))
- aip->ai_acline = 0xff; /* unknown */
+ aip->ai_acline = APM_UNKNOWN; /* unknown */
else
aip->ai_acline = acline; /* on/off */
if (acpi_battery_get_battinfo(-1, &batt)) {
- aip->ai_batt_stat = 0xff; /* unknown */
- aip->ai_batt_life = 0xff; /* unknown */
- aip->ai_batt_time = -1; /* unknown */
- aip->ai_batteries = 0;
+ aip->ai_batt_stat = APM_UNKNOWN;
+ aip->ai_batt_life = APM_UNKNOWN;
+ aip->ai_batt_time = -1; /* unknown */
+ aip->ai_batteries = ~0U; /* unknown */
} else {
aip->ai_batt_stat = acpi_capm_convert_battstate(&batt);
aip->ai_batt_life = batt.cap;
@@ -184,7 +184,7 @@
app->ap_batt_time = (batt.min == -1) ? -1 : batt.min * 60;
if (acpi_acad_get_acline(&acline))
- app->ap_acline = 0xff; /* unknown */
+ app->ap_acline = APM_UNKNOWN;
else
app->ap_acline = acline; /* on/off */
==== //depot/projects/netperf_socket/sys/i386/i386/mem.c#6 (text+ko) ====
@@ -37,7 +37,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/mem.c,v 1.111 2004/06/16 09:47:07 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/mem.c,v 1.112 2004/06/28 03:16:32 imp Exp $");
/*
* Memory special file
@@ -98,6 +98,7 @@
{
switch (minor(dev)) {
case 14:
+ td->td_proc->p_md.md_iopl = 0;
td->td_frame->tf_eflags &= ~PSL_IOPL;
}
return (0);
@@ -125,6 +126,7 @@
if (error != 0)
return (error);
td->td_frame->tf_eflags |= PSL_IOPL;
+ td->td_proc->p_md.md_iopl = PSL_IOPL;
break;
}
return (0);
==== //depot/projects/netperf_socket/sys/i386/include/float.h#4 (text+ko) ====
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*
* from: @(#)float.h 7.1 (Berkeley) 5/8/90
- * $FreeBSD: src/sys/i386/include/float.h,v 1.12 2004/04/25 02:36:28 das Exp $
+ * $FreeBSD: src/sys/i386/include/float.h,v 1.13 2004/06/28 03:08:17 imp Exp $
*/
#ifndef _MACHINE_FLOAT_H_
@@ -62,7 +62,6 @@
#define DBL_MAX 1.7976931348623157E+308
#define DBL_MAX_10_EXP 308
-
#define LDBL_MANT_DIG 64
#define LDBL_EPSILON 1.0842021724855044340E-19L
#define LDBL_DIG 18
==== //depot/projects/netperf_socket/sys/i386/include/proc.h#3 (text+ko) ====
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*
* from: @(#)proc.h 7.1 (Berkeley) 5/15/91
- * $FreeBSD: src/sys/i386/include/proc.h,v 1.21 2004/04/07 20:46:05 imp Exp $
+ * $FreeBSD: src/sys/i386/include/proc.h,v 1.22 2004/06/28 03:16:32 imp Exp $
*/
#ifndef _MACHINE_PROC_H_
@@ -52,6 +52,7 @@
struct mdproc {
struct proc_ldt *md_ldt; /* (j) per-process ldt */
+ uint32_t md_iopl; /* process' iopl level */
};
#ifdef _KERNEL
==== //depot/projects/netperf_socket/sys/kern/subr_bus.c#9 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/subr_bus.c,v 1.150 2004/06/16 09:47:12 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/subr_bus.c,v 1.152 2004/06/28 03:40:23 imp Exp $");
#include "opt_bus.h"
==== //depot/projects/netperf_socket/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c#8 (text+ko) ====
@@ -26,7 +26,7 @@
* SUCH DAMAGE.
*
* $Id: ng_ubt.c,v 1.16 2003/10/10 19:15:06 max Exp $
- * $FreeBSD: src/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c,v 1.18 2004/06/26 13:24:29 le Exp $
+ * $FreeBSD: src/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c,v 1.19 2004/06/27 16:51:01 imp Exp $
*/
#include <sys/param.h>
@@ -48,7 +48,6 @@
#include <dev/usb/usbdi.h>
#include <dev/usb/usbdi_util.h>
#include <dev/usb/usbdivar.h>
-#include <dev/usb/usbdevs.h>
#include <netgraph/ng_message.h>
#include <netgraph/netgraph.h>
@@ -58,6 +57,8 @@
#include <netgraph/bluetooth/include/ng_ubt.h>
#include <netgraph/bluetooth/drivers/ubt/ng_ubt_var.h>
+#include "usbdevs.h"
+
/*
* USB methods
*/
==== //depot/projects/netperf_socket/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c#5 (text+ko) ====
@@ -26,7 +26,7 @@
* SUCH DAMAGE.
*
* $Id: ubtbcmfw.c,v 1.3 2003/10/10 19:15:08 max Exp $
- * $FreeBSD: src/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c,v 1.8 2004/06/17 17:16:51 phk Exp $
+ * $FreeBSD: src/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c,v 1.9 2004/06/27 16:51:01 imp Exp $
*/
#include <sys/param.h>
@@ -45,7 +45,8 @@
#include <dev/usb/usb.h>
#include <dev/usb/usbdi.h>
#include <dev/usb/usbdi_util.h>
-#include <dev/usb/usbdevs.h>
+
+#include "usbdevs.h"
/*
* Download firmware to BCM2033.
==== //depot/projects/netperf_socket/sys/netinet/ip_divert.c#10 (text+ko) ====
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/netinet/ip_divert.c,v 1.93 2004/06/26 19:10:38 rwatson Exp $
+ * $FreeBSD: src/sys/netinet/ip_divert.c,v 1.94 2004/06/27 21:54:34 phk Exp $
*/
#include "opt_inet.h"
@@ -232,8 +232,8 @@
if (sbappendaddr_locked(&sa->so_rcv,
(struct sockaddr *)&divsrc, m,
(struct mbuf *)0) == 0) {
+ SOCKBUF_UNLOCK(&sa->so_rcv);
sa = NULL; /* force mbuf reclaim below */
- SOCKBUF_UNLOCK(&sa->so_rcv);
} else
sorwakeup_locked(sa);
INP_UNLOCK(inp);
==== //depot/projects/netperf_socket/sys/sparc64/include/bus.h#2 (text+ko) ====
@@ -69,7 +69,7 @@
* and
* from: FreeBSD: src/sys/alpha/include/bus.h,v 1.9 2001/01/09
*
- * $FreeBSD: src/sys/sparc64/include/bus.h,v 1.32 2003/09/23 08:22:34 nyan Exp $
+ * $FreeBSD: src/sys/sparc64/include/bus.h,v 1.33 2004/06/28 03:49:13 scottl Exp $
*/
#ifndef _MACHINE_BUS_H_
@@ -1020,6 +1020,7 @@
int dt_map_count;
bus_dma_lock_t *dt_lockfunc;
void * *dt_lockfuncarg;
+ bus_dma_segment_t *dt_segments;
struct bus_dma_methods *dt_mt;
};
==== //depot/projects/netperf_socket/sys/sparc64/include/bus_private.h#2 (text+ko) ====
@@ -25,7 +25,7 @@
*
* from: FreeBSD: src/sys/i386/i386/busdma_machdep.c,v 1.25 2002/01/05
*
- * $FreeBSD: src/sys/sparc64/include/bus_private.h,v 1.6 2003/07/10 23:27:35 tmm Exp $
+ * $FreeBSD: src/sys/sparc64/include/bus_private.h,v 1.7 2004/06/28 04:04:43 scottl Exp $
*/
#ifndef _MACHINE_BUS_PRIVATE_H_
@@ -41,13 +41,6 @@
int sparc64_bus_mem_unmap(void *, bus_size_t);
bus_space_handle_t sparc64_fake_bustag(int, bus_addr_t, struct bus_space_tag *);
-/*
- * This is more or less arbitrary, except for the stack space consumed by
- * the segments array. Choose more than ((BUS_SPACE_MAXSIZE / PAGE_SIZE) + 1),
- * since in practice we could be map pages more than once.
- */
-#define BUS_DMAMAP_NSEGS 64
-
struct bus_dmamap_res {
struct resource *dr_res;
bus_size_t dr_used;
==== //depot/projects/netperf_socket/sys/sparc64/sparc64/bus_machdep.c#4 (text+ko) ====
@@ -97,7 +97,7 @@
* and
* from: FreeBSD: src/sys/i386/i386/busdma_machdep.c,v 1.24 2001/08/15
*
- * $FreeBSD: src/sys/sparc64/sparc64/bus_machdep.c,v 1.38 2004/04/07 05:00:01 imp Exp $
+ * $FreeBSD: src/sys/sparc64/sparc64/bus_machdep.c,v 1.39 2004/06/28 03:49:13 scottl Exp $
*/
#include <sys/param.h>
@@ -246,7 +246,9 @@
newtag->dt_lockfunc = dflt_lock;
newtag->dt_lockfuncarg = NULL;
}
-
+
+ newtag->dt_segments = NULL;
+
/* Take into account any restrictions imposed by our parent tag */
if (parent != NULL) {
newtag->dt_lowaddr = ulmin(parent->dt_lowaddr,
@@ -278,6 +280,8 @@
parent = dmat->dt_parent;
atomic_subtract_int(&dmat->dt_ref_count, 1);
if (dmat->dt_ref_count == 0) {
+ if (dmat->dt_segments != NULL)
+ free(dmat->dt_segments, M_DEVBUF);
free(dmat, M_DEVBUF);
/*
* Last reference count, so
@@ -297,6 +301,13 @@
sparc64_dma_alloc_map(bus_dma_tag_t dmat, bus_dmamap_t *mapp)
{
+ if (dmat->dt_segments == NULL) {
+ dmat->dt_segments = (bus_dma_segment_t *)malloc(
+ sizeof(bus_dma_segment_t) * dmat->dt_nsegments, M_DEVBUF,
+ M_NOWAIT);
+ if (dmat->dt_segments == NULL)
+ return (ENOMEM);
+ }
*mapp = malloc(sizeof(**mapp), M_DEVBUF, M_NOWAIT | M_ZERO);
if (*mapp == NULL)
return (ENOMEM);
@@ -336,16 +347,18 @@
* first indicates if this is the first invocation of this function.
*/
static int
-_nexus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dma_segment_t segs[],
- void *buf, bus_size_t buflen, struct thread *td, int flags,
- bus_addr_t *lastaddrp, int *segp, int first)
+_nexus_dmamap_load_buffer(bus_dma_tag_t dmat, void *buf, bus_size_t buflen,
+ struct thread *td, int flags, bus_addr_t *lastaddrp, int *segp, int first)
{
+ bus_dma_segment_t *segs;
bus_size_t sgsize;
bus_addr_t curaddr, lastaddr, baddr, bmask;
vm_offset_t vaddr = (vm_offset_t)buf;
int seg;
pmap_t pmap;
+ segs = dmat->dt_segments;
+
if (td != NULL)
pmap = vmspace_pmap(td->td_proc->p_vmspace);
else
@@ -430,19 +443,14 @@
bus_size_t buflen, bus_dmamap_callback_t *callback, void *callback_arg,
int flags)
{
-#ifdef __GNUC__
- bus_dma_segment_t dm_segments[dmat->dt_nsegments];
-#else
- bus_dma_segment_t dm_segments[BUS_DMAMAP_NSEGS];
-#endif
bus_addr_t lastaddr;
int error, nsegs;
- error = _nexus_dmamap_load_buffer(dmat, dm_segments, buf, buflen,
- NULL, flags, &lastaddr, &nsegs, 1);
+ error = _nexus_dmamap_load_buffer(dmat, buf, buflen, NULL, flags,
+ &lastaddr, &nsegs, 1);
if (error == 0) {
- (*callback)(callback_arg, dm_segments, nsegs + 1, 0);
+ (*callback)(callback_arg, dmat->dt_segments, nsegs + 1, 0);
map->dm_flags |= DMF_LOADED;
} else
(*callback)(callback_arg, NULL, 0, error);
@@ -457,11 +465,6 @@
nexus_dmamap_load_mbuf(bus_dma_tag_t dmat, bus_dmamap_t map, struct mbuf *m0,
bus_dmamap_callback2_t *callback, void *callback_arg, int flags)
{
-#ifdef __GNUC__
- bus_dma_segment_t dm_segments[dmat->dt_nsegments];
-#else
- bus_dma_segment_t dm_segments[BUS_DMAMAP_NSEGS];
-#endif
int nsegs, error;
M_ASSERTPKTHDR(m0);
@@ -476,8 +479,8 @@
for (m = m0; m != NULL && error == 0; m = m->m_next) {
if (m->m_len > 0) {
error = _nexus_dmamap_load_buffer(dmat,
- dm_segments, m->m_data, m->m_len, NULL,
- flags, &lastaddr, &nsegs, first);
+ m->m_data, m->m_len,NULL, flags, &lastaddr,
+ &nsegs, first);
first = 0;
}
}
@@ -487,10 +490,10 @@
if (error) {
/* force "no valid mappings" in callback */
- (*callback)(callback_arg, dm_segments, 0, 0, error);
+ (*callback)(callback_arg, dmat->dt_segments, 0, 0, error);
} else {
map->dm_flags |= DMF_LOADED;
- (*callback)(callback_arg, dm_segments, nsegs + 1,
+ (*callback)(callback_arg, dmat->dt_segments, nsegs + 1,
m0->m_pkthdr.len, error);
}
return (error);
@@ -504,11 +507,6 @@
bus_dmamap_callback2_t *callback, void *callback_arg, int flags)
{
bus_addr_t lastaddr;
-#ifdef __GNUC__
- bus_dma_segment_t dm_segments[dmat->dt_nsegments];
-#else
- bus_dma_segment_t dm_segments[BUS_DMAMAP_NSEGS];
-#endif
int nsegs, error, first, i;
bus_size_t resid;
struct iovec *iov;
@@ -536,8 +534,8 @@
caddr_t addr = (caddr_t) iov[i].iov_base;
if (minlen > 0) {
- error = _nexus_dmamap_load_buffer(dmat, dm_segments,
- addr, minlen, td, flags, &lastaddr, &nsegs, first);
+ error = _nexus_dmamap_load_buffer(dmat, addr, minlen,
+ td, flags, &lastaddr, &nsegs, first);
first = 0;
resid -= minlen;
@@ -546,10 +544,10 @@
if (error) {
/* force "no valid mappings" in callback */
- (*callback)(callback_arg, dm_segments, 0, 0, error);
+ (*callback)(callback_arg, dmat->dt_segments, 0, 0, error);
} else {
map->dm_flags |= DMF_LOADED;
- (*callback)(callback_arg, dm_segments, nsegs + 1,
+ (*callback)(callback_arg, dmat->dt_segments, nsegs + 1,
uio->uio_resid, error);
}
return (error);
@@ -677,6 +675,7 @@
0,
NULL,
NULL,
+ NULL,
&nexus_dma_methods,
};
==== //depot/projects/netperf_socket/sys/sparc64/sparc64/iommu.c#5 (text+ko) ====
@@ -97,7 +97,7 @@
* from: @(#)sbus.c 8.1 (Berkeley) 6/11/93
* from: NetBSD: iommu.c,v 1.42 2001/08/06 22:02:58 eeh Exp
*
- * $FreeBSD: src/sys/sparc64/sparc64/iommu.c,v 1.36 2004/04/25 00:08:15 tmm Exp $
+ * $FreeBSD: src/sys/sparc64/sparc64/iommu.c,v 1.38 2004/06/28 04:04:43 scottl Exp $
*/
/*
@@ -889,8 +889,8 @@
*/
static int
iommu_dvmamap_load_buffer(bus_dma_tag_t dt, struct iommu_state *is,
- bus_dmamap_t map, bus_dma_segment_t sgs[], void *buf,
- bus_size_t buflen, struct thread *td, int flags, int *segp, int align)
+ bus_dmamap_t map, void *buf, bus_size_t buflen, struct thread *td,
+ int flags, int *segp, int align)
{
bus_addr_t amask, dvmaddr;
bus_size_t sgsize, esize;
@@ -947,15 +947,14 @@
*/
if (!firstpg) {
esize = ulmin(sgsize,
- dt->dt_maxsegsz - sgs[sgcnt].ds_len);
- sgs[sgcnt].ds_len += esize;
+ dt->dt_maxsegsz - dt->dt_segments[sgcnt].ds_len);
+ dt->dt_segments[sgcnt].ds_len += esize;
sgsize -= esize;
dvmaddr += esize;
}
while (sgsize > 0) {
sgcnt++;
- if (sgcnt >= dt->dt_nsegments ||
- sgcnt >= BUS_DMAMAP_NSEGS)
+ if (sgcnt >= dt->dt_nsegments)
return (EFBIG);
/*
* No extra alignment here - the common practice in the
@@ -965,8 +964,8 @@
* that such tags have maxsegsize >= maxsize.
*/
esize = ulmin(sgsize, dt->dt_maxsegsz);
- sgs[sgcnt].ds_addr = dvmaddr;
- sgs[sgcnt].ds_len = esize;
+ dt->dt_segments[sgcnt].ds_addr = dvmaddr;
+ dt->dt_segments[sgcnt].ds_len = esize;
sgsize -= esize;
dvmaddr += esize;
}
@@ -983,11 +982,6 @@
int flags)
{
struct iommu_state *is = dt->dt_cookie;
-#ifdef __GNUC__
- bus_dma_segment_t sgs[dt->dt_nsegments];
-#else
- bus_dma_segment_t sgs[BUS_DMAMAP_NSEGS];
-#endif
int error, seg = -1;
if ((map->dm_flags & DMF_LOADED) != 0) {
@@ -1006,7 +1000,7 @@
iommu_map_remq(is, map);
IS_UNLOCK(is);
- error = iommu_dvmamap_load_buffer(dt, is, map, sgs, buf, buflen, NULL,
+ error = iommu_dvmamap_load_buffer(dt, is, map, buf, buflen, NULL,
flags, &seg, 1);
IS_LOCK(is);
@@ -1014,11 +1008,11 @@
if (error != 0) {
iommu_dvmamap_vunload(is, map);
IS_UNLOCK(is);
- (*cb)(cba, sgs, 0, error);
+ (*cb)(cba, dt->dt_segments, 0, error);
} else {
IS_UNLOCK(is);
map->dm_flags |= DMF_LOADED;
- (*cb)(cba, sgs, seg + 1, 0);
+ (*cb)(cba, dt->dt_segments, seg + 1, 0);
}
return (error);
@@ -1029,11 +1023,6 @@
bus_dmamap_callback2_t *cb, void *cba, int flags)
{
struct iommu_state *is = dt->dt_cookie;
-#ifdef __GNUC__
- bus_dma_segment_t sgs[dt->dt_nsegments];
-#else
- bus_dma_segment_t sgs[BUS_DMAMAP_NSEGS];
-#endif
struct mbuf *m;
int error = 0, first = 1, nsegs = -1;
@@ -1054,7 +1043,7 @@
for (m = m0; m != NULL && error == 0; m = m->m_next) {
if (m->m_len == 0)
continue;
- error = iommu_dvmamap_load_buffer(dt, is, map, sgs,
+ error = iommu_dvmamap_load_buffer(dt, is, map,
m->m_data, m->m_len, NULL, flags, &nsegs, first);
first = 0;
}
@@ -1067,11 +1056,11 @@
iommu_dvmamap_vunload(is, map);
IS_UNLOCK(is);
/* force "no valid mappings" in callback */
- (*cb)(cba, sgs, 0, 0, error);
+ (*cb)(cba, dt->dt_segments, 0, 0, error);
} else {
IS_UNLOCK(is);
map->dm_flags |= DMF_LOADED;
- (*cb)(cba, sgs, nsegs + 1, m0->m_pkthdr.len, 0);
+ (*cb)(cba, dt->dt_segments, nsegs + 1, m0->m_pkthdr.len, 0);
}
return (error);
}
@@ -1081,11 +1070,6 @@
bus_dmamap_callback2_t *cb, void *cba, int flags)
{
struct iommu_state *is = dt->dt_cookie;
-#ifdef __GNUC__
- bus_dma_segment_t sgs[dt->dt_nsegments];
-#else
- bus_dma_segment_t sgs[BUS_DMAMAP_NSEGS];
-#endif
struct iovec *iov;
struct thread *td = NULL;
bus_size_t minlen, resid;
@@ -1120,7 +1104,7 @@
if (minlen == 0)
continue;
- error = iommu_dvmamap_load_buffer(dt, is, map, sgs,
+ error = iommu_dvmamap_load_buffer(dt, is, map,
iov[i].iov_base, minlen, td, flags, &nsegs, first);
first = 0;
@@ -1133,11 +1117,11 @@
iommu_dvmamap_vunload(is, map);
IS_UNLOCK(is);
/* force "no valid mappings" in callback */
- (*cb)(cba, sgs, 0, 0, error);
+ (*cb)(cba, dt->dt_segments, 0, 0, error);
} else {
IS_UNLOCK(is);
map->dm_flags |= DMF_LOADED;
- (*cb)(cba, sgs, nsegs + 1, uio->uio_resid, 0);
+ (*cb)(cba, dt->dt_segments, nsegs + 1, uio->uio_resid, 0);
}
return (error);
}
More information about the p4-projects
mailing list