[Accel-config] Re: [PATCH v1] accel-config/test: Align accfg/idxd.h with that in Kernel
Dave Jiang <dave.jiang at intel.com> Fri, 05 Aug 2022 09:24:12 -0700
| Newsgroups | dev.linux.lists.accel-config |
|---|---|
| Message-ID | <[email protected]> |
--===============0598958079360460614==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
On 8/5/2022 9:09 AM, Zhang, Li4 wrote:
> Duplicate Kernel idxd.h to accfg/idxd.h, create idxd_test.h for
> reserving the extra defines used by DSA/IAA test code.
The changes in iax_test.h, what are the reasons they can't go into =
kernel idxd.h? They seem to be hardware descriptor changes right? I'm =
not seeing any software specific bits. Can you please create one or more =
patches for usptream to make the changes on the kernel side. And then =
lets settle accel-config changes.
Also, for idxd.h, I'm seeing a lot of DSA 2 definitions. Those can't go =
public until DSA 2 spec is public. I also see some bits like ioctls =
defines that are not invalid due to rejection of OTC arch team on =
inter-domain design, so those need to be dropped.
Fenghua, can you take a look at the dsa2 branch of accel-config and help =
drop the inter-domain enablings please?
>
> Signed-off-by: Li Zhang <li4.zhang(a)intel.com>
> ---
> accfg/idxd.h | 295 ++++++++++++++++++++++++++----------
> test/accel_test.h | 5 +-
> test/dsa.c | 89 ++++++-----
> test/dsa_prep.c | 378 +++++++++++++++++++++++++++-------------------
> test/iaa.c | 66 ++++----
> test/iaa_prep.c | 94 +++++++-----
> test/iaa_test.c | 16 +-
> test/idxd_test.h | 118 +++++++++++++++
> 8 files changed, 714 insertions(+), 347 deletions(-)
> create mode 100644 test/idxd_test.h
>
> diff --git a/accfg/idxd.h b/accfg/idxd.h
> index b460aa3..f9e2fe0 100644
> --- a/accfg/idxd.h
> +++ b/accfg/idxd.h
> @@ -1,10 +1,10 @@
> -/* SPDX-License-Identifier: LGPL-2.1 */
> -/* Copyright(c) 2019 Intel Corporation. All rights reserved. */
> -
> +/* SPDX-License-Identifier: LGPL-2.1 WITH Linux-syscall-note */
> +/* Copyright(c) 2019 Intel Corporation. All rights rsvd. */
> #ifndef _USR_IDXD_H_
> #define _USR_IDXD_H_
> =
> -#include <stdint.h>
> +#include <linux/types.h>
> +#include <linux/ioctl.h>
> =
> /* Driver command error status */
> enum idxd_scmd_stat {
> @@ -26,7 +26,7 @@ enum idxd_scmd_stat {
> IDXD_SCMD_WQ_NO_SIZE =3D 0x800e0000,
> IDXD_SCMD_WQ_NO_PRIV =3D 0x800f0000,
> IDXD_SCMD_WQ_IRQ_ERR =3D 0x80100000,
> - IDXD_SCMD_WQ_NO_DRV_NAME =3D 0x80200000,
> + IDXD_SCMD_DEV_EVL_ERR =3D 0x80100000,
> };
> =
> #define IDXD_SCMD_SOFTERR_MASK 0x80000000
> @@ -51,16 +51,11 @@ enum idxd_scmd_stat {
> =
> /* IAX */
> #define IDXD_OP_FLAG_RD_SRC2_AECS 0x010000
> -#define IDXD_OP_FLAG_WR_SRC2_CMPL 0x040000
> -
> -#define IDXD_COMPRESS_FLAG_EOB_BFINAL 0x000c
> -#define IDXD_COMPRESS_FLAG_FLUSH_OUTPUT 0x0002
> -
> -#define IDXD_DECOMPRESS_FLAG_SELECT_EOB_BFINAL 0x0010
> -#define IDXD_DECOMPRESS_FLAG_CHECK_EOB 0x0008
> -#define IDXD_DECOMPRESS_FLAG_STOP_ON_EOB 0x0004
> -#define IDXD_DECOMPRESS_FLAG_FLUSH_OUTPUT 0x0002
> -#define IDXD_DECOMPRESS_FLAG_EN_DECOMPRESS 0x0001
> +#define IDXD_OP_FLAG_RD_SRC2_2ND 0x020000
> +#define IDXD_OP_FLAG_WR_SRC2_AECS_COMP 0x040000
> +#define IDXD_OP_FLAG_WR_SRC2_AECS_OVFL 0x080000
> +#define IDXD_OP_FLAG_SRC2_STS 0x100000
> +#define IDXD_OP_FLAG_CRC_RFC3720 0x200000
> =
> /* Opcode */
> enum dsa_opcode {
> @@ -81,6 +76,17 @@ enum dsa_opcode {
> DSA_OPCODE_DIF_STRP,
> DSA_OPCODE_DIF_UPDT,
> DSA_OPCODE_CFLUSH =3D 0x20,
> + DSA_OPCODE_UPDATE_WIN,
> + DSA_OPCODE_RS_IPASID_MEMCOPY =3D 0x23,
> + DSA_OPCODE_RS_IPASID_FILL,
> + DSA_OPCODE_RS_IPASID_COMPARE,
> + DSA_OPCODE_RS_IPASID_COMPVAL,
> + DSA_OPCODE_RS_IPASID_CFLUSH,
> + DSA_OPCODE_URS_IPASID_MEMCOPY =3D 0x33,
> + DSA_OPCODE_URS_IPASID_FILL,
> + DSA_OPCODE_URS_IPASID_COMPARE,
> + DSA_OPCODE_URS_IPASID_COMPVAL,
> + DSA_OPCODE_URS_IPASID_CFLUSH,
> };
> =
> enum iax_opcode {
> @@ -89,13 +95,13 @@ enum iax_opcode {
> IAX_OPCODE_MEMMOVE,
> IAX_OPCODE_DECOMPRESS =3D 0x42,
> IAX_OPCODE_COMPRESS,
> - IAX_OPCODE_CRC64 =3D 0x44,
> - IAX_OPCODE_ZDECOMPRESS32 =3D 0x48,
> - IAX_OPCODE_ZDECOMPRESS16,
> - IAX_OPCODE_ZCOMPRESS32 =3D 0x4c,
> - IAX_OPCODE_ZCOMPRESS16,
> + IAX_OPCODE_CRC64,
> + IAX_OPCODE_ZERO_DECOMP_32 =3D 0x48,
> + IAX_OPCODE_ZERO_DECOMP_16,
> + IAX_OPCODE_ZERO_COMP_32 =3D 0x4c,
> + IAX_OPCODE_ZERO_COMP_16,
> IAX_OPCODE_SCAN =3D 0x50,
> - IAX_OPCODE_SET_MEMBERSHIP,
> + IAX_OPCODE_SET_MEMBER,
> IAX_OPCODE_EXTRACT,
> IAX_OPCODE_SELECT,
> IAX_OPCODE_RLE_BURST,
> @@ -134,12 +140,15 @@ enum dsa_completion_status {
> DSA_COMP_HW_ERR1,
> DSA_COMP_HW_ERR_DRB,
> DSA_COMP_TRANSLATION_FAIL,
> + DSA_COMP_DRAIN_EVL =3D 0x26,
> + DSA_COMP_BATCH_EVL_ERR,
> };
> =
> enum iax_completion_status {
> IAX_COMP_NONE =3D 0,
> IAX_COMP_SUCCESS,
> IAX_COMP_PAGE_FAULT_IR =3D 0x04,
> + IAX_COMP_ANALYTICS_ERROR =3D 0x0a,
> IAX_COMP_OUTBUF_OVERFLOW,
> IAX_COMP_BAD_OPCODE =3D 0x10,
> IAX_COMP_INVALID_FLAGS,
> @@ -160,13 +169,17 @@ enum iax_completion_status {
> IAX_COMP_WATCHDOG,
> IAX_COMP_INVALID_COMP_FLAG =3D 0x30,
> IAX_COMP_INVALID_FILTER_FLAG,
> - IAX_COMP_INVALID_NUM_ELEMS =3D 0x33,
> + IAX_COMP_INVALID_INPUT_SIZE,
> + IAX_COMP_INVALID_NUM_ELEMS,
> + IAX_COMP_INVALID_SRC1_WIDTH,
> + IAX_COMP_INVALID_INVERT_OUT,
> };
> =
> #define DSA_COMP_STATUS_MASK 0x7f
> #define DSA_COMP_STATUS_WRITE 0x80
> +#define DSA_COMP_STATUS(status) ((status) & DSA_COMP_STATUS_MASK)
> =
> -struct hw_desc {
> +struct dsa_hw_desc {
> uint32_t pasid:20;
> uint32_t rsvd:11;
> uint32_t priv:1;
> @@ -178,24 +191,21 @@ struct hw_desc {
> uint64_t rdback_addr;
> uint64_t pattern;
> uint64_t desc_list_addr;
> + uint64_t win_base_addr;
> };
> union {
> uint64_t dst_addr;
> uint64_t rdback_addr2;
> uint64_t src2_addr;
> uint64_t comp_pattern;
> + uint64_t win_size;
> };
> union {
> uint32_t xfer_size;
> uint32_t desc_count;
> };
> uint16_t int_handle;
> - union {
> - uint16_t rsvd1;
> - uint16_t iax_compr_flags;
> - uint16_t iax_decompr_flags;
> - uint16_t iax_crc64_flags;
> - };
> + uint16_t rsvd1;
> union {
> uint8_t expected_res;
> /* create delta record */
> @@ -246,41 +256,135 @@ struct hw_desc {
> uint16_t dest_app_tag_mask;
> uint16_t dest_app_tag_seed;
> };
> - /* IAX common */
> +
> + /* restricted ops with interpasid */
> + struct {
> + uint8_t rest_ip_res1[20];
> + union {
> + uint16_t src_pasid_hndl;
> + uint8_t rest_ip_res2[2];
> + uint16_t src1_pasid_hndl;
> + };
> + union {
> + uint16_t dest_pasid_hndl;
> + uint16_t src2_pasid_hndl;
> + uint8_t rest_ip_res3[2];
> + };
> + };
> +
> + /* unrestricted ops with interpasid */
> struct {
> - uint64_t iax_src2_addr;
> - uint32_t iax_max_dst_size;
> - uint32_t iax_src2_xfer_size;
> - uint32_t iax_filter_flags;
> - uint32_t iax_num_inputs;
> + uint8_t unrest_ip_res1[8];
> + union {
> + /* Generic */
> + struct {
> + uint32_t addr1_pasid:20;
> + uint32_t unrest_ip_res2:11;
> + uint32_t addr1_priv:1;
> + };
> + /* Memcopy, Compare Pattern */
> + struct {
> + uint32_t src_pasid:20;
> + uint32_t unrest_ip_res3:11;
> + uint32_t unrest_src_priv:1;
> + };
> + /* Fill, Cache Flush */
> + struct {
> + uint32_t unrest_ip_res4: 32;
> + };
> + /* Compare */
> + struct {
> + uint32_t src1_pasid:20;
> + uint32_t unrest_ip_res5:11;
> + uint32_t unrest_src1_priv:1;
> + };
> + };
> + union {
> + /* Generic */
> + struct {
> + uint32_t addr2_pasid:20;
> + uint32_t unrest_ip_res6:11;
> + uint32_t addr2_priv:1;
> + };
> + /* Memcopy, Fill */
> + struct {
> + uint32_t dest_pasid:20;
> + uint32_t unrest_ip_res7:11;
> + uint32_t unrest_dest_priv:1;
> + };
> + /* Compare */
> + struct {
> + uint32_t src2_pasid:20;
> + uint32_t unrest_ip_res8:11;
> + uint32_t unrest_src2_priv:1;
> + };
> + /* Compare Pattern */
> + struct {
> + uint32_t unrest_ip_res9: 32;
> + };
> + };
> + uint64_t unrest_ip_res10:48;
> + uint16_t ipt_handle;
> };
> - /* CRC64 */
> +
> + /* Update window */
> struct {
> - uint64_t iax_crc64_rsvd;
> - uint64_t iax_crc64_rsvd2;
> - uint64_t iax_crc64_poly;
> + uint8_t update_win_resv2[21];
> + uint8_t idpt_win_flags;
> + uint16_t idpt_win_handle;
> };
> =
> uint8_t op_specific[24];
> };
> } __attribute__((packed));
> =
> -struct raw_desc {
> +struct iax_hw_desc {
> + uint32_t pasid:20;
> + uint32_t rsvd:11;
> + uint32_t priv:1;
> + uint32_t flags:24;
> + uint32_t opcode:8;
> + uint64_t completion_addr;
> + uint64_t src1_addr;
> + uint64_t dst_addr;
> + uint32_t src1_size;
> + uint16_t int_handle;
> + union {
> + uint16_t compr_flags;
> + uint16_t decompr_flags;
> + };
> + uint64_t src2_addr;
> + uint32_t max_dst_size;
> + uint32_t src2_size;
> + uint32_t filter_flags;
> + uint32_t num_inputs;
> +} __attribute__((packed));
> +
> +struct dsa_raw_desc {
> uint64_t field[8];
> } __attribute__((packed));
> =
> +#define DSA_COMP_FI_FA_MASKED_MASK 0x1
> +#define DSA_COMP_FI_FA_MASKED_SHIFT 0x0
> +#define DSA_COMP_FI_OP_ID_MASK 0x7
> +#define DSA_COMP_FI_OP_ID_SHIFT 0x1
> +
> /*
> * The status field will be modified by hardware, therefore it should be
> - * __volatile__ and prevent the compiler from optimize the read.
> + * volatile and prevent the compiler from optimize the read.
> */
> -struct completion_record {
> - __volatile__ uint8_t status;
> +struct dsa_completion_record {
> + volatile uint8_t status;
> union {
> uint8_t result;
> uint8_t dif_status;
> };
> - uint16_t rsvd;
> - uint32_t bytes_completed;
> + uint8_t fault_info;
> + uint8_t rsvd;
> + union {
> + uint32_t bytes_completed;
> + uint32_t descs_completed;
> + };
> uint64_t fault_addr;
> union {
> /* common record */
> @@ -317,46 +421,77 @@ struct completion_record {
> uint16_t dif_upd_dest_app_tag;
> };
> =
> - /* IAX common */
> - struct {
> - uint32_t iax_invalid_flags;
> - uint32_t iax_rsvd;
> - uint32_t iax_output_size;
> - uint8_t iax_output_bits;
> - uint8_t iax_rsvd2;
> - uint16_t iax_xor_chksum;
> - uint32_t iax_crc;
> - union {
> - uint32_t iax_min;
> - uint32_t iax_first;
> - };
> - union {
> - uint32_t iax_max;
> - uint32_t iax_last;
> - };
> - union {
> - uint32_t iax_sum;
> - uint32_t iax_population_cnt;
> - };
> - };
> + uint8_t op_specific[16];
> + };
> +} __attribute__((packed));
> =
> - /* CRC64 */
> - struct {
> - uint32_t crc64_invalid_flags;
> - uint32_t crc64_rsvd;
> - uint64_t crc64_rsvd2;
> - uint64_t crc64_rsvd3;
> - uint64_t crc64_result;
> - };
> +struct dsa_raw_completion_record {
> + uint64_t field[4];
> +} __attribute__((packed));
> =
> - /* To be compatible with IAX, alloc 64 bytes*/
> - uint8_t op_specific[48];
> - };
> +struct iax_completion_record {
> + volatile uint8_t status;
> + uint8_t error_code;
> + uint8_t fault_info;
> + uint8_t rsvd;
> + uint32_t bytes_completed;
> + uint64_t fault_addr;
> + uint32_t invalid_flags;
> + uint32_t rsvd2;
> + uint32_t output_size;
> + uint8_t output_bits;
> + uint8_t rsvd3;
> + uint16_t xor_csum;
> + uint32_t crc;
> + uint32_t min;
> + uint32_t max;
> + uint32_t sum;
> + uint64_t rsvd4[2];
> } __attribute__((packed));
> =
> -struct raw_completion_record {
> - /* To be compatible with IAX, alloc 64 bytes*/
> +struct iax_raw_completion_record {
> uint64_t field[8];
> } __attribute__((packed));
> =
> +#define IDXD_TYPE ('d')
> +#define IDXD_IOC_BASE 100
> +#define IDXD_WIN_BASE 200
> +
> +enum idxd_win_type {
> + IDXD_WIN_TYPE_SA_SS =3D 0,
> + IDXD_WIN_TYPE_SA_MS,
> +};
> +
> +/* IDXD window flags */
> +#define IDXD_WIN_FLAGS_PROT_READ 0x0001
> +#define IDXD_WIN_FLAGS_PROT_WRITE 0x0002
> +#define IDXD_WIN_FLAGS_WIN_CHECK 0x0004
> +#define IDXD_WIN_FLAGS_OFFSET_MODE 0x0008
> +
> +#define IDXD_WIN_FLAGS_MASK (IDXD_WIN_FLAGS_PROT_READ | IDXD_WIN_FLAGS_=
PROT_WRITE |\
> + IDXD_WIN_FLAGS_WIN_CHECK | IDXD_WIN_FLAGS_OFFSET_MODE)
> +
> +struct idxd_win_param {
> + uint64_t base; /* Window base */
> + uint64_t size; /* Window size */
> + uint32_t type; /* Window type, see enum idxd_win_type */
> + uint16_t flags; /* See IDXD windows flags */
> + uint16_t handle; /* Window handle returned by driver */
> +} __attribute__((packed));
> +
> +struct idxd_win_attach {
> + uint32_t fd; /* Window file descriptor returned by IDXD_WIN_CREATE */
> + uint16_t handle; /* Window handle returned by driver */
> +} __attribute__((packed));
> +
> +struct idxd_win_fault {
> + uint64_t offset; /* Window offset of faulting address */
> + uint64_t len; /* Faulting range */
> + uint32_t write_fault; /* Fault generated on write */
> +} __attribute__((packed));
> +
> +#define IDXD_WIN_CREATE _IOWR(IDXD_TYPE, IDXD_IOC_BASE + 1, struct idxd=
_win_param)
> +#define IDXD_WIN_ATTACH _IOR(IDXD_TYPE, IDXD_IOC_BASE + 2, struct idxd_=
win_attach)
> +#define IDXD_WIN_FAULT _IOR(IDXD_TYPE, IDXD_WIN_BASE + 1, stru=
ct idxd_win_fault)
> +
> #endif
> diff --git a/test/accel_test.h b/test/accel_test.h
> index 9ea16ec..b80c82c 100644
> --- a/test/accel_test.h
> +++ b/test/accel_test.h
> @@ -4,6 +4,7 @@
> #define __ACCEL_TEST_H__
> #include <accfg/libaccel_config.h>
> #include <accfg/idxd.h>
> +#include "idxd_test.h"
> #include "accfg_test.h"
> =
> #define SHARED 1
> @@ -187,7 +188,7 @@ static inline void dbg(const char *msg, ...)
> /* Dump hardware descriptor to log */
> static inline void dump_desc(struct hw_desc *hw)
> {
> - struct raw_desc *rhw =3D (void *)hw;
> + struct dsa_raw_desc *rhw =3D (void *)hw;
> int i;
> =
> dbg("desc addr: %p\n", hw);
> @@ -200,7 +201,7 @@ static inline void dump_desc(struct hw_desc *hw)
> static inline void dump_compl_rec(struct completion_record *compl, int =
compl_size)
> {
> int i;
> - struct raw_completion_record *rcompl =3D (void *)compl;
> + struct iax_raw_completion_record *rcompl =3D (void *)compl;
> int num_qword =3D compl_size / sizeof(uint64_t);
> =
> dbg("completion record addr: %p\n", compl);
> diff --git a/test/dsa.c b/test/dsa.c
> index 3d982d0..e42b49f 100644
> --- a/test/dsa.c
> +++ b/test/dsa.c
> @@ -14,6 +14,7 @@
> #include <linux/vfio.h>
> #include <accfg/libaccel_config.h>
> #include <accfg/idxd.h>
> +#include "idxd_test.h"
> #include "accel_test.h"
> #include "dsa.h"
> #include "dsa_crc32.h"
> @@ -1534,19 +1535,21 @@ int task_result_verify_memfill(struct task *tsk, =
int mismatch_expected)
> =
> int task_result_verify_compare(struct task *tsk, int mismatch_expected)
> {
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> +
> if (!mismatch_expected) {
> - if (tsk->comp->result) {
> + if (compl->result) {
> err("compval failed at %#x\n",
> - tsk->comp->bytes_completed);
> + compl->bytes_completed);
> return -ENXIO;
> }
> return ACCTEST_STATUS_OK;
> }
> =
> /* mismatch_expected */
> - if (tsk->comp->result) {
> + if (compl->result) {
> info("expected mismatch at index %#x\n",
> - tsk->comp->bytes_completed);
> + compl->bytes_completed);
> return ACCTEST_STATUS_OK;
> }
> =
> @@ -1556,19 +1559,21 @@ int task_result_verify_compare(struct task *tsk, =
int mismatch_expected)
> =
> int task_result_verify_compval(struct task *tsk, int mismatch_expected)
> {
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> +
> if (!mismatch_expected) {
> - if (tsk->comp->result) {
> + if (compl->result) {
> err("compval failed at %#x\n",
> - tsk->comp->bytes_completed);
> + compl->bytes_completed);
> return -ENXIO;
> }
> return ACCTEST_STATUS_OK;
> }
> =
> /* mismatch_expected */
> - if (tsk->comp->result) {
> + if (compl->result) {
> info("expected mismatch at index %#x\n",
> - tsk->comp->bytes_completed);
> + compl->bytes_completed);
> return ACCTEST_STATUS_OK;
> }
> =
> @@ -1601,11 +1606,13 @@ int task_result_verify_dualcast(struct task *tsk,=
int mismatch_expected)
> int task_result_verify_ap_delta(struct task *tsk, int mismatch_expected)
> {
> int rc;
> - int data_size =3D (tsk->comp->status =3D=3D DSA_COMP_SUCCESS) ?
> - tsk->desc->xfer_size : tsk->comp->bytes_completed;
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> + int data_size =3D (compl->status =3D=3D DSA_COMP_SUCCESS) ?
> + hw->xfer_size : compl->bytes_completed;
> =
> - rc =3D memcmp((unsigned char *)tsk->desc->dst_addr,
> - (unsigned char *)tsk->desc->src2_addr, data_size);
> + rc =3D memcmp((unsigned char *)hw->dst_addr,
> + (unsigned char *)hw->src2_addr, data_size);
> if (rc) {
> err("apply delta mismatch, memcmp rc %d\n", rc);
> return -ENXIO;
> @@ -1679,23 +1686,25 @@ int task_result_verify_crcgen(struct task *tsk, i=
nt mismatch_expected)
> {
> unsigned int expected_crc =3D 0x0;
> unsigned int seed =3D 0;
> - int data_size =3D (tsk->comp->status =3D=3D DSA_COMP_SUCCESS) ?
> - tsk->desc->xfer_size : tsk->comp->bytes_completed;
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> + int data_size =3D (compl->status =3D=3D DSA_COMP_SUCCESS) ?
> + hw->xfer_size : compl->bytes_completed;
> =
> if (tsk->dflags & READ_CRC_SEED)
> seed =3D *tsk->crc_seed_addr;
> else
> seed =3D tsk->crc_seed;
> - expected_crc =3D dsa_calculate_crc32((void *)tsk->desc->src_addr,
> + expected_crc =3D dsa_calculate_crc32((void *)hw->src_addr,
> data_size, seed, tsk->dflags);
> printf("expected crc =3D %x\n", expected_crc);
> =
> if (!mismatch_expected) {
> - if (tsk->comp->crc_val !=3D expected_crc) {
> + if (compl->crc_val !=3D expected_crc) {
> printf("\033[0;31m");
> printf("error occurred");
> err("Generated Crc %#x is different than expected Crc %#x\n",
> - tsk->comp->crc_val, expected_crc);
> + compl->crc_val, expected_crc);
> printf("\033[0m");
> return -ENXIO;
> }
> @@ -1703,9 +1712,9 @@ int task_result_verify_crcgen(struct task *tsk, int=
mismatch_expected)
> }
> =
> /* mismatch_expected */
> - if (tsk->comp->crc_val !=3D expected_crc) {
> + if (compl->crc_val !=3D expected_crc) {
> info("expected mismatch in crcgen %#x\n",
> - tsk->comp->crc_val);
> + compl->crc_val);
> return ACCTEST_STATUS_OK;
> }
> return ACCTEST_STATUS_OK;
> @@ -1716,17 +1725,19 @@ int task_result_verify_crc_copy(struct task *tsk,=
int mismatch_expected)
> int rc;
> unsigned int seed =3D 0;
> unsigned int expected_crc =3D 0x0;
> - int data_size =3D (tsk->comp->status =3D=3D DSA_COMP_SUCCESS) ?
> - tsk->desc->xfer_size : tsk->comp->bytes_completed;
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> + int data_size =3D (compl->status =3D=3D DSA_COMP_SUCCESS) ?
> + hw->xfer_size : compl->bytes_completed;
> =
> if (tsk->dflags & READ_CRC_SEED)
> seed =3D *tsk->crc_seed_addr;
> else
> seed =3D tsk->crc_seed;
> - expected_crc =3D dsa_calculate_crc32((void *)tsk->desc->src_addr,
> + expected_crc =3D dsa_calculate_crc32((void *)hw->src_addr,
> data_size, seed, tsk->dflags);
> - rc =3D memcmp((unsigned char *)tsk->desc->src_addr,
> - (unsigned char *)tsk->desc->dst_addr, data_size);
> + rc =3D memcmp((unsigned char *)hw->src_addr,
> + (unsigned char *)hw->dst_addr, data_size);
> printf("rc memcmp =3D %x and expected crc =3D %x\n", rc, expected_crc);
> =
> if (rc) {
> @@ -1736,11 +1747,11 @@ int task_result_verify_crc_copy(struct task *tsk,=
int mismatch_expected)
> printf("\033[0m");
> return -ENXIO;
> }
> - if (tsk->comp->crc_val !=3D expected_crc) {
> + if (compl->crc_val !=3D expected_crc) {
> printf("\033[0;31m");
> printf("error occurred");
> err("Generated Crc %#x is different than expected Crc %#x\n",
> - tsk->comp->crc_val, expected_crc);
> + compl->crc_val, expected_crc);
> printf("\033[0m");
> return -ENXIO;
> }
> @@ -1770,7 +1781,7 @@ uint16_t dsa_calculate_crc_t10dif(unsigned char *bu=
ffer, size_t len, int flags)
> static int task_result_verify_dif_page_fault(struct task *tsk, unsigned=
long xfer_size,
> int mismatch_expected)
> {
> - struct hw_desc *hw =3D tsk->desc;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> int rc =3D 0;
> unsigned char *src1 =3D (unsigned char *)hw->src_addr;
> unsigned char *dst1 =3D (unsigned char *)hw->dst_addr;
> @@ -1821,17 +1832,18 @@ int task_result_verify_dif(struct task *tsk, unsi=
gned long xfer_size, int mismat
> unsigned long buf_size =3D dif_blk_arr[tsk->blk_idx_flg];
> unsigned char *src1 =3D (unsigned char *)tsk->src1;
> unsigned char *dst1 =3D (unsigned char *)tsk->dst1;
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> =
> - if (tsk->comp->status =3D=3D DSA_COMP_PAGE_FAULT_NOBOF ||
> - tsk->comp->status =3D=3D DSA_COMP_PAGE_FAULT_IR ||
> - tsk->comp->status =3D=3D 0x83) {
> - rc =3D task_result_verify_dif_page_fault(tsk, tsk->comp->bytes_complet=
ed, 0);
> + if (compl->status =3D=3D DSA_COMP_PAGE_FAULT_NOBOF ||
> + compl->status =3D=3D DSA_COMP_PAGE_FAULT_IR ||
> + compl->status =3D=3D 0x83) {
> + rc =3D task_result_verify_dif_page_fault(tsk, compl->bytes_completed, =
0);
> info("Partial DIF Src and Dest Checking Done\n");
> if (!rc)
> return ACCTEST_STATUS_OK;
> }
> =
> - if (tsk->comp->status =3D=3D 0x16)
> + if (compl->status =3D=3D 0x16)
> return ACCTEST_STATUS_OK;
> =
> info("Checking Src & Dst buffers\n");
> @@ -1860,7 +1872,7 @@ int task_result_verify_dif(struct task *tsk, unsign=
ed long xfer_size, int mismat
> =
> static int task_result_verify_dif_tags_page_fault(struct task *tsk, uns=
igned long xfer_size)
> {
> - struct hw_desc *hw =3D tsk->desc;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> unsigned long blks;
> unsigned long buf_size;
> unsigned char *dst1 =3D (uint8_t *)hw->dst_addr;
> @@ -1980,12 +1992,13 @@ int task_result_verify_dif_tags(struct task *tsk,=
unsigned long xfer_size)
> unsigned char tmp_buf;
> unsigned char dst_tag;
> unsigned long i;
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> =
> - info("compsts: %x\n", tsk->comp->status);
> - if (tsk->comp->status =3D=3D 0x83 ||
> - tsk->comp->status =3D=3D DSA_COMP_PAGE_FAULT_NOBOF ||
> - tsk->comp->status =3D=3D DSA_COMP_PAGE_FAULT_IR) {
> - rc =3D task_result_verify_dif_tags_page_fault(tsk, tsk->comp->bytes_co=
mpleted);
> + info("compsts: %x\n", compl->status);
> + if (compl->status =3D=3D 0x83 ||
> + compl->status =3D=3D DSA_COMP_PAGE_FAULT_NOBOF ||
> + compl->status =3D=3D DSA_COMP_PAGE_FAULT_IR) {
> + rc =3D task_result_verify_dif_tags_page_fault(tsk, compl->bytes_comple=
ted);
> info("Partial DIF Tags Checking Done\n");
> if (!rc)
> return ACCTEST_STATUS_OK;
> diff --git a/test/dsa_prep.c b/test/dsa_prep.c
> index 3bccda3..a34e464 100644
> --- a/test/dsa_prep.c
> +++ b/test/dsa_prep.c
> @@ -6,6 +6,7 @@
> #include <stdlib.h>
> #include <unistd.h>
> #include <accfg/idxd.h>
> +#include "idxd_test.h"
> #include "accel_test.h"
> #include "dsa.h"
> =
> @@ -16,7 +17,7 @@ void dsa_prep_noop(struct task *tsk)
> info("preparing descriptor for noop\n");
> =
> tsk->dflags =3D IDXD_OP_FLAG_CRAV | IDXD_OP_FLAG_RCR;
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->dst1),
> + acctest_prep_desc_common((struct hw_desc *)tsk->desc, tsk->opcode, (uin=
t64_t)(tsk->dst1),
> (uint64_t)(tsk->src1), 0, tsk->dflags);
> tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> tsk->comp->status =3D 0;
> @@ -29,7 +30,7 @@ void dsa_prep_drain(struct task *tsk)
> if (tsk->opcode =3D=3D DSA_OPCODE_MEMMOVE)
> tsk->opcode =3D DSA_OPCODE_DRAIN;
> =
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->dst1),
> + acctest_prep_desc_common((struct hw_desc *)tsk->desc, tsk->opcode, (uin=
t64_t)(tsk->dst1),
> (uint64_t)(tsk->src1), 0, tsk->dflags);
> tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> tsk->comp->status =3D 0;
> @@ -42,7 +43,7 @@ void dsa_prep_memcpy(struct task *tsk)
> if (tsk->opcode =3D=3D DSA_OPCODE_DRAIN)
> tsk->opcode =3D DSA_OPCODE_MEMMOVE;
> =
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->dst1),
> + acctest_prep_desc_common((struct hw_desc *)tsk->desc, tsk->opcode, (uin=
t64_t)(tsk->dst1),
> (uint64_t)(tsk->src1), tsk->xfer_size, tsk->dflags);
> tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> tsk->comp->status =3D 0;
> @@ -50,8 +51,8 @@ void dsa_prep_memcpy(struct task *tsk)
> =
> void dsa_reprep_memcpy(struct acctest_context *ctx, struct task *tsk)
> {
> - struct completion_record *compl =3D tsk->comp;
> - struct hw_desc *hw =3D tsk->desc;
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> =
> info("PF addr %#lx dir %d bc %#x\n",
> compl->fault_addr, compl->result,
> @@ -68,7 +69,7 @@ void dsa_reprep_memcpy(struct acctest_context *ctx, str=
uct task *tsk)
> =
> compl->status =3D 0;
> =
> - acctest_desc_submit(ctx, hw);
> + acctest_desc_submit(ctx, (struct hw_desc *)hw);
> }
> =
> void dsa_prep_batch_noop(struct batch_task *btsk)
> @@ -79,7 +80,7 @@ void dsa_prep_batch_noop(struct batch_task *btsk)
> =
> for (i =3D 0; i < btsk->task_num; i++) {
> sub_task =3D &btsk->sub_tasks[i];
> - acctest_prep_desc_common(sub_task->desc, sub_task->opcode,
> + acctest_prep_desc_common((struct hw_desc *)sub_task->desc, sub_task->o=
pcode,
> (uint64_t)(sub_task->dst1),
> (uint64_t)(sub_task->src1),
> 0, dflags);
> @@ -96,7 +97,7 @@ void dsa_prep_batch_memcpy(struct batch_task *btsk)
> =
> for (i =3D 0; i < btsk->task_num; i++) {
> sub_task =3D &btsk->sub_tasks[i];
> - acctest_prep_desc_common(sub_task->desc, sub_task->opcode,
> + acctest_prep_desc_common((struct hw_desc *)sub_task->desc, sub_task->o=
pcode,
> (uint64_t)(sub_task->dst1),
> (uint64_t)(sub_task->src1),
> sub_task->xfer_size, sub_task->dflags);
> @@ -110,7 +111,7 @@ void dsa_prep_memfill(struct task *tsk)
> info("preparing descriptor for memfill\n");
> =
> /* src_addr is the location of pattern for memfill descriptor */
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->dst1),
> + acctest_prep_desc_common((struct hw_desc *)tsk->desc, tsk->opcode, (uin=
t64_t)(tsk->dst1),
> tsk->pattern, tsk->xfer_size, tsk->dflags);
> tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> tsk->comp->status =3D 0;
> @@ -118,8 +119,8 @@ void dsa_prep_memfill(struct task *tsk)
> =
> void dsa_reprep_memfill(struct acctest_context *ctx, struct task *tsk)
> {
> - struct completion_record *compl =3D tsk->comp;
> - struct hw_desc *hw =3D tsk->desc;
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> =
> info("PF addr %#lx dir %d bc %#x\n",
> compl->fault_addr, compl->result,
> @@ -133,7 +134,7 @@ void dsa_reprep_memfill(struct acctest_context *ctx, =
struct task *tsk)
> =
> compl->status =3D 0;
> =
> - acctest_desc_submit(ctx, hw);
> + acctest_desc_submit(ctx, (struct hw_desc *)hw);
> }
> =
> void dsa_prep_batch_memfill(struct batch_task *btsk)
> @@ -143,7 +144,7 @@ void dsa_prep_batch_memfill(struct batch_task *btsk)
> =
> for (i =3D 0; i < btsk->task_num; i++) {
> sub_task =3D &btsk->sub_tasks[i];
> - acctest_prep_desc_common(sub_task->desc, sub_task->opcode,
> + acctest_prep_desc_common((struct hw_desc *)sub_task->desc, sub_task->o=
pcode,
> (uint64_t)(sub_task->dst1),
> sub_task->pattern,
> sub_task->xfer_size,
> @@ -157,7 +158,7 @@ void dsa_prep_compare(struct task *tsk)
> {
> info("preparing descriptor for compare\n");
> =
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->src1),
> + acctest_prep_desc_common((struct hw_desc *)tsk->desc, tsk->opcode, (uin=
t64_t)(tsk->src1),
> (uint64_t)(tsk->src2), tsk->xfer_size, tsk->dflags);
> tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> tsk->comp->status =3D 0;
> @@ -165,8 +166,8 @@ void dsa_prep_compare(struct task *tsk)
> =
> void dsa_reprep_compare(struct acctest_context *ctx, struct task *tsk)
> {
> - struct completion_record *compl =3D tsk->comp;
> - struct hw_desc *hw =3D tsk->desc;
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> =
> info("PF addr %#lx dir %d bc %#x\n",
> compl->fault_addr, compl->result,
> @@ -181,7 +182,7 @@ void dsa_reprep_compare(struct acctest_context *ctx, =
struct task *tsk)
> =
> compl->status =3D 0;
> =
> - acctest_desc_submit(ctx, hw);
> + acctest_desc_submit(ctx, (struct hw_desc *)hw);
> }
> =
> void dsa_prep_batch_compare(struct batch_task *btsk)
> @@ -191,7 +192,7 @@ void dsa_prep_batch_compare(struct batch_task *btsk)
> =
> for (i =3D 0; i < btsk->task_num; i++) {
> sub_task =3D &btsk->sub_tasks[i];
> - acctest_prep_desc_common(sub_task->desc, sub_task->opcode,
> + acctest_prep_desc_common((struct hw_desc *)sub_task->desc, sub_task->o=
pcode,
> (uint64_t)(sub_task->src1),
> (uint64_t)(sub_task->src2),
> sub_task->xfer_size,
> @@ -205,7 +206,7 @@ void dsa_prep_compval(struct task *tsk)
> {
> info("preparing descriptor for compval\n");
> =
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, tsk->pattern,
> + acctest_prep_desc_common((struct hw_desc *)tsk->desc, tsk->opcode, tsk-=
>pattern,
> (uint64_t)(tsk->src1), tsk->xfer_size, tsk->dflags);
> tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> tsk->comp->status =3D 0;
> @@ -213,8 +214,8 @@ void dsa_prep_compval(struct task *tsk)
> =
> void dsa_reprep_compval(struct acctest_context *ctx, struct task *tsk)
> {
> - struct completion_record *compl =3D tsk->comp;
> - struct hw_desc *hw =3D tsk->desc;
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> =
> info("PF addr %#lx dir %d bc %#x\n",
> compl->fault_addr, compl->result,
> @@ -228,7 +229,7 @@ void dsa_reprep_compval(struct acctest_context *ctx, =
struct task *tsk)
> =
> compl->status =3D 0;
> =
> - acctest_desc_submit(ctx, hw);
> + acctest_desc_submit(ctx, (struct hw_desc *)hw);
> }
> =
> void dsa_prep_batch_compval(struct batch_task *btsk)
> @@ -238,7 +239,7 @@ void dsa_prep_batch_compval(struct batch_task *btsk)
> =
> for (i =3D 0; i < btsk->task_num; i++) {
> sub_task =3D &btsk->sub_tasks[i];
> - acctest_prep_desc_common(sub_task->desc, sub_task->opcode,
> + acctest_prep_desc_common((struct hw_desc *)sub_task->desc, sub_task->o=
pcode,
> sub_task->pattern,
> (uint64_t)(sub_task->src1),
> sub_task->xfer_size,
> @@ -250,19 +251,22 @@ void dsa_prep_batch_compval(struct batch_task *btsk)
> =
> void dsa_prep_dualcast(struct task *tsk)
> {
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> +
> info("preparing descriptor for dualcast\n");
> =
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->dst1),
> + acctest_prep_desc_common((struct hw_desc *)hw, tsk->opcode, (uint64_t)(=
tsk->dst1),
> (uint64_t)(tsk->src1), tsk->xfer_size, tsk->dflags);
> - tsk->desc->dest2 =3D (uint64_t)(tsk->dst2);
> - tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> - tsk->comp->status =3D 0;
> + hw->dest2 =3D (uint64_t)(tsk->dst2);
> + hw->completion_addr =3D (uint64_t)(compl);
> + compl->status =3D 0;
> }
> =
> void dsa_reprep_dualcast(struct acctest_context *ctx, struct task *tsk)
> {
> - struct completion_record *compl =3D tsk->comp;
> - struct hw_desc *hw =3D tsk->desc;
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> =
> info("PF addr %#lx dir %d bc %#x\n",
> compl->fault_addr, compl->result,
> @@ -278,24 +282,28 @@ void dsa_reprep_dualcast(struct acctest_context *ct=
x, struct task *tsk)
> =
> compl->status =3D 0;
> =
> - acctest_desc_submit(ctx, hw);
> + acctest_desc_submit(ctx, (struct hw_desc *)hw);
> }
> =
> void dsa_prep_batch_dualcast(struct batch_task *btsk)
> {
> int i;
> struct task *sub_task;
> + struct dsa_completion_record *compl;
> + struct dsa_hw_desc *hw;
> =
> for (i =3D 0; i < btsk->task_num; i++) {
> sub_task =3D &btsk->sub_tasks[i];
> - acctest_prep_desc_common(sub_task->desc, sub_task->opcode,
> + compl =3D (struct dsa_completion_record *)sub_task->comp;
> + hw =3D (struct dsa_hw_desc *)sub_task->desc;
> + acctest_prep_desc_common((struct hw_desc *)hw, sub_task->opcode,
> (uint64_t)(sub_task->dst1),
> (uint64_t)(sub_task->src1),
> sub_task->xfer_size,
> sub_task->dflags);
> - sub_task->desc->dest2 =3D (uint64_t)(sub_task->dst2);
> - sub_task->desc->completion_addr =3D (uint64_t)(sub_task->comp);
> - sub_task->comp->status =3D 0;
> + hw->dest2 =3D (uint64_t)(sub_task->dst2);
> + hw->completion_addr =3D (uint64_t)(compl);
> + compl->status =3D 0;
> }
> }
> =
> @@ -303,43 +311,50 @@ void dsa_prep_batch_cr_delta(struct batch_task *bts=
k)
> {
> int i;
> struct task *sub_task;
> + struct dsa_completion_record *compl;
> + struct dsa_hw_desc *hw;
> =
> for (i =3D 0; i < btsk->task_num; i++) {
> sub_task =3D &btsk->sub_tasks[i];
> + compl =3D (struct dsa_completion_record *)sub_task->comp;
> + hw =3D (struct dsa_hw_desc *)sub_task->desc;
> if (sub_task->opcode =3D=3D DSA_OPCODE_AP_DELTA)
> sub_task->opcode =3D DSA_OPCODE_CR_DELTA;
> - acctest_prep_desc_common(sub_task->desc, sub_task->opcode,
> + acctest_prep_desc_common((struct hw_desc *)hw, sub_task->opcode,
> (uint64_t)(sub_task->src2),
> (uint64_t)(sub_task->src1),
> sub_task->xfer_size,
> sub_task->dflags);
> - sub_task->desc->completion_addr =3D (uint64_t)(sub_task->comp);
> - sub_task->desc->delta_addr =3D (uint64_t)sub_task->delta1;
> - sub_task->desc->max_delta_size =3D 2 * sub_task->xfer_size;
> - sub_task->comp->status =3D 0;
> + hw->completion_addr =3D (uint64_t)(compl);
> + hw->delta_addr =3D (uint64_t)sub_task->delta1;
> + hw->max_delta_size =3D 2 * sub_task->xfer_size;
> + compl->status =3D 0;
> }
> }
> =
> void dsa_prep_cr_delta(struct task *tsk)
> {
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> +
> info("preparing descriptor for cr delta\n");
> =
> if (tsk->opcode =3D=3D DSA_OPCODE_AP_DELTA)
> tsk->opcode =3D DSA_OPCODE_CR_DELTA;
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->src2),
> + acctest_prep_desc_common((struct hw_desc *)hw, tsk->opcode, (uint64_t)(=
tsk->src2),
> (uint64_t)(tsk->src1), tsk->xfer_size, tsk->dflags);
> - tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> - tsk->desc->max_delta_size =3D 2 * tsk->xfer_size;//need to made configu=
rable
> - tsk->desc->delta_addr =3D (uint64_t)tsk->delta1;
> - if (tsk->desc->max_delta_size < MIN_DELTA_RECORD_SIZE)
> - tsk->desc->max_delta_size =3D MIN_DELTA_RECORD_SIZE;
> - tsk->comp->status =3D 0;
> + hw->completion_addr =3D (uint64_t)(compl);
> + hw->max_delta_size =3D 2 * tsk->xfer_size;//need to made configurable
> + hw->delta_addr =3D (uint64_t)tsk->delta1;
> + if (hw->max_delta_size < MIN_DELTA_RECORD_SIZE)
> + hw->max_delta_size =3D MIN_DELTA_RECORD_SIZE;
> + compl->status =3D 0;
> }
> =
> void dsa_reprep_cr_delta(struct acctest_context *ctx, struct task *tsk)
> {
> - struct completion_record *compl =3D tsk->comp;
> - struct hw_desc *hw =3D tsk->desc;
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> =
> info("PF addr %#lx dir %d bc %#x\n",
> compl->fault_addr, compl->result,
> @@ -354,28 +369,31 @@ void dsa_reprep_cr_delta(struct acctest_context *ct=
x, struct task *tsk)
> =
> compl->status =3D 0;
> =
> - acctest_desc_submit(ctx, hw);
> + acctest_desc_submit(ctx, (struct hw_desc *)hw);
> }
> =
> void dsa_prep_ap_delta(struct task *tsk)
> {
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> +
> info("preparing descriptor for ap delta\n");
> =
> if (tsk->opcode =3D=3D DSA_OPCODE_CR_DELTA)
> tsk->opcode =3D DSA_OPCODE_AP_DELTA;
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->dst1),
> + acctest_prep_desc_common((struct hw_desc *)hw, tsk->opcode, (uint64_t)(=
tsk->dst1),
> (uint64_t)(tsk->delta1), tsk->xfer_size, tsk->dflags);
> - tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> - tsk->desc->delta_addr =3D 0;
> - tsk->desc->delta_rec_size =3D tsk->comp->delta_rec_size;
> - tsk->desc->max_delta_size =3D 0;
> - tsk->comp->status =3D 0;
> + hw->completion_addr =3D (uint64_t)(compl);
> + hw->delta_addr =3D 0;
> + hw->delta_rec_size =3D compl->delta_rec_size;
> + hw->max_delta_size =3D 0;
> + compl->status =3D 0;
> }
> =
> void dsa_reprep_ap_delta(struct acctest_context *ctx, struct task *tsk)
> {
> - struct completion_record *compl =3D tsk->comp;
> - struct hw_desc *hw =3D tsk->desc;
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> =
> info("PF addr %#lx dir %d bc %#x\n",
> compl->fault_addr, compl->result,
> @@ -390,47 +408,54 @@ void dsa_reprep_ap_delta(struct acctest_context *ct=
x, struct task *tsk)
> =
> compl->status =3D 0;
> =
> - acctest_desc_submit(ctx, hw);
> + acctest_desc_submit(ctx, (struct hw_desc *)hw);
> }
> =
> void dsa_prep_batch_ap_delta(struct batch_task *btsk)
> {
> int i;
> struct task *sub_task;
> + struct dsa_completion_record *compl;
> + struct dsa_hw_desc *hw;
> =
> for (i =3D 0; i < btsk->task_num; i++) {
> sub_task =3D &btsk->sub_tasks[i];
> + compl =3D (struct dsa_completion_record *)sub_task->comp;
> + hw =3D (struct dsa_hw_desc *)sub_task->desc;
> if (sub_task->opcode =3D=3D DSA_OPCODE_CR_DELTA)
> sub_task->opcode =3D DSA_OPCODE_AP_DELTA;
> - acctest_prep_desc_common(sub_task->desc, sub_task->opcode,
> + acctest_prep_desc_common((struct hw_desc *)hw, sub_task->opcode,
> (uint64_t)(sub_task->dst1),
> (uint64_t)(sub_task->delta1),
> sub_task->xfer_size,
> sub_task->dflags);
> - sub_task->desc->completion_addr =3D (uint64_t)(sub_task->comp);
> - sub_task->desc->delta_addr =3D 0;
> - sub_task->desc->delta_rec_size =3D sub_task->comp->delta_rec_size;
> - sub_task->desc->max_delta_size =3D 0;
> - sub_task->comp->status =3D 0;
> + hw->completion_addr =3D (uint64_t)(compl);
> + hw->delta_addr =3D 0;
> + hw->delta_rec_size =3D compl->delta_rec_size;
> + hw->max_delta_size =3D 0;
> + compl->status =3D 0;
> }
> }
> =
> void dsa_prep_crcgen(struct task *tsk)
> {
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> +
> info("preparing descriptor for crcgen\n");
> =
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->dst1),
> + acctest_prep_desc_common((struct hw_desc *)hw, tsk->opcode, (uint64_t)(=
tsk->dst1),
> (uint64_t)(tsk->src1), tsk->xfer_size, tsk->dflags);
> - tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> - tsk->comp->status =3D 0;
> - tsk->desc->crc_seed =3D tsk->crc_seed;
> - tsk->desc->seed_addr =3D (uint64_t)tsk->crc_seed_addr;
> + hw->completion_addr =3D (uint64_t)(compl);
> + compl->status =3D 0;
> + hw->crc_seed =3D tsk->crc_seed;
> + hw->seed_addr =3D (uint64_t)tsk->crc_seed_addr;
> }
> =
> void dsa_reprep_crcgen(struct acctest_context *ctx, struct task *tsk)
> {
> - struct completion_record *compl =3D tsk->comp;
> - struct hw_desc *hw =3D tsk->desc;
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> =
> info("PF addr %#lx dir %d bc %#x\n",
> compl->fault_addr, compl->result,
> @@ -444,43 +469,50 @@ void dsa_reprep_crcgen(struct acctest_context *ctx,=
struct task *tsk)
> =
> compl->status =3D 0;
> =
> - acctest_desc_submit(ctx, hw);
> + acctest_desc_submit(ctx, (struct hw_desc *)hw);
> }
> =
> void dsa_prep_batch_crcgen(struct batch_task *btsk)
> {
> int i;
> struct task *sub_task;
> + struct dsa_completion_record *compl;
> + struct dsa_hw_desc *hw;
> =
> for (i =3D 0; i < btsk->task_num; i++) {
> sub_task =3D &btsk->sub_tasks[i];
> - acctest_prep_desc_common(sub_task->desc, sub_task->opcode,
> + compl =3D (struct dsa_completion_record *)sub_task->comp;
> + hw =3D (struct dsa_hw_desc *)sub_task->desc;
> + acctest_prep_desc_common((struct hw_desc *)hw, sub_task->opcode,
> (uint64_t)(sub_task->dst1),
> (uint64_t)(sub_task->src1),
> sub_task->xfer_size,
> sub_task->dflags);
> - sub_task->desc->completion_addr =3D (uint64_t)(sub_task->comp);
> - sub_task->comp->status =3D 0;
> - sub_task->desc->crc_seed =3D sub_task->crc_seed;
> + hw->completion_addr =3D (uint64_t)(compl);
> + compl->status =3D 0;
> + hw->crc_seed =3D sub_task->crc_seed;
> }
> }
> =
> void dsa_prep_crc_copy(struct task *tsk)
> {
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> +
> info("preparing descriptor for crc copy\n");
> =
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->dst1),
> + acctest_prep_desc_common((struct hw_desc *)hw, tsk->opcode, (uint64_t)(=
tsk->dst1),
> (uint64_t)(tsk->src1), tsk->xfer_size, tsk->dflags);
> - tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> - tsk->comp->status =3D 0;
> - tsk->desc->crc_seed =3D tsk->crc_seed;
> - tsk->desc->seed_addr =3D (uint64_t)tsk->crc_seed_addr;
> + hw->completion_addr =3D (uint64_t)(compl);
> + compl->status =3D 0;
> + hw->crc_seed =3D tsk->crc_seed;
> + hw->seed_addr =3D (uint64_t)tsk->crc_seed_addr;
> }
> =
> void dsa_reprep_crc_copy(struct acctest_context *ctx, struct task *tsk)
> {
> - struct completion_record *compl =3D tsk->comp;
> - struct hw_desc *hw =3D tsk->desc;
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> =
> info("PF addr %#lx dir %d bc %#x\n",
> compl->fault_addr, compl->result,
> @@ -495,87 +527,103 @@ void dsa_reprep_crc_copy(struct acctest_context *c=
tx, struct task *tsk)
> =
> compl->status =3D 0;
> =
> - acctest_desc_submit(ctx, hw);
> + acctest_desc_submit(ctx, (struct hw_desc *)hw);
> }
> =
> void dsa_prep_batch_crc_copy(struct batch_task *btsk)
> {
> int i;
> struct task *sub_task;
> + struct dsa_completion_record *compl;
> + struct dsa_hw_desc *hw;
> =
> for (i =3D 0; i < btsk->task_num; i++) {
> sub_task =3D &btsk->sub_tasks[i];
> - acctest_prep_desc_common(sub_task->desc, sub_task->opcode,
> + compl =3D (struct dsa_completion_record *)sub_task->comp;
> + hw =3D (struct dsa_hw_desc *)sub_task->desc;
> + acctest_prep_desc_common((struct hw_desc *)hw, sub_task->opcode,
> (uint64_t)(sub_task->dst1),
> (uint64_t)(sub_task->src1),
> sub_task->xfer_size,
> sub_task->dflags);
> - sub_task->desc->completion_addr =3D (uint64_t)(sub_task->comp);
> - sub_task->comp->status =3D 0;
> - sub_task->desc->crc_seed =3D sub_task->crc_seed;
> + hw->completion_addr =3D (uint64_t)(compl);
> + compl->status =3D 0;
> + hw->crc_seed =3D sub_task->crc_seed;
> }
> }
> =
> void dsa_prep_dif_check(struct task *tsk)
> {
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> +
> info("preparing descriptor for dif check\n");
> =
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->dst1),
> + acctest_prep_desc_common((struct hw_desc *)hw, tsk->opcode, (uint64_t)(=
tsk->dst1),
> (uint64_t)(tsk->src1), tsk->xfer_size, tsk->dflags);
> - tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> - tsk->comp->status =3D 0;
> - tsk->desc->chk_app_tag_seed =3D tsk->apptag;
> - tsk->desc->chk_ref_tag_seed =3D tsk->reftag;
> - tsk->desc->dif_chk_flags =3D tsk->blk_idx_flg;
> + hw->completion_addr =3D (uint64_t)(compl);
> + compl->status =3D 0;
> + hw->chk_app_tag_seed =3D tsk->apptag;
> + hw->chk_ref_tag_seed =3D tsk->reftag;
> + hw->dif_chk_flags =3D tsk->blk_idx_flg;
> }
> =
> void dsa_prep_dif_insert(struct task *tsk)
> {
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> +
> info("preparing descriptor for dif insert\n");
> =
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->dst1),
> + acctest_prep_desc_common((struct hw_desc *)hw, tsk->opcode, (uint64_t)(=
tsk->dst1),
> (uint64_t)(tsk->src1), tsk->xfer_size, tsk->dflags);
> - tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> - tsk->comp->status =3D 0;
> - tsk->desc->ins_app_tag_seed =3D tsk->apptag;
> - tsk->desc->ins_ref_tag_seed =3D tsk->reftag;
> - tsk->desc->dif_ins_flags =3D tsk->blk_idx_flg;
> + hw->completion_addr =3D (uint64_t)(compl);
> + compl->status =3D 0;
> + hw->ins_app_tag_seed =3D tsk->apptag;
> + hw->ins_ref_tag_seed =3D tsk->reftag;
> + hw->dif_ins_flags =3D tsk->blk_idx_flg;
> }
> =
> void dsa_prep_dif_strip(struct task *tsk)
> {
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> +
> info("preparing descriptor for dif strip\n");
> =
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->dst1),
> + acctest_prep_desc_common((struct hw_desc *)hw, tsk->opcode, (uint64_t)(=
tsk->dst1),
> (uint64_t)(tsk->src1), tsk->xfer_size, tsk->dflags);
> - tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> - tsk->comp->status =3D 0;
> - tsk->desc->chk_app_tag_seed =3D tsk->apptag;
> - tsk->desc->chk_ref_tag_seed =3D tsk->reftag;
> - tsk->desc->dif_chk_flags =3D tsk->blk_idx_flg;
> + hw->completion_addr =3D (uint64_t)(compl);
> + compl->status =3D 0;
> + hw->chk_app_tag_seed =3D tsk->apptag;
> + hw->chk_ref_tag_seed =3D tsk->reftag;
> + hw->dif_chk_flags =3D tsk->blk_idx_flg;
> }
> =
> void dsa_prep_dif_update(struct task *tsk)
> {
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> +
> info("preparing descriptor for dif update\n");
> =
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->dst1),
> + acctest_prep_desc_common((struct hw_desc *)hw, tsk->opcode, (uint64_t)(=
tsk->dst1),
> (uint64_t)(tsk->src1), tsk->xfer_size, tsk->dflags);
> - tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> - tsk->comp->status =3D 0;
> - tsk->desc->src_app_tag_seed =3D tsk->apptag;
> - tsk->desc->src_ref_tag_seed =3D tsk->reftag;
> - tsk->desc->dest_ref_tag_seed =3D tsk->reftag;
> - tsk->desc->dest_app_tag_seed =3D tsk->apptag;
> - tsk->desc->src_upd_flags =3D 0x80;
> - tsk->desc->upd_dest_flags =3D 0x80;
> - tsk->desc->dif_upd_flags =3D tsk->blk_idx_flg;
> + hw->completion_addr =3D (uint64_t)(compl);
> + compl->status =3D 0;
> + hw->src_app_tag_seed =3D tsk->apptag;
> + hw->src_ref_tag_seed =3D tsk->reftag;
> + hw->dest_ref_tag_seed =3D tsk->reftag;
> + hw->dest_app_tag_seed =3D tsk->apptag;
> + hw->src_upd_flags =3D 0x80;
> + hw->upd_dest_flags =3D 0x80;
> + hw->dif_upd_flags =3D tsk->blk_idx_flg;
> }
> =
> void dsa_reprep_dif(struct acctest_context *ctx, struct task *tsk)
> {
> - struct completion_record *compl =3D tsk->comp;
> - struct hw_desc *hw =3D tsk->desc;
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> unsigned long blks_completed =3D 0;
> =
> info("PF addr %#lx dir %d bc %#x\n",
> @@ -620,25 +668,29 @@ void dsa_reprep_dif(struct acctest_context *ctx, st=
ruct task *tsk)
> =
> compl->status =3D 0;
> =
> - acctest_desc_submit(ctx, hw);
> + acctest_desc_submit(ctx, (struct hw_desc *)hw);
> }
> =
> void dsa_prep_batch_dif_check(struct batch_task *btsk)
> {
> int i;
> struct task *sub_task;
> + struct dsa_completion_record *compl;
> + struct dsa_hw_desc *hw;
> =
> for (i =3D 0; i < btsk->task_num; i++) {
> sub_task =3D &btsk->sub_tasks[i];
> + compl =3D (struct dsa_completion_record *)sub_task->comp;
> + hw =3D (struct dsa_hw_desc *)sub_task->desc;
> sub_task->xfer_size =3D btsk->sub_tasks[i].xfer_size;
> - sub_task->desc->dif_chk_flags =3D btsk->sub_tasks[i].blk_idx_flg;
> - acctest_prep_desc_common(sub_task->desc, sub_task->opcode,
> + hw->dif_chk_flags =3D btsk->sub_tasks[i].blk_idx_flg;
> + acctest_prep_desc_common((struct hw_desc *)hw, sub_task->opcode,
> (uint64_t)(sub_task->dst1), (uint64_t)(sub_task->src1),
> sub_task->xfer_size, sub_task->dflags);
> - sub_task->desc->completion_addr =3D (uint64_t)(sub_task->comp);
> - sub_task->comp->status =3D 0;
> - sub_task->desc->chk_app_tag_seed =3D sub_task->apptag;
> - sub_task->desc->chk_ref_tag_seed =3D sub_task->reftag;
> + hw->completion_addr =3D (uint64_t)(compl);
> + compl->status =3D 0;
> + hw->chk_app_tag_seed =3D sub_task->apptag;
> + hw->chk_ref_tag_seed =3D sub_task->reftag;
> }
> }
> =
> @@ -646,18 +698,22 @@ void dsa_prep_batch_dif_insert(struct batch_task *b=
tsk)
> {
> int i;
> struct task *sub_task;
> + struct dsa_completion_record *compl;
> + struct dsa_hw_desc *hw;
> =
> for (i =3D 0; i < btsk->task_num; i++) {
> sub_task =3D &btsk->sub_tasks[i];
> + compl =3D (struct dsa_completion_record *)sub_task->comp;
> + hw =3D (struct dsa_hw_desc *)sub_task->desc;
> sub_task->xfer_size =3D btsk->sub_tasks[i].xfer_size;
> - sub_task->desc->dif_chk_flags =3D btsk->sub_tasks[i].blk_idx_flg;
> - acctest_prep_desc_common(sub_task->desc, sub_task->opcode,
> + hw->dif_chk_flags =3D btsk->sub_tasks[i].blk_idx_flg;
> + acctest_prep_desc_common((struct hw_desc *)hw, sub_task->opcode,
> (uint64_t)(sub_task->dst1), (uint64_t)(sub_task->src1),
> sub_task->xfer_size, sub_task->dflags);
> - sub_task->desc->completion_addr =3D (uint64_t)(sub_task->comp);
> - sub_task->comp->status =3D 0;
> - sub_task->desc->ins_app_tag_seed =3D sub_task->apptag;
> - sub_task->desc->ins_ref_tag_seed =3D sub_task->reftag;
> + hw->completion_addr =3D (uint64_t)(compl);
> + compl->status =3D 0;
> + hw->ins_app_tag_seed =3D sub_task->apptag;
> + hw->ins_ref_tag_seed =3D sub_task->reftag;
> }
> }
> =
> @@ -665,18 +721,22 @@ void dsa_prep_batch_dif_strip(struct batch_task *bt=
sk)
> {
> int i;
> struct task *sub_task;
> + struct dsa_completion_record *compl;
> + struct dsa_hw_desc *hw;
> =
> for (i =3D 0; i < btsk->task_num; i++) {
> sub_task =3D &btsk->sub_tasks[i];
> + compl =3D (struct dsa_completion_record *)sub_task->comp;
> + hw =3D (struct dsa_hw_desc *)sub_task->desc;
> sub_task->xfer_size =3D btsk->sub_tasks[i].xfer_size;
> - sub_task->desc->dif_chk_flags =3D btsk->sub_tasks[i].blk_idx_flg;
> - acctest_prep_desc_common(sub_task->desc, sub_task->opcode,
> + hw->dif_chk_flags =3D btsk->sub_tasks[i].blk_idx_flg;
> + acctest_prep_desc_common((struct hw_desc *)hw, sub_task->opcode,
> (uint64_t)(sub_task->dst1), (uint64_t)(sub_task->src1),
> sub_task->xfer_size, sub_task->dflags);
> - sub_task->desc->completion_addr =3D (uint64_t)(sub_task->comp);
> - sub_task->comp->status =3D 0;
> - sub_task->desc->chk_app_tag_seed =3D sub_task->apptag;
> - sub_task->desc->chk_ref_tag_seed =3D sub_task->reftag;
> + hw->completion_addr =3D (uint64_t)(compl);
> + compl->status =3D 0;
> + hw->chk_app_tag_seed =3D sub_task->apptag;
> + hw->chk_ref_tag_seed =3D sub_task->reftag;
> }
> }
> =
> @@ -684,22 +744,26 @@ void dsa_prep_batch_dif_update(struct batch_task *b=
tsk)
> {
> int i;
> struct task *sub_task;
> + struct dsa_completion_record *compl;
> + struct dsa_hw_desc *hw;
> =
> for (i =3D 0; i < btsk->task_num; i++) {
> sub_task =3D &btsk->sub_tasks[i];
> + compl =3D (struct dsa_completion_record *)sub_task->comp;
> + hw =3D (struct dsa_hw_desc *)sub_task->desc;
> sub_task->xfer_size =3D btsk->sub_tasks[i].xfer_size;
> - sub_task->desc->dif_chk_flags =3D btsk->sub_tasks[i].blk_idx_flg;
> - acctest_prep_desc_common(sub_task->desc, sub_task->opcode,
> + hw->dif_chk_flags =3D btsk->sub_tasks[i].blk_idx_flg;
> + acctest_prep_desc_common((struct hw_desc *)hw, sub_task->opcode,
> (uint64_t)(sub_task->dst1), (uint64_t)(sub_task->src1),
> sub_task->xfer_size, sub_task->dflags);
> - sub_task->desc->completion_addr =3D (uint64_t)(sub_task->comp);
> - sub_task->comp->status =3D 0;
> - sub_task->desc->src_app_tag_seed =3D sub_task->apptag;
> - sub_task->desc->src_ref_tag_seed =3D sub_task->reftag;
> - sub_task->desc->dest_ref_tag_seed =3D sub_task->reftag;
> - sub_task->desc->dest_app_tag_seed =3D sub_task->apptag;
> - sub_task->desc->src_upd_flags =3D 0x80;
> - sub_task->desc->upd_dest_flags =3D 0x80;
> + hw->completion_addr =3D (uint64_t)(compl);
> + compl->status =3D 0;
> + hw->src_app_tag_seed =3D sub_task->apptag;
> + hw->src_ref_tag_seed =3D sub_task->reftag;
> + hw->dest_ref_tag_seed =3D sub_task->reftag;
> + hw->dest_app_tag_seed =3D sub_task->apptag;
> + hw->src_upd_flags =3D 0x80;
> + hw->upd_dest_flags =3D 0x80;
> }
> }
> =
> @@ -707,7 +771,7 @@ void dsa_prep_cflush(struct task *tsk)
> {
> info("preparing descriptor for cflush\n");
> =
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->dst1),
> + acctest_prep_desc_common((struct hw_desc *)tsk->desc, tsk->opcode, (uin=
t64_t)(tsk->dst1),
> (uint64_t)(tsk->src1), tsk->xfer_size, tsk->dflags);
> tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> tsk->comp->status =3D 0;
> @@ -715,8 +779,8 @@ void dsa_prep_cflush(struct task *tsk)
> =
> void dsa_reprep_cflush(struct acctest_context *ctx, struct task *tsk)
> {
> - struct completion_record *compl =3D tsk->comp;
> - struct hw_desc *hw =3D tsk->desc;
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)tsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)tsk->desc;
> =
> info("PF addr %#lx dir %d bc %#x\n",
> compl->fault_addr, compl->result,
> @@ -730,7 +794,7 @@ void dsa_reprep_cflush(struct acctest_context *ctx, s=
truct task *tsk)
> =
> compl->status =3D 0;
> =
> - acctest_desc_submit(ctx, hw);
> + acctest_desc_submit(ctx, (struct hw_desc *)hw);
> }
> =
> void dsa_prep_batch_cflush(struct batch_task *btsk)
> @@ -740,7 +804,7 @@ void dsa_prep_batch_cflush(struct batch_task *btsk)
> =
> for (i =3D 0; i < btsk->task_num; i++) {
> sub_task =3D &btsk->sub_tasks[i];
> - acctest_prep_desc_common(sub_task->desc, sub_task->opcode,
> + acctest_prep_desc_common((struct hw_desc *)sub_task->desc, sub_task->o=
pcode,
> (uint64_t)(sub_task->dst1),
> (uint64_t)(sub_task->src1),
> sub_task->xfer_size, sub_task->dflags);
> @@ -752,17 +816,19 @@ void dsa_prep_batch_cflush(struct batch_task *btsk)
> void dsa_prep_batch(struct batch_task *btsk, unsigned long desc_flags)
> {
> struct task *ctsk =3D btsk->core_task;
> + struct dsa_completion_record *compl =3D (struct dsa_completion_record *=
)ctsk->comp;
> + struct dsa_hw_desc *hw =3D (struct dsa_hw_desc *)ctsk->desc;
> =
> info("preparing batch descriptor\n");
> =
> /* BOF bit is reserved for batch descriptor, turn it off */
> desc_flags &=3D ~IDXD_OP_FLAG_BOF;
> =
> - acctest_prep_desc_common(ctsk->desc, DSA_OPCODE_BATCH,
> + acctest_prep_desc_common((struct hw_desc *)hw, DSA_OPCODE_BATCH,
> 0, (uint64_t)(btsk->sub_descs),
> btsk->task_num, desc_flags);
> - ctsk->desc->completion_addr =3D (uint64_t)(ctsk->comp);
> - ctsk->desc->desc_count =3D (uint32_t)(btsk->task_num);
> + hw->completion_addr =3D (uint64_t)(compl);
> + hw->desc_count =3D (uint32_t)(btsk->task_num);
> =
> - ctsk->comp->status =3D 0;
> + compl->status =3D 0;
> }
> diff --git a/test/iaa.c b/test/iaa.c
> index ad6c521..e22f952 100644
> --- a/test/iaa.c
> +++ b/test/iaa.c
> @@ -14,6 +14,7 @@
> #include <linux/vfio.h>
> #include <accfg/libaccel_config.h>
> #include <accfg/idxd.h>
> +#include "idxd_test.h"
> #include "accel_test.h"
> #include "iaa.h"
> #include "algorithms/iaa_crc64.h"
> @@ -226,16 +227,16 @@ int init_task(struct task *tsk, int tflags, int opc=
ode, unsigned long src1_xfer_
> case IAX_OPCODE_CRC64: /* intentionally empty */
> rc =3D init_crc64(tsk, tflags, opcode, src1_xfer_size);
> break;
> - case IAX_OPCODE_ZCOMPRESS16:
> + case IAX_OPCODE_ZERO_COMP_16:
> rc =3D init_zcompress16(tsk, tflags, opcode, src1_xfer_size);
> break;
> - case IAX_OPCODE_ZDECOMPRESS16:
> + case IAX_OPCODE_ZERO_DECOMP_16:
> rc =3D init_zdecompress16(tsk, tflags, opcode, src1_xfer_size);
> break;
> - case IAX_OPCODE_ZCOMPRESS32:
> + case IAX_OPCODE_ZERO_COMP_32:
> rc =3D init_zcompress32(tsk, tflags, opcode, src1_xfer_size);
> break;
> - case IAX_OPCODE_ZDECOMPRESS32:
> + case IAX_OPCODE_ZERO_DECOMP_32:
> rc =3D init_zdecompress32(tsk, tflags, opcode, src1_xfer_size);
> break;
> case IAX_OPCODE_COMPRESS:
> @@ -560,7 +561,8 @@ int iaa_compress_multi_task_nodes(struct acctest_cont=
ext *ctx)
> if ((tsk_node->tsk->test_flags & TEST_FLAGS_BOF) && ctx->bof)
> tsk_node->tsk->dflags |=3D IDXD_OP_FLAG_BOF;
> =
> - tsk_node->tsk->dflags |=3D (IDXD_OP_FLAG_WR_SRC2_CMPL | IDXD_OP_FLAG_R=
D_SRC2_AECS);
> + tsk_node->tsk->dflags |=3D (IDXD_OP_FLAG_WR_SRC2_AECS_COMP |
> + IDXD_OP_FLAG_RD_SRC2_AECS);
> tsk_node->tsk->iaa_src2_xfer_size =3D IAA_COMPRESS_AECS_SIZE;
> =
> memcpy(tsk_node->tsk->src2, (void *)iaa_compress_aecs, IAA_COMPRESS_A=
ECS_SIZE);
> @@ -618,7 +620,8 @@ int iaa_decompress_multi_task_nodes(struct acctest_co=
ntext *ctx)
> if ((tsk_node->tsk->test_flags & TEST_FLAGS_BOF) && ctx->bof)
> tsk_node->tsk->dflags |=3D IDXD_OP_FLAG_BOF;
> =
> - tsk_node->tsk->dflags |=3D (IDXD_OP_FLAG_WR_SRC2_CMPL | IDXD_OP_FLAG_R=
D_SRC2_AECS);
> + tsk_node->tsk->dflags |=3D (IDXD_OP_FLAG_WR_SRC2_AECS_COMP |
> + IDXD_OP_FLAG_RD_SRC2_AECS);
> tsk_node->tsk->iaa_src2_xfer_size =3D IAA_COMPRESS_AECS_SIZE;
> =
> memcpy(tsk_node->tsk->src2, (void *)iaa_compress_aecs, IAA_COMPRESS_A=
ECS_SIZE);
> @@ -655,18 +658,20 @@ int iaa_decompress_multi_task_nodes(struct acctest_=
context *ctx)
> // Decompress
> tsk_node =3D ctx->multi_task_node;
> while (tsk_node) {
> + struct iax_test_completion_record *comp =3D
> + (struct iax_test_completion_record *)tsk_node->tsk->comp;
> memset_pattern(tsk_node->tsk->src1, 0, tsk_node->tsk->xfer_size);
> memcpy(tsk_node->tsk->src1, tsk_node->tsk->dst1,
> - tsk_node->tsk->comp->iax_output_size);
> + comp->output_size);
> =
> tsk_node->tsk->opcode =3D IAX_OPCODE_DECOMPRESS;
> - tsk_node->tsk->xfer_size =3D tsk_node->tsk->comp->iax_output_size;
> + tsk_node->tsk->xfer_size =3D comp->output_size;
> =
> tsk_node->tsk->dflags |=3D (IDXD_OP_FLAG_CRAV | IDXD_OP_FLAG_RCR);
> if ((tsk_node->tsk->test_flags & TEST_FLAGS_BOF) && ctx->bof)
> tsk_node->tsk->dflags |=3D IDXD_OP_FLAG_BOF;
> =
> - tsk_node->tsk->dflags &=3D ~(IDXD_OP_FLAG_WR_SRC2_CMPL |
> + tsk_node->tsk->dflags &=3D ~(IDXD_OP_FLAG_WR_SRC2_AECS_COMP |
> IDXD_OP_FLAG_RD_SRC2_AECS);
> tsk_node->tsk->iaa_src2_xfer_size =3D 0;
> tsk_node->tsk->src2 =3D 0;
> @@ -715,16 +720,16 @@ int iaa_task_result_verify(struct task *tsk, int mi=
smatch_expected)
> case IAX_OPCODE_CRC64:
> ret =3D task_result_verify_crc64(tsk, mismatch_expected);
> break;
> - case IAX_OPCODE_ZCOMPRESS16:
> + case IAX_OPCODE_ZERO_COMP_16:
> ret =3D task_result_verify_zcompress16(tsk, mismatch_expected);
> break;
> - case IAX_OPCODE_ZDECOMPRESS16:
> + case IAX_OPCODE_ZERO_DECOMP_16:
> ret =3D task_result_verify_zdecompress16(tsk, mismatch_expected);
> break;
> - case IAX_OPCODE_ZCOMPRESS32:
> + case IAX_OPCODE_ZERO_COMP_32:
> ret =3D task_result_verify_zcompress32(tsk, mismatch_expected);
> break;
> - case IAX_OPCODE_ZDECOMPRESS32:
> + case IAX_OPCODE_ZERO_DECOMP_32:
> ret =3D task_result_verify_zdecompress32(tsk, mismatch_expected);
> break;
> case IAX_OPCODE_COMPRESS:
> @@ -759,6 +764,7 @@ int task_result_verify_crc64(struct task *tsk, int mi=
smatch_expected)
> {
> int rc;
> uint64_t crc;
> + struct iax_test_completion_record *comp =3D (struct iax_test_completion=
_record *)tsk->comp;
> =
> if (mismatch_expected)
> warn("invalid arg mismatch_expected for %d\n", tsk->opcode);
> @@ -774,13 +780,13 @@ int task_result_verify_crc64(struct task *tsk, int =
mismatch_expected)
> return -EINVAL;
> }
> =
> - rc =3D memcmp((void *)(&tsk->comp->crc64_result), (void *)(&crc), sizeo=
f(uint64_t));
> + rc =3D memcmp((void *)(&comp->crc64_result), (void *)(&crc), sizeof(uin=
t64_t));
> =
> if (!mismatch_expected) {
> if (rc) {
> err("crc64 mismatch, memcmp rc %d\n", rc);
> err("expected crc=3D0x%llX, actual crc=3D0x%llX\n",
> - crc, tsk->comp->crc64_result);
> + crc, comp->crc64_result);
> return -ENXIO;
> }
> return ACCTEST_STATUS_OK;
> @@ -788,7 +794,7 @@ int task_result_verify_crc64(struct task *tsk, int mi=
smatch_expected)
> =
> /* mismatch_expected */
> if (rc) {
> - info("expected mismatch in crc 0x%llX\n", tsk->comp->crc64_result);
> + info("expected mismatch in crc 0x%llX\n", comp->crc64_result);
> return ACCTEST_STATUS_OK;
> }
> =
> @@ -800,6 +806,7 @@ int task_result_verify_zcompress16(struct task *tsk, =
int mismatch_expected)
> int i;
> int rc;
> int expected_len;
> + struct iax_test_completion_record *comp =3D (struct iax_test_completion=
_record *)tsk->comp;
> =
> if (mismatch_expected)
> warn("invalid arg mismatch_expected for %d\n", tsk->opcode);
> @@ -808,9 +815,9 @@ int task_result_verify_zcompress16(struct task *tsk, =
int mismatch_expected)
> rc =3D memcmp(tsk->dst1, tsk->output, expected_len);
> =
> if (!mismatch_expected) {
> - if (expected_len - tsk->comp->iax_output_size) {
> + if (expected_len - comp->output_size) {
> err("zcompress16 mismatch, exp len %d, act len %d\n",
> - expected_len, tsk->comp->iax_output_size);
> + expected_len, comp->output_size);
> =
> return -ENXIO;
> }
> @@ -841,6 +848,7 @@ int task_result_verify_zdecompress16(struct task *tsk=
, int mismatch_expected)
> int i;
> int rc;
> int expected_len;
> + struct iax_test_completion_record *comp =3D (struct iax_test_completion=
_record *)tsk->comp;
> =
> if (mismatch_expected)
> warn("invalid arg mismatch_expected for %d\n", tsk->opcode);
> @@ -849,9 +857,9 @@ int task_result_verify_zdecompress16(struct task *tsk=
, int mismatch_expected)
> rc =3D memcmp(tsk->dst1, tsk->output, expected_len);
> =
> if (!mismatch_expected) {
> - if (expected_len - tsk->comp->iax_output_size) {
> + if (expected_len - comp->output_size) {
> err("zdecompress16 mismatch, exp len %d, act len %d\n",
> - expected_len, tsk->comp->iax_output_size);
> + expected_len, comp->output_size);
> =
> return -ENXIO;
> }
> @@ -882,6 +890,7 @@ int task_result_verify_zcompress32(struct task *tsk, =
int mismatch_expected)
> int i;
> int rc;
> int expected_len;
> + struct iax_test_completion_record *comp =3D (struct iax_test_completion=
_record *)tsk->comp;
> =
> if (mismatch_expected)
> warn("invalid arg mismatch_expected for %d\n", tsk->opcode);
> @@ -890,9 +899,9 @@ int task_result_verify_zcompress32(struct task *tsk, =
int mismatch_expected)
> rc =3D memcmp(tsk->dst1, tsk->output, expected_len);
> =
> if (!mismatch_expected) {
> - if (expected_len - tsk->comp->iax_output_size) {
> + if (expected_len - comp->output_size) {
> err("zcompress32 mismatch, exp len %d, act len %d\n",
> - expected_len, tsk->comp->iax_output_size);
> + expected_len, comp->output_size);
> =
> return -ENXIO;
> }
> @@ -923,6 +932,7 @@ int task_result_verify_zdecompress32(struct task *tsk=
, int mismatch_expected)
> int i;
> int rc;
> int expected_len;
> + struct iax_test_completion_record *comp =3D (struct iax_test_completion=
_record *)tsk->comp;
> =
> if (mismatch_expected)
> warn("invalid arg mismatch_expected for %d\n", tsk->opcode);
> @@ -931,9 +941,9 @@ int task_result_verify_zdecompress32(struct task *tsk=
, int mismatch_expected)
> rc =3D memcmp(tsk->dst1, tsk->output, expected_len);
> =
> if (!mismatch_expected) {
> - if (expected_len - tsk->comp->iax_output_size) {
> + if (expected_len - comp->output_size) {
> err("zdecompress32 mismatch, exp len %d, act len %d\n",
> - expected_len, tsk->comp->iax_output_size);
> + expected_len, comp->output_size);
> =
> return -ENXIO;
> }
> @@ -964,11 +974,12 @@ int task_result_verify_compress(struct task *tsk, i=
nt mismatch_expected)
> int i =3D 0;
> int rc;
> int expected_len;
> + struct iax_test_completion_record *comp =3D (struct iax_test_completion=
_record *)tsk->comp;
> =
> if (mismatch_expected)
> warn("invalid arg mismatch_expected for %d\n", tsk->opcode);
> =
> - rc =3D iaa_do_decompress(tsk->output, tsk->dst1, tsk->comp->iax_output_=
size, &expected_len);
> + rc =3D iaa_do_decompress(tsk->output, tsk->dst1, comp->output_size, &ex=
pected_len);
> if (rc)
> return -ENXIO;
> rc =3D memcmp(tsk->src1, tsk->output, expected_len);
> @@ -1006,6 +1017,7 @@ int task_result_verify_decompress(struct task *tsk,=
int mismatch_expected)
> {
> int i =3D 0;
> int rc;
> + struct iax_test_completion_record *comp =3D (struct iax_test_completion=
_record *)tsk->comp;
> =
> if (mismatch_expected)
> warn("invalid arg mismatch_expected for %d\n", tsk->opcode);
> @@ -1013,9 +1025,9 @@ int task_result_verify_decompress(struct task *tsk,=
int mismatch_expected)
> rc =3D memcmp(tsk->input, tsk->dst1, tsk->input_size);
> =
> if (!mismatch_expected) {
> - if (tsk->input_size - tsk->comp->iax_output_size) {
> + if (tsk->input_size - comp->output_size) {
> err("Decompress mismatch, exp len %d, act len %d\n",
> - tsk->input_size, tsk->comp->iax_output_size);
> + tsk->input_size, comp->output_size);
> =
> return -ENXIO;
> }
> diff --git a/test/iaa_prep.c b/test/iaa_prep.c
> index 948bd23..522e6ed 100644
> --- a/test/iaa_prep.c
> +++ b/test/iaa_prep.c
> @@ -6,6 +6,7 @@
> #include <stdlib.h>
> #include <unistd.h>
> #include <accfg/idxd.h>
> +#include "idxd_test.h"
> #include "accel_test.h"
> #include "iaa.h"
> =
> @@ -14,7 +15,7 @@ void iaa_prep_noop(struct task *tsk)
> info("preparing descriptor for noop\n");
> =
> tsk->dflags =3D IDXD_OP_FLAG_CRAV | IDXD_OP_FLAG_RCR;
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, 0,
> + acctest_prep_desc_common((struct hw_desc *)tsk->desc, tsk->opcode, 0,
> (uint64_t)(tsk->src1), 0, tsk->dflags);
> tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> tsk->comp->status =3D 0;
> @@ -22,84 +23,105 @@ void iaa_prep_noop(struct task *tsk)
> =
> void iaa_prep_crc64(struct task *tsk)
> {
> + struct iax_test_completion_record *comp =3D (struct iax_test_completion=
_record *)tsk->comp;
> + struct iax_test_hw_desc *hw =3D (struct iax_test_hw_desc *)tsk->desc;
> +
> info("preparing descriptor for crc64\n");
> =
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, 0,
> + acctest_prep_desc_common((struct hw_desc *)hw, tsk->opcode, 0,
> (uint64_t)(tsk->src1), tsk->xfer_size, tsk->dflags);
> - tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> - tsk->desc->iax_crc64_flags =3D tsk->iaa_crc64_flags;
> - tsk->desc->iax_crc64_poly =3D tsk->iaa_crc64_poly;
> - tsk->comp->status =3D 0;
> + hw->completion_addr =3D (uint64_t)(comp);
> + hw->crc64_flags =3D tsk->iaa_crc64_flags;
> + hw->crc64_poly =3D tsk->iaa_crc64_poly;
> + comp->status =3D 0;
> }
> =
> void iaa_prep_zcompress16(struct task *tsk)
> {
> + struct iax_test_completion_record *comp =3D (struct iax_test_completion=
_record *)tsk->comp;
> + struct iax_test_hw_desc *hw =3D (struct iax_test_hw_desc *)tsk->desc;
> +
> info("preparing descriptor for zcompress16\n");
> =
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->dst1),
> + acctest_prep_desc_common((struct hw_desc *)hw, tsk->opcode, (uint64_t)(=
tsk->dst1),
> (uint64_t)(tsk->src1), tsk->xfer_size, tsk->dflags);
> - tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> - tsk->desc->iax_max_dst_size =3D tsk->iaa_max_dst_size;
> - tsk->comp->status =3D 0;
> + hw->completion_addr =3D (uint64_t)(comp);
> + hw->max_dst_size =3D tsk->iaa_max_dst_size;
> + comp->status =3D 0;
> }
> =
> void iaa_prep_zdecompress16(struct task *tsk)
> {
> + struct iax_test_completion_record *comp =3D (struct iax_test_completion=
_record *)tsk->comp;
> + struct iax_test_hw_desc *hw =3D (struct iax_test_hw_desc *)tsk->desc;
> +
> info("preparing descriptor for zdecompress16\n");
> =
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->dst1),
> + acctest_prep_desc_common((struct hw_desc *)hw, tsk->opcode, (uint64_t)(=
tsk->dst1),
> (uint64_t)(tsk->src1), tsk->xfer_size, tsk->dflags);
> - tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> - tsk->desc->iax_max_dst_size =3D tsk->iaa_max_dst_size;
> - tsk->comp->status =3D 0;
> + hw->completion_addr =3D (uint64_t)(comp);
> + hw->max_dst_size =3D tsk->iaa_max_dst_size;
> + comp->status =3D 0;
> }
> =
> void iaa_prep_zcompress32(struct task *tsk)
> {
> + struct iax_test_completion_record *comp =3D (struct iax_test_completion=
_record *)tsk->comp;
> + struct iax_test_hw_desc *hw =3D (struct iax_test_hw_desc *)tsk->desc;
> +
> info("preparing descriptor for zcompress32\n");
> =
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->dst1),
> + acctest_prep_desc_common((struct hw_desc *)hw, tsk->opcode, (uint64_t)(=
tsk->dst1),
> (uint64_t)(tsk->src1), tsk->xfer_size, tsk->dflags);
> - tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> - tsk->desc->iax_max_dst_size =3D tsk->iaa_max_dst_size;
> - tsk->comp->status =3D 0;
> + hw->completion_addr =3D (uint64_t)(comp);
> + hw->max_dst_size =3D tsk->iaa_max_dst_size;
> + comp->status =3D 0;
> }
> =
> void iaa_prep_zdecompress32(struct task *tsk)
> {
> + struct iax_test_completion_record *comp =3D (struct iax_test_completion=
_record *)tsk->comp;
> + struct iax_test_hw_desc *hw =3D (struct iax_test_hw_desc *)tsk->desc;
> +
> info("preparing descriptor for zdecompress32\n");
> =
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->dst1),
> + acctest_prep_desc_common((struct hw_desc *)hw, tsk->opcode, (uint64_t)(=
tsk->dst1),
> (uint64_t)(tsk->src1), tsk->xfer_size, tsk->dflags);
> - tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> - tsk->desc->iax_max_dst_size =3D tsk->iaa_max_dst_size;
> - tsk->comp->status =3D 0;
> + hw->completion_addr =3D (uint64_t)(comp);
> + hw->max_dst_size =3D tsk->iaa_max_dst_size;
> + comp->status =3D 0;
> }
> =
> void iaa_prep_compress(struct task *tsk)
> {
> + struct iax_test_completion_record *comp =3D (struct iax_test_completion=
_record *)tsk->comp;
> + struct iax_test_hw_desc *hw =3D (struct iax_test_hw_desc *)tsk->desc;
> +
> info("preparing descriptor for compress\n");
> =
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->dst1),
> + acctest_prep_desc_common((struct hw_desc *)hw, tsk->opcode, (uint64_t)(=
tsk->dst1),
> (uint64_t)(tsk->src1), tsk->xfer_size, tsk->dflags);
> - tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> - tsk->desc->iax_compr_flags =3D tsk->iaa_compr_flags;
> - tsk->desc->iax_src2_addr =3D (uint64_t)(tsk->src2);
> - tsk->desc->iax_src2_xfer_size =3D tsk->iaa_src2_xfer_size;
> - tsk->desc->iax_max_dst_size =3D tsk->iaa_max_dst_size;
> - tsk->comp->status =3D 0;
> + hw->completion_addr =3D (uint64_t)(comp);
> + hw->compr_flags =3D tsk->iaa_compr_flags;
> + hw->src2_addr =3D (uint64_t)(tsk->src2);
> + hw->src2_size =3D tsk->iaa_src2_xfer_size;
> + hw->max_dst_size =3D tsk->iaa_max_dst_size;
> + comp->status =3D 0;
> }
> =
> void iaa_prep_decompress(struct task *tsk)
> {
> + struct iax_test_completion_record *comp =3D (struct iax_test_completion=
_record *)tsk->comp;
> + struct iax_test_hw_desc *hw =3D (struct iax_test_hw_desc *)tsk->desc;
> +
> info("preparing descriptor for decompress\n");
> =
> - acctest_prep_desc_common(tsk->desc, tsk->opcode, (uint64_t)(tsk->dst1),
> + acctest_prep_desc_common((struct hw_desc *)hw, tsk->opcode, (uint64_t)(=
tsk->dst1),
> (uint64_t)(tsk->src1), tsk->xfer_size, tsk->dflags);
> - tsk->desc->completion_addr =3D (uint64_t)(tsk->comp);
> - tsk->desc->iax_decompr_flags =3D tsk->iaa_decompr_flags;
> - tsk->desc->iax_src2_addr =3D (uint64_t)(tsk->src2);
> - tsk->desc->iax_src2_xfer_size =3D tsk->iaa_src2_xfer_size;
> - tsk->desc->iax_max_dst_size =3D tsk->iaa_max_dst_size;
> - tsk->comp->status =3D 0;
> + hw->completion_addr =3D (uint64_t)(comp);
> + hw->decompr_flags =3D tsk->iaa_decompr_flags;
> + hw->src2_addr =3D (uint64_t)(tsk->src2);
> + hw->src2_size =3D tsk->iaa_src2_xfer_size;
> + hw->max_dst_size =3D tsk->iaa_max_dst_size;
> + comp->status =3D 0;
> }
> diff --git a/test/iaa_test.c b/test/iaa_test.c
> index 5939a4b..1e95897 100644
> --- a/test/iaa_test.c
> +++ b/test/iaa_test.c
> @@ -169,7 +169,7 @@ static int test_zcompress(struct acctest_context *ctx=
, size_t buf_size,
> }
> =
> switch (opcode) {
> - case IAX_OPCODE_ZCOMPRESS16:
> + case IAX_OPCODE_ZERO_COMP_16:
> rc =3D iaa_zcompress16_multi_task_nodes(ctx);
> if (rc !=3D ACCTEST_STATUS_OK)
> return rc;
> @@ -179,7 +179,7 @@ static int test_zcompress(struct acctest_context *ctx=
, size_t buf_size,
> if (rc !=3D ACCTEST_STATUS_OK)
> return rc;
> break;
> - case IAX_OPCODE_ZDECOMPRESS16:
> + case IAX_OPCODE_ZERO_DECOMP_16:
> rc =3D iaa_zdecompress16_multi_task_nodes(ctx);
> if (rc !=3D ACCTEST_STATUS_OK)
> return rc;
> @@ -189,7 +189,7 @@ static int test_zcompress(struct acctest_context *ctx=
, size_t buf_size,
> if (rc !=3D ACCTEST_STATUS_OK)
> return rc;
> break;
> - case IAX_OPCODE_ZCOMPRESS32:
> + case IAX_OPCODE_ZERO_COMP_32:
> rc =3D iaa_zcompress32_multi_task_nodes(ctx);
> if (rc !=3D ACCTEST_STATUS_OK)
> return rc;
> @@ -199,7 +199,7 @@ static int test_zcompress(struct acctest_context *ctx=
, size_t buf_size,
> if (rc !=3D ACCTEST_STATUS_OK)
> return rc;
> break;
> - case IAX_OPCODE_ZDECOMPRESS32:
> + case IAX_OPCODE_ZERO_DECOMP_32:
> rc =3D iaa_zdecompress32_multi_task_nodes(ctx);
> if (rc !=3D ACCTEST_STATUS_OK)
> return rc;
> @@ -375,10 +375,10 @@ int main(int argc, char *argv[])
> goto error;
> break;
> =
> - case IAX_OPCODE_ZCOMPRESS16:
> - case IAX_OPCODE_ZDECOMPRESS16:
> - case IAX_OPCODE_ZCOMPRESS32:
> - case IAX_OPCODE_ZDECOMPRESS32:
> + case IAX_OPCODE_ZERO_COMP_16:
> + case IAX_OPCODE_ZERO_DECOMP_16:
> + case IAX_OPCODE_ZERO_COMP_32:
> + case IAX_OPCODE_ZERO_DECOMP_32:
> rc =3D test_zcompress(iaa, buf_size, tflags, opcode, num_desc);
> if (rc !=3D ACCTEST_STATUS_OK)
> goto error;
> diff --git a/test/idxd_test.h b/test/idxd_test.h
> new file mode 100644
> index 0000000..61451bf
> --- /dev/null
> +++ b/test/idxd_test.h
> @@ -0,0 +1,118 @@
> +/* SPDX-License-Identifier: LGPL-2.1 */
> +/* Copyright(c) 2019 Intel Corporation. All rights reserved. */
> +
> +#ifndef _USR_IDXD_TEST_H_
> +#define _USR_IDXD_TEST_H_
> +
> +#include <stdint.h>
> +#include <accfg/idxd.h>
> +
> +#define IDXD_COMPRESS_FLAG_EOB_BFINAL 0x000c
> +#define IDXD_COMPRESS_FLAG_FLUSH_OUTPUT 0x0002
> +
> +#define IDXD_DECOMPRESS_FLAG_SELECT_EOB_BFINAL 0x0010
> +#define IDXD_DECOMPRESS_FLAG_CHECK_EOB 0x0008
> +#define IDXD_DECOMPRESS_FLAG_STOP_ON_EOB 0x0004
> +#define IDXD_DECOMPRESS_FLAG_FLUSH_OUTPUT 0x0002
> +#define IDXD_DECOMPRESS_FLAG_EN_DECOMPRESS 0x0001
> +
> +struct iax_test_hw_desc {
> + uint32_t pasid:20;
> + uint32_t rsvd:11;
> + uint32_t priv:1;
> + uint32_t flags:24;
> + uint32_t opcode:8;
> + uint64_t completion_addr;
> + uint64_t src1_addr;
> + uint64_t dst_addr;
> + uint32_t src1_size;
> + uint16_t int_handle;
> + union {
> + uint16_t compr_flags;
> + uint16_t decompr_flags;
> + uint16_t crc64_flags;
> + };
> + union {
> + /* IAX common */
> + struct {
> + uint64_t src2_addr;
> + uint32_t max_dst_size;
> + uint32_t src2_size;
> + uint32_t filter_flags;
> + uint32_t num_inputs;
> + };
> + /* CRC64 */
> + struct {
> + uint64_t crc64_rsvd;
> + uint64_t crc64_rsvd2;
> + uint64_t crc64_poly;
> + };
> +
> + uint8_t op_specific[24];
> + };
> +} __attribute__((packed));
> +
> +struct iax_test_completion_record {
> + volatile uint8_t status;
> + uint8_t error_code;
> + uint8_t fault_info;
> + uint8_t rsvd;
> + uint32_t bytes_completed;
> + uint64_t fault_addr;
> + union {
> + /* IAX common */
> + struct {
> + uint32_t invalid_flags;
> + uint32_t rsvd2;
> + uint32_t output_size;
> + uint8_t output_bits;
> + uint8_t rsvd3;
> + uint16_t xor_csum;
> + uint32_t crc;
> + union {
> + uint32_t min;
> + uint32_t first;
> + };
> + union {
> + uint32_t max;
> + uint32_t last;
> + };
> + union {
> + uint32_t sum;
> + uint32_t population_cnt;
> + };
> + };
> +
> + /* CRC64 */
> + struct {
> + uint32_t crc64_invalid_flags;
> + uint32_t crc64_rsvd;
> + uint64_t crc64_rsvd2;
> + uint64_t crc64_rsvd3;
> + uint64_t crc64_result;
> + };
> +
> + uint8_t op_specific[48];
> + };
> +} __attribute__((packed));
> +
> +struct hw_desc {
> + uint32_t pasid:20;
> + uint32_t rsvd:11;
> + uint32_t priv:1;
> + uint32_t flags:24;
> + uint32_t opcode:8;
> + uint64_t completion_addr;
> + uint64_t src_addr;
> + uint64_t dst_addr;
> + uint32_t xfer_size;
> + uint16_t int_handle;
> + uint8_t field[26];
> +} __attribute__((packed));
> +
> +struct completion_record {
> + volatile uint8_t status;
> + uint8_t field[63];
> +} __attribute__((packed));
> +
> +#endif
--===============0598958079360460614==--