diff options
author | Conrad Meyer <cem@FreeBSD.org> | 2015-10-26 19:34:12 +0000 |
---|---|---|
committer | Conrad Meyer <cem@FreeBSD.org> | 2015-10-26 19:34:12 +0000 |
commit | 2a4fd6b17a3ca38cb1f1cdc5154ba59c66199e38 (patch) | |
tree | 556d1a6d688264cbe1665811bb99876a56115293 /sys/dev/ioat/ioat.h | |
parent | 9e3bbf26a9a1fad9d718cd990fc7ac8401906c13 (diff) | |
download | src-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 'sys/dev/ioat/ioat.h')
-rw-r--r-- | sys/dev/ioat/ioat.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/dev/ioat/ioat.h b/sys/dev/ioat/ioat.h index 46f9769be824..e99714df275f 100644 --- a/sys/dev/ioat/ioat.h +++ b/sys/dev/ioat/ioat.h @@ -68,6 +68,14 @@ void ioat_put_dmaengine(bus_dmaengine_t dmaengine); void ioat_acquire(bus_dmaengine_t dmaengine); void ioat_release(bus_dmaengine_t dmaengine); +/* + * Issue a blockfill operation. The 64-bit pattern 'fillpattern' is written to + * 'len' physically contiguous bytes at 'dst'. + */ +struct bus_dmadesc *ioat_blockfill(bus_dmaengine_t dmaengine, bus_addr_t dst, + uint64_t fillpattern, bus_size_t len, bus_dmaengine_callback_t callback_fn, + void *callback_arg, uint32_t flags); + /* Issues the copy data operation */ struct bus_dmadesc *ioat_copy(bus_dmaengine_t dmaengine, bus_addr_t dst, bus_addr_t src, bus_size_t len, bus_dmaengine_callback_t callback_fn, |