IOATCONTROL(8)

NAME
ioatcontrol - Userspace tool to test ioat(4)

SYNOPSIS
ioatcontrol [-c period] [-E] [-e] [-f] [-m] [-V] [-x] [-X] [-z] channel_number num_txns [bufsize [chain-len [duration]]]
ioatcontrol -r [-c period] [-v] [-V] [-w] [-z] channel_number address [bufsize]

DESCRIPTION
ioatcontrol allows one to issue some number of test operations to the ioat(4) driver on a specific hardware channel. The arguments are as follows:

-c period
    Configure the channel's interrupt coalescing period, in microseconds (defaults to 0).

-E  Test contiguous 8k copy.

-e  Test non-contiguous 8k copy.

-f  Test block fill (by default, ioatcontrol tests copy)

-m  Test memcpy instead of DMA.

-V  Verify copies/fills for accuracy

-x  Test DMA CRC.

-X  Test DMA copy with CRC.

-z  Zero device statistics before running test.

Alternatively one can use ioatcontrol -r to issue DMA to or from a specific address. The arguments in "raw" mode are:

-c period
    As above.

-v  address is a kernel virtual address (by default, address is assumed to be a physical address)

-V  Verify copies/fills for accuracy

-w  Write to the specified address (by default, ioatcontrol -r reads)

-z  As above.

ioatcontrol operates in one of two modes; if the duration argument is passed, ioatcontrol tries to estimate the copy rate in bytes per second by running num_txns repeatedly in loop. If duration is not passed, ioatcontrol only runs through num_txns once and prints the total bytes copied, as well as error information.

The bufsize argument determines the size of buffers to use for each ioat_copy() invocation. The default is 256 KB. In raw mode, the default is 4 KB.

The chain-len argument determines the number of copies to chain together in a single DMA transaction. The default is 1.

The duration argument specifies an approximate time limit for the test, in milliseconds.

The test will allocate two chunks of memory for each component of each transaction's chain. It will initialize them with specific data patterns. During the test, it submits DMA requests to copy between pairs of buffers. If the -V flag was specified, it will compare the contents in the callback for a copy error.

FILES
/dev/ioat_test

The interface between ioatcontrol and ioat(4). ioat(4) exposes it with hw.ioat.enable_ioat_test=1.

DIAGNOSTICS
The wait channel test_submit indicates that the test code has enqueued all requested transactions and is waiting on the IOAT hardware to complete one before issuing another operation.

SEE ALSO
ioat(4)

HISTORY
The ioat(4) driver first appeared in FreeBSD 11.0.

AUTHORS
The ioat(4) driver and ioatcontrol tool were developed by Jim Harris <jimharris@FreeBSD.org>, Carl Delsey <carl.r.delsey@intel.com>, and Conrad Meyer <cem@FreeBSD.org>. This manual page was written by Conrad Meyer <cem@FreeBSD.org>.