From owner-p4-projects@FreeBSD.ORG Mon Jun 28 05:38:37 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id DF45716A4D0; Mon, 28 Jun 2004 05:38:36 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A381716A4CE for ; Mon, 28 Jun 2004 05:38:36 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9A92C43D1D for ; Mon, 28 Jun 2004 05:38:36 +0000 (GMT) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id i5S5cHbt036206 for ; Mon, 28 Jun 2004 05:38:17 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id i5S5cHjK036203 for perforce@freebsd.org; Mon, 28 Jun 2004 05:38:17 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Mon, 28 Jun 2004 05:38:17 GMT Message-Id: <200406280538.i5S5cHjK036203@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Subject: PERFORCE change 55979 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 Jun 2004 05:38:37 -0000 http://perforce.freebsd.org/chv.cgi?CH=55979 Change 55979 by rwatson@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 -__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 -__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 #include @@ -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 -__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 -__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 @@ -48,7 +48,6 @@ #include #include #include -#include #include #include @@ -58,6 +57,8 @@ #include #include +#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 @@ -45,7 +45,8 @@ #include #include #include -#include + +#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 @@ -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); }