dmaengine: idxd: Add descriptor definitions for translation fetch operation
authorFenghua Yu <fenghua.yu@intel.com>
Fri, 3 Mar 2023 21:34:13 +0000 (13:34 -0800)
committerVinod Koul <vkoul@kernel.org>
Fri, 31 Mar 2023 11:55:26 +0000 (17:25 +0530)
The translation fetch operation (0x0A) fetches address translations for the
address range specified in the descriptor by issuing address translation
(ATS) requests to the IOMMU.

Add descriptor definitions for the operation so that user can use DSA
to accelerate translation fetch.

Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Link: https://lore.kernel.org/r/20230303213413.3357431-4-fenghua.yu@intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
include/uapi/linux/idxd.h

index 4c12e93..fc47635 100644 (file)
@@ -72,6 +72,7 @@ enum dsa_opcode {
        DSA_OPCODE_CR_DELTA,
        DSA_OPCODE_AP_DELTA,
        DSA_OPCODE_DUALCAST,
+       DSA_OPCODE_TRANSL_FETCH,
        DSA_OPCODE_CRCGEN = 0x10,
        DSA_OPCODE_COPY_CRC,
        DSA_OPCODE_DIF_CHECK,
@@ -182,6 +183,7 @@ struct dsa_hw_desc {
                uint64_t        pattern;
                uint64_t        desc_list_addr;
                uint64_t        pattern_lower;
+               uint64_t        transl_fetch_addr;
        };
        union {
                uint64_t        dst_addr;
@@ -192,6 +194,7 @@ struct dsa_hw_desc {
        union {
                uint32_t        xfer_size;
                uint32_t        desc_count;
+               uint32_t        region_size;
        };
        uint16_t        int_handle;
        uint16_t        rsvd1;
@@ -249,6 +252,12 @@ struct dsa_hw_desc {
                /* Fill */
                uint64_t        pattern_upper;
 
+               /* Translation fetch */
+               struct {
+                       uint64_t        transl_fetch_res;
+                       uint32_t        region_stride;
+               };
+
                /* DIX generate */
                struct {
                        uint8_t         dix_gen_res;