PERFORCE change 40167 for review
Sam Leffler
sam at FreeBSD.org
Wed Oct 22 09:05:48 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=40167
Change 40167 by sam at sam_ebb on 2003/10/22 09:05:25
IFC @ 40166
Affected files ...
.. //depot/projects/netperf/sys/amd64/amd64/amd64_mem.c#3 integrate
.. //depot/projects/netperf/sys/amd64/amd64/tsc.c#4 integrate
.. //depot/projects/netperf/sys/compat/linux/linux_misc.c#5 integrate
.. //depot/projects/netperf/sys/compat/linux/linux_uid16.c#2 integrate
.. //depot/projects/netperf/sys/contrib/ngatm/FREEBSD-upgrade#1 branch
.. //depot/projects/netperf/sys/contrib/ngatm/netnatm/misc/unimsg_common.c#1 branch
.. //depot/projects/netperf/sys/contrib/ngatm/netnatm/saal/saal_sscfu.c#1 branch
.. //depot/projects/netperf/sys/contrib/ngatm/netnatm/saal/saal_sscop.c#1 branch
.. //depot/projects/netperf/sys/contrib/ngatm/netnatm/saal/sscfu.h#1 branch
.. //depot/projects/netperf/sys/contrib/ngatm/netnatm/saal/sscfudef.h#1 branch
.. //depot/projects/netperf/sys/contrib/ngatm/netnatm/saal/sscfupriv.h#1 branch
.. //depot/projects/netperf/sys/contrib/ngatm/netnatm/saal/sscop.h#1 branch
.. //depot/projects/netperf/sys/contrib/ngatm/netnatm/saal/sscopdef.h#1 branch
.. //depot/projects/netperf/sys/contrib/ngatm/netnatm/saal/sscoppriv.h#1 branch
.. //depot/projects/netperf/sys/contrib/ngatm/netnatm/unimsg.h#1 branch
.. //depot/projects/netperf/sys/dev/aac/aac_disk.c#4 integrate
.. //depot/projects/netperf/sys/dev/ata/ata-all.h#4 integrate
.. //depot/projects/netperf/sys/dev/ata/ata-chipset.c#6 integrate
.. //depot/projects/netperf/sys/dev/ata/ata-disk.c#5 integrate
.. //depot/projects/netperf/sys/dev/ata/ata-dma.c#8 integrate
.. //depot/projects/netperf/sys/dev/ata/ata-lowlevel.c#10 integrate
.. //depot/projects/netperf/sys/dev/ata/ata-pci.c#6 integrate
.. //depot/projects/netperf/sys/dev/ath/if_ath.c#28 integrate
.. //depot/projects/netperf/sys/dev/isp/isp_freebsd.h#3 integrate
.. //depot/projects/netperf/sys/dev/pci/pci_pci.c#4 integrate
.. //depot/projects/netperf/sys/geom/geom_io.c#7 integrate
.. //depot/projects/netperf/sys/i386/i386/i686_mem.c#4 integrate
.. //depot/projects/netperf/sys/i386/i386/tsc.c#5 integrate
.. //depot/projects/netperf/sys/i386/pci/pci_cfgreg.c#4 integrate
.. //depot/projects/netperf/sys/ia64/ia64/machdep.c#13 integrate
.. //depot/projects/netperf/sys/ia64/include/proc.h#2 integrate
.. //depot/projects/netperf/sys/kern/init_sysent.c#4 integrate
.. //depot/projects/netperf/sys/kern/kern_exec.c#7 integrate
.. //depot/projects/netperf/sys/kern/kern_mib.c#3 integrate
.. //depot/projects/netperf/sys/kern/kern_poll.c#6 integrate
.. //depot/projects/netperf/sys/kern/sched_ule.c#11 integrate
.. //depot/projects/netperf/sys/kern/subr_mbuf.c#7 integrate
.. //depot/projects/netperf/sys/kern/subr_smp.c#2 integrate
.. //depot/projects/netperf/sys/kern/subr_witness.c#4 integrate
.. //depot/projects/netperf/sys/kern/sys_pipe.c#8 integrate
.. //depot/projects/netperf/sys/kern/syscalls.c#4 integrate
.. //depot/projects/netperf/sys/kern/syscalls.master#4 integrate
.. //depot/projects/netperf/sys/kern/sysv_msg.c#3 integrate
.. //depot/projects/netperf/sys/kern/sysv_sem.c#3 integrate
.. //depot/projects/netperf/sys/kern/sysv_shm.c#3 integrate
.. //depot/projects/netperf/sys/kern/uipc_socket.c#4 integrate
.. //depot/projects/netperf/sys/kern/uipc_socket2.c#4 integrate
.. //depot/projects/netperf/sys/kern/vfs_aio.c#3 integrate
.. //depot/projects/netperf/sys/kern/vfs_bio.c#11 integrate
.. //depot/projects/netperf/sys/kern/vfs_init.c#2 integrate
.. //depot/projects/netperf/sys/net/if.c#8 integrate
.. //depot/projects/netperf/sys/netgraph/ng_base.c#2 integrate
.. //depot/projects/netperf/sys/netgraph/ng_message.h#2 integrate
.. //depot/projects/netperf/sys/netinet/tcp_subr.c#4 integrate
.. //depot/projects/netperf/sys/netinet/tcp_syncache.c#5 integrate
.. //depot/projects/netperf/sys/netinet6/ah_core.c#6 integrate
.. //depot/projects/netperf/sys/netinet6/esp_input.c#3 integrate
.. //depot/projects/netperf/sys/netinet6/frag6.c#5 integrate
.. //depot/projects/netperf/sys/netinet6/icmp6.c#8 integrate
.. //depot/projects/netperf/sys/netinet6/in6.c#10 integrate
.. //depot/projects/netperf/sys/netinet6/in6.h#3 integrate
.. //depot/projects/netperf/sys/netinet6/in6_proto.c#6 integrate
.. //depot/projects/netperf/sys/netinet6/in6_src.c#7 integrate
.. //depot/projects/netperf/sys/netinet6/in6_var.h#4 integrate
.. //depot/projects/netperf/sys/netinet6/ip6_forward.c#9 integrate
.. //depot/projects/netperf/sys/netinet6/ip6_input.c#11 integrate
.. //depot/projects/netperf/sys/netinet6/ip6_mroute.c#5 integrate
.. //depot/projects/netperf/sys/netinet6/ip6_output.c#16 integrate
.. //depot/projects/netperf/sys/netinet6/ip6_var.h#6 integrate
.. //depot/projects/netperf/sys/netinet6/ipsec.c#5 integrate
.. //depot/projects/netperf/sys/netinet6/mld6.c#3 integrate
.. //depot/projects/netperf/sys/netinet6/nd6_nbr.c#5 integrate
.. //depot/projects/netperf/sys/netinet6/scope6.c#5 integrate
.. //depot/projects/netperf/sys/pccard/pcic.c#3 integrate
.. //depot/projects/netperf/sys/pccard/pcic_pci.c#3 integrate
.. //depot/projects/netperf/sys/security/mac_lomac/mac_lomac.c#3 integrate
.. //depot/projects/netperf/sys/sys/buf.h#5 integrate
.. //depot/projects/netperf/sys/sys/syscall.h#4 integrate
.. //depot/projects/netperf/sys/sys/syscall.mk#4 integrate
.. //depot/projects/netperf/sys/sys/sysctl.h#4 integrate
.. //depot/projects/netperf/sys/sys/sysproto.h#4 integrate
.. //depot/projects/netperf/sys/vm/vm_page.c#9 integrate
.. //depot/projects/netperf/sys/vm/vm_page.h#5 integrate
.. //depot/projects/netperf/sys/vm/vm_pageout.c#9 integrate
Differences ...
==== //depot/projects/netperf/sys/amd64/amd64/amd64_mem.c#3 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/amd64_mem.c,v 1.21 2003/08/23 00:27:58 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/amd64_mem.c,v 1.22 2003/10/21 18:28:33 silby Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -65,7 +65,7 @@
static int mtrrs_disabled;
TUNABLE_INT("machdep.disable_mtrrs", &mtrrs_disabled);
-SYSCTL_INT(_machdep, OID_AUTO, disable_mtrrs, CTLFLAG_RD,
+SYSCTL_INT(_machdep, OID_AUTO, disable_mtrrs, CTLFLAG_RDTUN,
&mtrrs_disabled, 0, "Disable amd64 MTRRs.");
static void amd64_mrinit(struct mem_range_softc *sc);
==== //depot/projects/netperf/sys/amd64/amd64/tsc.c#4 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/tsc.c,v 1.203 2003/09/23 00:18:45 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/tsc.c,v 1.204 2003/10/21 18:28:33 silby Exp $");
#include "opt_clock.h"
@@ -46,7 +46,7 @@
#ifdef SMP
static int smp_tsc;
-SYSCTL_INT(_kern_timecounter, OID_AUTO, smp_tsc, CTLFLAG_RD, &smp_tsc, 0,
+SYSCTL_INT(_kern_timecounter, OID_AUTO, smp_tsc, CTLFLAG_RDTUN, &smp_tsc, 0,
"Indicates whether the TSC is safe to use in SMP mode");
TUNABLE_INT("kern.timecounter.smp_tsc", &smp_tsc);
#endif
==== //depot/projects/netperf/sys/compat/linux/linux_misc.c#5 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.148 2003/09/07 13:03:13 bde Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.149 2003/10/21 11:00:33 tjr Exp $");
#include "opt_mac.h"
@@ -989,7 +989,7 @@
struct proc *p;
ngrp = args->gidsetsize;
- if (ngrp >= NGROUPS)
+ if (ngrp < 0 || ngrp >= NGROUPS)
return (EINVAL);
error = copyin(args->grouplist, linux_gidset, ngrp * sizeof(l_gid_t));
if (error)
==== //depot/projects/netperf/sys/compat/linux/linux_uid16.c#2 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_uid16.c,v 1.11 2003/06/10 21:27:40 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_uid16.c,v 1.12 2003/10/21 11:00:33 tjr Exp $");
#include <sys/param.h>
#include <sys/lock.h>
@@ -100,7 +100,7 @@
#endif
ngrp = args->gidsetsize;
- if (ngrp >= NGROUPS)
+ if (ngrp < 0 || ngrp >= NGROUPS)
return (EINVAL);
error = copyin(args->gidset, linux_gidset, ngrp * sizeof(l_gid16_t));
if (error)
==== //depot/projects/netperf/sys/dev/aac/aac_disk.c#4 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/aac/aac_disk.c,v 1.35 2003/08/24 17:48:01 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/aac/aac_disk.c,v 1.36 2003/10/21 18:28:33 silby Exp $");
#include "opt_aac.h"
@@ -91,7 +91,7 @@
TUNABLE_INT("hw.aac.iosize_max", &aac_iosize_max);
SYSCTL_DECL(_hw_aac);
-SYSCTL_UINT(_hw_aac, OID_AUTO, iosize_max, CTLFLAG_RD, &aac_iosize_max, 0,
+SYSCTL_UINT(_hw_aac, OID_AUTO, iosize_max, CTLFLAG_RDTUN, &aac_iosize_max, 0,
"Max I/O size per transfer to an array");
/*
==== //depot/projects/netperf/sys/dev/ata/ata-all.h#4 (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-all.h,v 1.65 2003/08/25 11:13:04 sos Exp $
+ * $FreeBSD: src/sys/dev/ata/ata-all.h,v 1.66 2003/10/21 19:20:36 sos Exp $
*/
/* ATA register defines */
@@ -247,14 +247,16 @@
bus_addr_t mdmatab; /* bus address of dmatab */
u_int32_t alignment; /* DMA engine alignment */
u_int32_t max_iosize; /* DMA engine max IO size */
+ u_int32_t cur_iosize; /* DMA engine current IO size */
int flags;
#define ATA_DMA_ACTIVE 0x01 /* DMA transfer in progress */
#define ATA_DMA_READ 0x02 /* transaction is a read */
void (*alloc)(struct ata_channel *ch);
void (*free)(struct ata_channel *ch);
- int (*setup)(struct ata_device *atadev, caddr_t data, int32_t count);
- int (*start)(struct ata_channel *ch, caddr_t data, int32_t count, int dir);
+ int (*load)(struct ata_device *atadev, caddr_t data, int32_t count,int dir);
+ int (*unload)(struct ata_channel *ch);
+ int (*start)(struct ata_channel *ch);
int (*stop)(struct ata_channel *ch);
};
==== //depot/projects/netperf/sys/dev/ata/ata-chipset.c#6 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.39 2003/09/08 13:55:05 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.41 2003/10/21 19:20:36 sos Exp $");
#include "opt_ata.h"
#include <sys/param.h>
@@ -90,10 +90,10 @@
static void ata_promise_mio_intr(void *);
static void ata_promise_setmode(struct ata_device *, int);
static void ata_promise_new_dmainit(struct ata_channel *);
-static int ata_promise_new_dmastart(struct ata_channel *, caddr_t, int32_t,int);
+static int ata_promise_new_dmastart(struct ata_channel *);
static int ata_promise_new_dmastop(struct ata_channel *);
static void ata_promise_mio_dmainit(struct ata_channel *);
-static int ata_promise_mio_dmastart(struct ata_channel *, caddr_t, int32_t,int);
+static int ata_promise_mio_dmastart(struct ata_channel *);
static int ata_promise_mio_dmastop(struct ata_channel *);
static int ata_serverworks_chipinit(device_t);
static void ata_serverworks_setmode(struct ata_device *, int);
@@ -508,8 +508,10 @@
u_int32_t udmatiming[] = { 0x00921250, 0x00911140, 0x00911030 };
int error;
+ atadev->channel->dma->alignment = 16;
+ atadev->channel->dma->max_iosize = 63 * 1024;
+
mode = ata_limit_mode(atadev, mode, ATA_UDMA2);
- atadev->channel->dma->alignment = 16;
error = ata_controlcmd(atadev, ATA_SETFEATURES, ATA_SF_SETXFER, 0, mode);
@@ -955,7 +957,7 @@
u_int32_t udmatiming[] = { 0x80921250, 0x80911140, 0x80911030 };
int error;
- atadev->channel->dma->alignment = 4;
+ atadev->channel->dma->alignment = 16;
atadev->channel->dma->max_iosize = 63 * 1024;
mode = ata_limit_mode(atadev, mode, ATA_UDMA2);
@@ -1358,27 +1360,25 @@
}
static int
-ata_promise_new_dmastart(struct ata_channel *ch,
- caddr_t data, int32_t count, int dir)
+ata_promise_new_dmastart(struct ata_channel *ch)
{
struct ata_pci_controller *ctlr =
device_get_softc(device_get_parent(ch->dev));
- int error;
- if ((error = ata_dmastart(ch, data, count, dir)))
- return error;
if (ch->flags & ATA_48BIT_ACTIVE) {
ATA_OUTB(ctlr->r_io1, 0x11,
ATA_INB(ctlr->r_io1, 0x11) | (ch->unit ? 0x08 : 0x02));
ATA_OUTL(ctlr->r_io1, 0x20,
- (dir ? 0x05000000 : 0x06000000) | (count >> 1));
+ ((ch->dma->flags & ATA_DMA_READ) ? 0x05000000 : 0x06000000) |
+ (ch->dma->cur_iosize >> 1));
}
ATA_IDX_OUTB(ch, ATA_BMSTAT_PORT, (ATA_IDX_INB(ch, ATA_BMSTAT_PORT) |
(ATA_BMSTAT_INTERRUPT | ATA_BMSTAT_ERROR)));
ATA_IDX_OUTL(ch, ATA_BMDTP_PORT, ch->dma->mdmatab);
ATA_IDX_OUTB(ch, ATA_BMCMD_PORT,
- (dir ? ATA_BMCMD_WRITE_READ : 0) | ATA_BMCMD_START_STOP);
- return error;
+ ((ch->dma->flags & ATA_DMA_READ) ? ATA_BMCMD_WRITE_READ : 0) |
+ ATA_BMCMD_START_STOP);
+ return 0;
}
static int
@@ -1397,7 +1397,6 @@
ATA_IDX_OUTB(ch, ATA_BMCMD_PORT,
ATA_IDX_INB(ch, ATA_BMCMD_PORT) & ~ATA_BMCMD_START_STOP);
ATA_IDX_OUTB(ch, ATA_BMSTAT_PORT, ATA_BMSTAT_INTERRUPT | ATA_BMSTAT_ERROR);
- ata_dmastop(ch);
return error;
}
@@ -1412,19 +1411,13 @@
}
static int
-ata_promise_mio_dmastart(struct ata_channel *ch,
- caddr_t data, int32_t count, int dir)
+ata_promise_mio_dmastart(struct ata_channel *ch)
{
- int error;
-
- if ((error = ata_dmastart(ch, data, count, dir)))
- return error;
-
ATA_IDX_OUTL(ch, ATA_BMDTP_PORT, ch->dma->mdmatab);
ATA_IDX_OUTL(ch, ATA_BMCTL_PORT,
(ATA_IDX_INL(ch, ATA_BMCTL_PORT) & ~0x000000c0) |
- ((dir) ? 0x00000080 : 0x000000c0));
- return error;
+ ((ch->dma->flags & ATA_DMA_READ) ? 0x00000080 : 0x000000c0));
+ return 0;
}
static int
@@ -1432,7 +1425,7 @@
{
ATA_IDX_OUTL(ch, ATA_BMCTL_PORT,
ATA_IDX_INL(ch, ATA_BMCTL_PORT) & ~0x00000080);
- return ata_dmastop(ch);
+ return 0;
}
/*
==== //depot/projects/netperf/sys/dev/ata/ata-disk.c#5 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-disk.c,v 1.160 2003/10/12 12:35:44 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-disk.c,v 1.161 2003/10/21 18:28:34 silby Exp $");
#include "opt_ata.h"
#include <sys/param.h>
@@ -69,9 +69,9 @@
/* sysctl vars */
SYSCTL_DECL(_hw_ata);
-SYSCTL_INT(_hw_ata, OID_AUTO, ata_dma, CTLFLAG_RD, &ata_dma, 0,
+SYSCTL_INT(_hw_ata, OID_AUTO, ata_dma, CTLFLAG_RDTUN, &ata_dma, 0,
"ATA disk DMA mode control");
-SYSCTL_INT(_hw_ata, OID_AUTO, wc, CTLFLAG_RD, &ata_wc, 0,
+SYSCTL_INT(_hw_ata, OID_AUTO, wc, CTLFLAG_RDTUN, &ata_wc, 0,
"ATA disk write caching");
void
==== //depot/projects/netperf/sys/dev/ata/ata-dma.c#8 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-dma.c,v 1.121 2003/10/07 13:48:55 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-dma.c,v 1.122 2003/10/21 19:20:37 sos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -49,7 +49,8 @@
static void ata_dmaalloc(struct ata_channel *);
static void ata_dmafree(struct ata_channel *);
static void ata_dmasetupd_cb(void *, bus_dma_segment_t *, int, int);
-static int ata_dmasetup(struct ata_device *, caddr_t, int32_t);
+static int ata_dmaload(struct ata_device *, caddr_t, int32_t, int);
+static int ata_dmaunload(struct ata_channel *);
/* local vars */
static MALLOC_DEFINE(M_ATADMA, "ATA DMA", "ATA driver DMA");
@@ -70,9 +71,8 @@
if ((ch->dma = malloc(sizeof(struct ata_dma), M_ATADMA, M_NOWAIT|M_ZERO))) {
ch->dma->alloc = ata_dmaalloc;
ch->dma->free = ata_dmafree;
- ch->dma->setup = ata_dmasetup;
- ch->dma->start = ata_dmastart;
- ch->dma->stop = ata_dmastop;
+ ch->dma->load = ata_dmaload;
+ ch->dma->unload = ata_dmaunload;
ch->dma->alignment = 2;
ch->dma->max_iosize = 64*1024;
}
@@ -194,38 +194,35 @@
}
static int
-ata_dmasetup(struct ata_device *atadev, caddr_t data, int32_t count)
+ata_dmaload(struct ata_device *atadev, caddr_t data, int32_t count, int dir)
{
struct ata_channel *ch = atadev->channel;
+ struct ata_dmasetup_data_cb_args cba;
- if (((uintptr_t)data & (ch->dma->alignment - 1)) ||
- (count & (ch->dma->alignment - 1))) {
- ata_prtdev(atadev, "FAILURE - non aligned DMA transfer attempted\n");
+ if (ch->dma->flags & ATA_DMA_ACTIVE) {
+ ata_prtdev(atadev, "FAILURE - already active DMA on this device\n");
return -1;
}
if (!count) {
ata_prtdev(atadev, "FAILURE - zero length DMA transfer attempted\n");
return -1;
}
+ if (((uintptr_t)data & (ch->dma->alignment - 1)) ||
+ (count & (ch->dma->alignment - 1))) {
+ ata_prtdev(atadev, "FAILURE - non aligned DMA transfer attempted\n");
+ return -1;
+ }
if (count > ch->dma->max_iosize) {
ata_prtdev(atadev,
"FAILURE - oversized DMA transfer attempted %d > %d\n",
count, ch->dma->max_iosize);
return -1;
}
- return 0;
-}
-int
-ata_dmastart(struct ata_channel *ch, caddr_t data, int32_t count, int dir)
-{
- struct ata_dmasetup_data_cb_args cba;
+ cba.dmatab = ch->dma->dmatab;
- if (ch->dma->flags & ATA_DMA_ACTIVE)
- panic("ata_dmasetup: transfer active on this device!");
+ bus_dmamap_sync(ch->dma->cdmatag, ch->dma->cdmamap, BUS_DMASYNC_PREWRITE);
- cba.dmatab = ch->dma->dmatab;
- bus_dmamap_sync(ch->dma->cdmatag, ch->dma->cdmamap, BUS_DMASYNC_PREWRITE);
if (bus_dmamap_load(ch->dma->ddmatag, ch->dma->ddmamap, data, count,
ata_dmasetupd_cb, &cba, 0) || cba.error)
return -1;
@@ -233,12 +230,14 @@
bus_dmamap_sync(ch->dma->ddmatag, ch->dma->ddmamap,
dir ? BUS_DMASYNC_PREREAD : BUS_DMASYNC_PREWRITE);
+ ch->dma->cur_iosize = count;
ch->dma->flags = dir ? (ATA_DMA_ACTIVE | ATA_DMA_READ) : ATA_DMA_ACTIVE;
+
return 0;
}
int
-ata_dmastop(struct ata_channel *ch)
+ata_dmaunload(struct ata_channel *ch)
{
bus_dmamap_sync(ch->dma->cdmatag, ch->dma->cdmamap, BUS_DMASYNC_POSTWRITE);
@@ -247,6 +246,8 @@
BUS_DMASYNC_POSTREAD : BUS_DMASYNC_POSTWRITE);
bus_dmamap_unload(ch->dma->ddmatag, ch->dma->ddmamap);
+ ch->dma->cur_iosize = 0;
ch->dma->flags = 0;
+
return 0;
}
==== //depot/projects/netperf/sys/dev/ata/ata-lowlevel.c#10 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-lowlevel.c,v 1.20 2003/10/20 13:44:33 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-lowlevel.c,v 1.22 2003/10/21 19:25:20 sos Exp $");
#include "opt_ata.h"
#include <sys/param.h>
@@ -111,10 +111,11 @@
/* ATA DMA data transfer commands */
case ATA_R_DMA:
- /* check sanity and setup DMA engine */
- if (request->device->channel->dma->setup(request->device,
- request->data,
- request->bytecount)) {
+ /* check sanity, setup SG list and DMA engine */
+ if (request->device->channel->dma->load(request->device,
+ request->data,
+ request->bytecount,
+ request->flags & ATA_R_READ)) {
ata_prtdev(request->device, "setting up DMA failed\n");
request->result = EIO;
break;
@@ -130,10 +131,7 @@
}
/* start DMA engine */
- if (request->device->channel->dma->start(request->device->channel,
- request->data,
- request->bytecount,
- request->flags & ATA_R_READ)) {
+ if (request->device->channel->dma->start(request->device->channel)) {
ata_prtdev(request->device, "error starting DMA\n");
request->result = EIO;
break;
@@ -208,10 +206,11 @@
break;
}
- /* check sanity and setup DMA engine */
- if (request->device->channel->dma->setup(request->device,
- request->data,
- request->bytecount)) {
+ /* check sanity, setup SG list and DMA engine */
+ if (request->device->channel->dma->load(request->device,
+ request->data,
+ request->bytecount,
+ request->flags & ATA_R_READ)) {
ata_prtdev(request->device, "setting up DMA failed\n");
request->result = EIO;
break;
@@ -253,10 +252,7 @@
ATA_PROTO_ATAPI_12 ? 6 : 8);
/* start DMA engine */
- if (request->device->channel->dma->start(request->device->channel,
- request->data,
- request->bytecount,
- request->flags & ATA_R_READ)) {
+ if (request->device->channel->dma->start(request->device->channel)) {
request->result = EIO;
break;
}
@@ -266,6 +262,8 @@
}
/* request finish here */
+ if (request->device->channel->dma->flags & ATA_DMA_ACTIVE)
+ request->device->channel->dma->unload(request->device->channel);
request->device->channel->running = NULL;
return ATA_OP_FINISHED;
}
@@ -373,6 +371,9 @@
else
request->donecount = request->bytecount;
+ /* release SG list etc */
+ ch->dma->unload(ch);
+
/* done with HW */
break;
@@ -458,6 +459,7 @@
ata_prtdev(request->device, "unknown transfer phase\n");
request->status = ATA_S_ERROR;
}
+
/* done with HW */
break;
@@ -474,6 +476,9 @@
request->status |= ATA_S_ERROR;
else
request->donecount = request->bytecount;
+
+ /* release SG list etc */
+ ch->dma->unload(ch);
/* done with HW */
break;
@@ -481,7 +486,7 @@
ata_finish(request);
- /* unlock the ATA HW for new work */
+ /* unlock the ATA channel for new work */
ch->running = NULL;
ATA_UNLOCK_CH(ch);
ch->locking(ch, ATA_LF_UNLOCK);
==== //depot/projects/netperf/sys/dev/ata/ata-pci.c#6 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-pci.c,v 1.69 2003/10/20 13:45:11 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-pci.c,v 1.70 2003/10/21 19:20:37 sos Exp $");
#include "opt_ata.h"
#include <sys/param.h>
@@ -411,17 +411,14 @@
}
static int
-ata_pci_dmastart(struct ata_channel *ch, caddr_t data, int32_t count, int dir)
+ata_pci_dmastart(struct ata_channel *ch)
{
- int error;
-
- if ((error = ata_dmastart(ch, data, count, dir)))
- return error;
ATA_IDX_OUTB(ch, ATA_BMSTAT_PORT, (ATA_IDX_INB(ch, ATA_BMSTAT_PORT) |
(ATA_BMSTAT_INTERRUPT | ATA_BMSTAT_ERROR)));
ATA_IDX_OUTL(ch, ATA_BMDTP_PORT, ch->dma->mdmatab);
ATA_IDX_OUTB(ch, ATA_BMCMD_PORT,
- (dir ? ATA_BMCMD_WRITE_READ : 0) | ATA_BMCMD_START_STOP);
+ ((ch->dma->flags & ATA_DMA_READ) ? ATA_BMCMD_WRITE_READ : 0) |
+ ATA_BMCMD_START_STOP);
return 0;
}
@@ -434,7 +431,6 @@
ATA_IDX_OUTB(ch, ATA_BMCMD_PORT,
ATA_IDX_INB(ch, ATA_BMCMD_PORT) & ~ATA_BMCMD_START_STOP);
ATA_IDX_OUTB(ch, ATA_BMSTAT_PORT, ATA_BMSTAT_INTERRUPT | ATA_BMSTAT_ERROR);
- ata_dmastop(ch);
return error;
}
==== //depot/projects/netperf/sys/dev/ath/if_ath.c#28 (text+ko) ====
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.28 2003/10/17 21:58:39 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.29 2003/10/22 04:37:34 sam Exp $");
/*
* Driver for the Atheros Wireless LAN controller.
==== //depot/projects/netperf/sys/dev/isp/isp_freebsd.h#3 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/dev/isp/isp_freebsd.h,v 1.72 2003/09/13 01:56:45 mjacob Exp $ */
+/* $FreeBSD: src/sys/dev/isp/isp_freebsd.h,v 1.73 2003/10/21 21:52:23 mjacob Exp $ */
/*
* Qlogic ISP SCSI Host Adapter FreeBSD Wrapper Definitions
* Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002 by Matthew Jacob
@@ -76,7 +76,7 @@
#endif
#define HANDLE_LOOPSTATE_IN_OUTER_LAYERS 1
-#define ISP_SMPLOCK 1
+/* #define ISP_SMPLOCK 1 */
#ifdef ISP_SMPLOCK
#define ISP_IFLAGS INTR_TYPE_CAM | INTR_ENTROPY | INTR_MPSAFE
==== //depot/projects/netperf/sys/dev/pci/pci_pci.c#4 (text+ko) ====
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/pci/pci_pci.c,v 1.27 2003/08/24 17:54:15 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/pci/pci_pci.c,v 1.28 2003/10/21 18:28:34 silby Exp $");
/*
* PCI:PCI bridge support.
@@ -98,7 +98,7 @@
TUNABLE_INT("hw.pci.allow_unsupported_io_range",
(int *)&pci_allow_unsupported_io_range);
SYSCTL_DECL(_hw_pci);
-SYSCTL_INT(_hw_pci, OID_AUTO, allow_unsupported_io_range, CTLFLAG_RD,
+SYSCTL_INT(_hw_pci, OID_AUTO, allow_unsupported_io_range, CTLFLAG_RDTUN,
&pci_allow_unsupported_io_range, 0,
"Allows the PCI Bridge to pass through an unsupported memory range "
"assigned by the BIOS.");
==== //depot/projects/netperf/sys/geom/geom_io.c#7 (text+ko) ====
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/geom/geom_io.c,v 1.49 2003/10/19 19:06:54 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/geom/geom_io.c,v 1.50 2003/10/22 06:32:20 phk Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -209,12 +209,9 @@
case BIO_READ:
case BIO_WRITE:
case BIO_DELETE:
- /* Noisily reject zero size sectors */
- if (pp->sectorsize == 0) {
- printf("GEOM provider %s has zero sectorsize\n",
- pp->name);
- return (EDOOFUS);
- }
+ /* Zero sectorsize is a probably lack of media */
+ if (pp->sectorsize == 0)
+ return (ENXIO);
/* Reject I/O not on sector boundary */
if (bp->bio_offset % pp->sectorsize)
return (EINVAL);
==== //depot/projects/netperf/sys/i386/i386/i686_mem.c#4 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/i686_mem.c,v 1.22 2003/08/25 09:48:46 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/i686_mem.c,v 1.23 2003/10/21 18:28:34 silby Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -64,7 +64,7 @@
static int mtrrs_disabled;
TUNABLE_INT("machdep.disable_mtrrs", &mtrrs_disabled);
-SYSCTL_INT(_machdep, OID_AUTO, disable_mtrrs, CTLFLAG_RD,
+SYSCTL_INT(_machdep, OID_AUTO, disable_mtrrs, CTLFLAG_RDTUN,
&mtrrs_disabled, 0, "Disable i686 MTRRs.");
static void i686_mrinit(struct mem_range_softc *sc);
==== //depot/projects/netperf/sys/i386/i386/tsc.c#5 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/tsc.c,v 1.203 2003/08/25 09:48:47 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/tsc.c,v 1.204 2003/10/21 18:28:34 silby Exp $");
#include "opt_clock.h"
@@ -47,7 +47,7 @@
#ifdef SMP
static int smp_tsc;
-SYSCTL_INT(_kern_timecounter, OID_AUTO, smp_tsc, CTLFLAG_RD, &smp_tsc, 0,
+SYSCTL_INT(_kern_timecounter, OID_AUTO, smp_tsc, CTLFLAG_RDTUN, &smp_tsc, 0,
"Indicates whether the TSC is safe to use in SMP mode");
TUNABLE_INT("kern.timecounter.smp_tsc", &smp_tsc);
#endif
==== //depot/projects/netperf/sys/i386/pci/pci_cfgreg.c#4 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/pci/pci_cfgreg.c,v 1.105 2003/09/10 06:00:53 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/pci/pci_cfgreg.c,v 1.106 2003/10/21 18:28:34 silby Exp $");
#include <sys/param.h> /* XXX trim includes */
#include <sys/systm.h>
@@ -90,7 +90,7 @@
static uint32_t pci_irq_override_mask = PCI_IRQ_OVERRIDE_MASK;
TUNABLE_INT("hw.pci.irq_override_mask", &pci_irq_override_mask);
-SYSCTL_INT(_hw_pci, OID_AUTO, irq_override_mask, CTLFLAG_RD,
+SYSCTL_INT(_hw_pci, OID_AUTO, irq_override_mask, CTLFLAG_RDTUN,
&pci_irq_override_mask, PCI_IRQ_OVERRIDE_MASK,
"Mask of allowed irqs to try to route when it has no good clue about\n"
"which irqs it should use.");
==== //depot/projects/netperf/sys/ia64/ia64/machdep.c#13 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/ia64/ia64/machdep.c,v 1.159 2003/10/18 22:25:07 njl Exp $
+ * $FreeBSD: src/sys/ia64/ia64/machdep.c,v 1.160 2003/10/21 01:13:49 marcel Exp $
*/
#include "opt_compat.h"
@@ -1217,7 +1217,7 @@
bzero(&tf->tf_scratch, sizeof(tf->tf_scratch));
bzero(&tf->tf_scratch_fp, sizeof(tf->tf_scratch_fp));
tf->tf_special.cfm = (1UL<<63) | (3UL<<7) | 3UL;
- tf->tf_special.bspstore = td->td_md.md_bspstore;
+ tf->tf_special.bspstore = IA64_BACKINGSTORE;
/*
* Copy the arguments onto the kernel register stack so that
* they get loaded by the loadrs instruction. Skip over the
@@ -1236,7 +1236,7 @@
tf->tf_special.ndirty = (ksttop - kst) << 3;
} else { /* epc syscalls (default). */
tf->tf_special.cfm = (3UL<<62) | (3UL<<7) | 3UL;
- tf->tf_special.bspstore = td->td_md.md_bspstore + 24;
+ tf->tf_special.bspstore = IA64_BACKINGSTORE + 24;
/*
* Write values for out0, out1 and out2 to the user's backing
* store and arrange for them to be restored into the user's
==== //depot/projects/netperf/sys/ia64/include/proc.h#2 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/ia64/include/proc.h,v 1.10 2003/05/16 21:26:41 marcel Exp $ */
+/* $FreeBSD: src/sys/ia64/include/proc.h,v 1.11 2003/10/21 01:13:49 marcel Exp $ */
/* From: NetBSD: proc.h,v 1.3 1997/04/06 08:47:36 cgd Exp */
/*
@@ -37,7 +37,6 @@
struct mdthread {
u_long md_flags;
- vm_offset_t md_bspstore; /* initial ar.bspstore */
register_t md_savecrit;
};
==== //depot/projects/netperf/sys/kern/init_sysent.c#4 (text+ko) ====
@@ -2,8 +2,8 @@
* System call switch table.
*
* DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/kern/init_sysent.c,v 1.157 2003/10/20 16:16:03 dwmalone Exp $
- * created from FreeBSD: src/sys/kern/syscalls.master,v 1.153 2003/09/07 05:42:06 alc Exp
+ * $FreeBSD: src/sys/kern/init_sysent.c,v 1.158 2003/10/21 07:03:27 scottl Exp $
+ * created from FreeBSD: src/sys/kern/syscalls.master,v 1.154 2003/10/20 16:16:03 dwmalone Exp
*/
#include "opt_compat.h"
@@ -70,7 +70,7 @@
{ SYF_MPSAFE | 0, (sy_call_t *)getppid }, /* 39 = getppid */
{ compat(AS(olstat_args),lstat) }, /* 40 = old lstat */
{ SYF_MPSAFE | AS(dup_args), (sy_call_t *)dup }, /* 41 = dup */
- { 0, (sy_call_t *)pipe }, /* 42 = pipe */
+ { SYF_MPSAFE | 0, (sy_call_t *)pipe }, /* 42 = pipe */
{ SYF_MPSAFE | 0, (sy_call_t *)getegid }, /* 43 = getegid */
{ SYF_MPSAFE | AS(profil_args), (sy_call_t *)profil }, /* 44 = profil */
{ AS(ktrace_args), (sy_call_t *)ktrace }, /* 45 = ktrace */
==== //depot/projects/netperf/sys/kern/kern_exec.c#7 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_exec.c,v 1.230 2003/10/20 05:34:10 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_exec.c,v 1.231 2003/10/21 01:13:49 marcel Exp $");
#include "opt_ktrace.h"
#include "opt_mac.h"
@@ -873,7 +873,6 @@
sv->sv_stackprot, VM_PROT_ALL, MAP_STACK_GROWS_UP);
if (error)
return (error);
- FIRST_THREAD_IN_PROC(p)->td_md.md_bspstore = stack_addr;
#endif
/* vm_ssize and vm_maxsaddr are somewhat antiquated concepts in the
==== //depot/projects/netperf/sys/kern/kern_mib.c#3 (text+ko) ====
@@ -40,7 +40,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_mib.c,v 1.69 2003/08/21 14:47:08 eivind Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_mib.c,v 1.70 2003/10/21 18:28:34 silby Exp $");
#include "opt_posix.h"
@@ -110,13 +110,13 @@
SYSCTL_INT(_kern, KERN_OSRELDATE, osreldate, CTLFLAG_RD,
&osreldate, 0, "Kernel release date");
-SYSCTL_INT(_kern, KERN_MAXPROC, maxproc, CTLFLAG_RD,
+SYSCTL_INT(_kern, KERN_MAXPROC, maxproc, CTLFLAG_RDTUN,
&maxproc, 0, "Maximum number of processes");
SYSCTL_INT(_kern, KERN_MAXPROCPERUID, maxprocperuid, CTLFLAG_RW,
&maxprocperuid, 0, "Maximum processes allowed per userid");
-SYSCTL_INT(_kern, OID_AUTO, maxusers, CTLFLAG_RD,
+SYSCTL_INT(_kern, OID_AUTO, maxusers, CTLFLAG_RDTUN,
&maxusers, 0, "Hint for kernel tuning");
SYSCTL_INT(_kern, KERN_ARGMAX, argmax, CTLFLAG_RD,
==== //depot/projects/netperf/sys/kern/kern_poll.c#6 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_poll.c,v 1.13 2003/10/14 18:39:36 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_poll.c,v 1.14 2003/10/20 21:14:24 sam Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -118,7 +118,7 @@
SYSCTL_UINT(_kern_polling, OID_AUTO, burst_max, CTLFLAG_RW,
&poll_burst_max, 0, "Max Polling burst size");
-static u_int32_t poll_in_idle_loop=1; /* do we poll in idle loop ? */
+static u_int32_t poll_in_idle_loop=0; /* do we poll in idle loop ? */
SYSCTL_UINT(_kern_polling, OID_AUTO, idle_poll, CTLFLAG_RW,
&poll_in_idle_loop, 0, "Enable device polling in idle loop");
==== //depot/projects/netperf/sys/kern/sched_ule.c#11 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/sched_ule.c,v 1.65 2003/10/16 20:32:57 jeff Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/sched_ule.c,v 1.66 2003/10/20 19:55:21 jeff Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -1311,6 +1311,8 @@
pctcpu = 0;
ke = td->td_kse;
+ if (ke == NULL)
+ return (0);
mtx_lock_spin(&sched_lock);
if (ke->ke_ticks) {
==== //depot/projects/netperf/sys/kern/subr_mbuf.c#7 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/subr_mbuf.c,v 1.55 2003/08/16 19:48:52 bmilekic Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/subr_mbuf.c,v 1.56 2003/10/21 18:28:34 silby Exp $");
#include "opt_mac.h"
#include "opt_param.h"
@@ -310,13 +310,13 @@
* Objects exported by sysctl(8).
*/
SYSCTL_DECL(_kern_ipc);
-SYSCTL_INT(_kern_ipc, OID_AUTO, nmbclusters, CTLFLAG_RD, &nmbclusters, 0,
+SYSCTL_INT(_kern_ipc, OID_AUTO, nmbclusters, CTLFLAG_RDTUN, &nmbclusters, 0,
"Maximum number of mbuf clusters available");
-SYSCTL_INT(_kern_ipc, OID_AUTO, nmbufs, CTLFLAG_RD, &nmbufs, 0,
+SYSCTL_INT(_kern_ipc, OID_AUTO, nmbufs, CTLFLAG_RDTUN, &nmbufs, 0,
"Maximum number of mbufs available");
-SYSCTL_INT(_kern_ipc, OID_AUTO, nmbcnt, CTLFLAG_RD, &nmbcnt, 0,
+SYSCTL_INT(_kern_ipc, OID_AUTO, nmbcnt, CTLFLAG_RDTUN, &nmbcnt, 0,
"Number used to scale kmem_map to ensure sufficient space for counters");
-SYSCTL_INT(_kern_ipc, OID_AUTO, nsfbufs, CTLFLAG_RD, &nsfbufs, 0,
+SYSCTL_INT(_kern_ipc, OID_AUTO, nsfbufs, CTLFLAG_RDTUN, &nsfbufs, 0,
"Maximum number of sendfile(2) sf_bufs available");
SYSCTL_INT(_kern_ipc, OID_AUTO, mbuf_wait, CTLFLAG_RW, &mbuf_wait, 0,
"Sleep time of mbuf subsystem wait allocations during exhaustion");
==== //depot/projects/netperf/sys/kern/subr_smp.c#2 (text+ko) ====
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/subr_smp.c,v 1.176 2003/06/12 19:46:51 des Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/subr_smp.c,v 1.177 2003/10/21 18:28:34 silby Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -65,7 +65,7 @@
"Number of Auxillary Processors (APs) that were successfully started");
int smp_disabled = 0; /* has smp been disabled? */
-SYSCTL_INT(_kern_smp, OID_AUTO, disabled, CTLFLAG_RD, &smp_disabled, 0,
+SYSCTL_INT(_kern_smp, OID_AUTO, disabled, CTLFLAG_RDTUN, &smp_disabled, 0,
"SMP has been disabled from the loader");
TUNABLE_INT("kern.smp.disabled", &smp_disabled);
==== //depot/projects/netperf/sys/kern/subr_witness.c#4 (text+ko) ====
@@ -82,7 +82,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/subr_witness.c,v 1.159 2003/09/06 21:06:08 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/subr_witness.c,v 1.160 2003/10/21 18:28:34 silby Exp $");
#include "opt_ddb.h"
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list