aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/ioat/ioat.h
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 /sys/dev/ioat/ioat.h
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 'sys/dev/ioat/ioat.h')
-rw-r--r--sys/dev/ioat/ioat.h8
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,