summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorcem <cem@FreeBSD.org>2016-02-13 19:01:56 +0000
committercem <cem@FreeBSD.org>2016-02-13 19:01:56 +0000
commit558491d7a70d9fcc2d4f523aaf4b2c1ab8881baf (patch)
tree3b56592b5aab142a9d51c08388c157fe588812b8 /sys/dev
parent3275ec640958983e0a6f3979276b4be3b1cf8e15 (diff)
downloadFreeBSD-src-558491d7a70d9fcc2d4f523aaf4b2c1ab8881baf.zip
FreeBSD-src-558491d7a70d9fcc2d4f523aaf4b2c1ab8881baf.tar.gz
ioat(4): Decode/define more capabilities, operations
These are defined in the Intel Haswell EDS volume 2 (registers) (507849 v2.1). Sponsored by: EMC / Isilon Storage Division
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/ioat/ioat_hw.h8
-rw-r--r--sys/dev/ioat/ioat_internal.h16
2 files changed, 23 insertions, 1 deletions
diff --git a/sys/dev/ioat/ioat_hw.h b/sys/dev/ioat/ioat_hw.h
index 46ffaeb..6dfe9a6 100644
--- a/sys/dev/ioat/ioat_hw.h
+++ b/sys/dev/ioat/ioat_hw.h
@@ -56,8 +56,13 @@ __FBSDID("$FreeBSD$");
#define IOAT_DMACAPABILITY_OFFSET 0x10
#define IOAT_DMACAP_PB (1 << 0)
+#define IOAT_DMACAP_CRC (1 << 1)
+#define IOAT_DMACAP_MARKER_SKIP (1 << 2)
+#define IOAT_DMACAP_OLD_XOR (1 << 3)
#define IOAT_DMACAP_DCA (1 << 4)
+#define IOAT_DMACAP_MOVECRC (1 << 5)
#define IOAT_DMACAP_BFILL (1 << 6)
+#define IOAT_DMACAP_EXT_APIC (1 << 7)
#define IOAT_DMACAP_XOR (1 << 8)
#define IOAT_DMACAP_PQ (1 << 9)
#define IOAT_DMACAP_DMA_DIF (1 << 10)
@@ -69,7 +74,8 @@ __FBSDID("$FreeBSD$");
#define IOAT_DMACAP_STR \
"\20\24Completion_Timeout_Support\23DMA_with_Multicasting_Support" \
"\22RAID_Super_descriptors\16Descriptor_Write_Back_Error_Support" \
- "\13DMA_with_DIF\12PQ\11XOR\07Block_Fill\05DCA\01Page_Break"
+ "\13DMA_with_DIF\12PQ\11XOR\10Extended_APIC_ID\07Block_Fill\06Move_CRC" \
+ "\05DCA\04Old_XOR\03Marker_Skipping\02CRC\01Page_Break"
/* DMA Channel Registers */
#define IOAT_CHANCTRL_OFFSET 0x80
diff --git a/sys/dev/ioat/ioat_internal.h b/sys/dev/ioat/ioat_internal.h
index 1b24851..42201bd 100644
--- a/sys/dev/ioat/ioat_internal.h
+++ b/sys/dev/ioat/ioat_internal.h
@@ -346,6 +346,22 @@ struct ioat_descriptor {
bus_addr_t hw_desc_bus_addr;
};
+/* Unsupported by this driver at this time. */
+#define IOAT_OP_MOVECRC 0x41
+#define IOAT_OP_MOVECRC_TEST 0x42
+#define IOAT_OP_MOVECRC_STORE 0x43
+#define IOAT_OP_CRC 0x81
+#define IOAT_OP_CRC_TEST 0x82
+#define IOAT_OP_CRC_STORE 0x83
+#define IOAT_OP_MARKER 0x84
+
+/*
+ * Deprecated OPs -- v3 DMA generates an abort if given these. And this driver
+ * doesn't support anything older than v3.
+ */
+#define IOAT_OP_OLD_XOR 0x85
+#define IOAT_OP_OLD_XOR_VAL 0x86
+
enum ioat_ref_kind {
IOAT_DMAENGINE_REF = 0,
IOAT_ACTIVE_DESCR_REF,
OpenPOWER on IntegriCloud