aboutsummaryrefslogtreecommitdiff
path: root/tools/tools/ioat/ioatcontrol.c
diff options
context:
space:
mode:
authorConrad Meyer <cem@FreeBSD.org>2015-10-26 19:34:12 +0000
committerConrad Meyer <cem@FreeBSD.org>2015-10-26 19:34:12 +0000
commit2a4fd6b17a3ca38cb1f1cdc5154ba59c66199e38 (patch)
tree556d1a6d688264cbe1665811bb99876a56115293 /tools/tools/ioat/ioatcontrol.c
parent9e3bbf26a9a1fad9d718cd990fc7ac8401906c13 (diff)
downloadsrc-2a4fd6b17a3ca38cb1f1cdc5154ba59c66199e38.tar.gz
src-2a4fd6b17a3ca38cb1f1cdc5154ba59c66199e38.zip
ioat: Add support for Block Fill operations
The IOAT hardware supports writing a 64-bit pattern to some destination buffer. The same limitations on buffer length apply as for copy operations. Throughput is a bit higher (probably because fill does not have to spend bandwidth reading from a source in memory). Support for testing Block Fill has been added to ioatcontrol(8) and the ioat_test device. ioatcontrol(8) accepts the '-f' flag, which tests Block Fill. (If the flag is omitted, the tool tests copy by default.) The '-V' flag, in conjunction with '-f', verifies that buffers are filled in the expected pattern. Tested on: Broadwell DE (Xeon D-1500) Sponsored by: EMC / Isilon Storage Division
Notes
Notes: svn path=/head/; revision=290021
Diffstat (limited to 'tools/tools/ioat/ioatcontrol.c')
-rw-r--r--tools/tools/ioat/ioatcontrol.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/tools/tools/ioat/ioatcontrol.c b/tools/tools/ioat/ioatcontrol.c
index 88fbea657fa3..e55ce4f605d3 100644
--- a/tools/tools/ioat/ioatcontrol.c
+++ b/tools/tools/ioat/ioatcontrol.c
@@ -48,7 +48,7 @@ static void
usage(void)
{
- printf("Usage: %s [-V] <channel #> <txns> [<bufsize> "
+ printf("Usage: %s [-fV] <channel #> <txns> [<bufsize> "
"[<chain-len> [duration]]]\n", getprogname());
exit(EX_USAGE);
}
@@ -58,9 +58,13 @@ main(int argc, char **argv)
{
struct ioat_test t;
int fd, ch;
+ bool fflag;
- while ((ch = getopt(argc, argv, "V")) != -1) {
+ while ((ch = getopt(argc, argv, "fV")) != -1) {
switch (ch) {
+ case 'f':
+ fflag = true;
+ break;
case 'V':
t.verify = true;
break;
@@ -78,6 +82,10 @@ main(int argc, char **argv)
t.buffer_size = 256 * 1024;
t.chain_depth = 2;
t.duration = 0;
+ t.testkind = IOAT_TEST_DMA;
+
+ if (fflag)
+ t.testkind = IOAT_TEST_FILL;
t.channel_index = atoi(argv[0]);
if (t.channel_index > 8) {