diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/tools/ioat/Makefile | 9 | ||||
-rw-r--r-- | tools/tools/ioat/ioatcontrol.8 | 75 | ||||
-rw-r--r-- | tools/tools/ioat/ioatcontrol.c | 69 |
3 files changed, 153 insertions, 0 deletions
diff --git a/tools/tools/ioat/Makefile b/tools/tools/ioat/Makefile new file mode 100644 index 0000000..08acfe1 --- /dev/null +++ b/tools/tools/ioat/Makefile @@ -0,0 +1,9 @@ +# $FreeBSD$ + +PROG= ioatcontrol +SRCS= ioatcontrol.c +MAN= ioatcontrol.8 +CFLAGS+= -I${.CURDIR:H:H:H}/sys/dev/ioat +WARNS?= 6 + +.include <bsd.prog.mk> diff --git a/tools/tools/ioat/ioatcontrol.8 b/tools/tools/ioat/ioatcontrol.8 new file mode 100644 index 0000000..762ce14 --- /dev/null +++ b/tools/tools/ioat/ioatcontrol.8 @@ -0,0 +1,75 @@ +.\" Copyright (c) 2015 EMC / Isilon Storage Division +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (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$ +.\" +.Dd August 24, 2015 +.Dt IOATCONTROL 8 +.Os +.Sh NAME +.Nm ioatcontrol +.Nd Userspace tool to test +.Xr ioat 4 +.Sh SYNOPSIS +.Nm +.Ar channel_number +.Ar num_loops +.Sh DESCRIPTION +.Nm +allows one to issue some number of test operations to the +.Xr ioat 4 +driver on a specific hardware channel. +.Pp +Each loop will allocate two chunks of memory, write data patterns to them, +submit a DMA request to copy one buffer to the other, and compare the contents +in the callback. +If the contents are not as expected, an error is reported. +.Sh FILES +.Pa /dev/ioat_test +.Pp +The interface between +.Nm +and +.Xr ioat 4 . +.Nm +exposes it with +.Cd hw.ioat.enable_ioat_test=1 . +.Sh SEE ALSO +.Xr ioat 4 +.Sh HISTORY +The +.Xr ioat 4 +driver first appeared in +.Fx 11.0 . +.Sh AUTHORS +The +.Xr ioat 4 +driver and +.Nm +tool were developed by +.An \&Jim Harris Aq Mt jimharris@FreeBSD.org , +and +.An \&Carl Delsey Aq Mt carl.r.delsey@intel.com . +This manual page was written by +.An \&Conrad Meyer Aq Mt cem@FreeBSD.org . diff --git a/tools/tools/ioat/ioatcontrol.c b/tools/tools/ioat/ioatcontrol.c new file mode 100644 index 0000000..c9c1a29 --- /dev/null +++ b/tools/tools/ioat/ioatcontrol.c @@ -0,0 +1,69 @@ +/*- + * Copyright (C) 2012 Intel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +__FBSDID("$FreeBSD$"); + +#include <sys/ioctl.h> + +#include <fcntl.h> +#include <stdio.h> +#include <stdint.h> +#include <stdlib.h> +#include <sysexits.h> +#include <unistd.h> + +#include "ioat_test.h" + +int +main(int argc, char **argv) +{ + struct ioat_test t; + int fd; + + if (argc < 3) { + printf("Usage: %s <channel #> <num_loops>\n", argv[0]); + return (EX_USAGE); + } + + t.channel_index = atoi(argv[1]); + if (t.channel_index > 8) { + printf("Channel number must be between 0 and 7.\n"); + return (EX_USAGE); + } + + t.num_loops = atoi(argv[2]); + + fd = open("/dev/ioat_test", O_RDWR); + if (fd < 0) { + printf("Cannot open /dev/ioat_test\n"); + return (EX_UNAVAILABLE); + } + + (void)ioctl(fd, IOAT_DMATEST, &t); + close(fd); + + return (t.status); +} |