From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============2632286957775371992==" MIME-Version: 1.0 From: Li Zhang Subject: [Accel-config] [PATCH v1 02/14] accel-config/test: Add test code of operation Zcompress32 Date: Sat, 04 Jun 2022 08:48:33 +0800 Message-ID: <20220604004845.1699148-3-li4.zhang@intel.com> In-Reply-To: 20220604004845.1699148-1-li4.zhang@intel.com To: accel-config@lists.01.org List-ID: --===============2632286957775371992== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Add test code of operation Zcompress32 Signed-off-by: Li Zhang --- test/iaa.c | 125 +++++++++++++++++++++++++++++++++++++++++++++++- test/iaa.h | 3 ++ test/iaa_prep.c | 11 +++++ test/iaa_test.c | 16 +++++-- 4 files changed, 148 insertions(+), 7 deletions(-) diff --git a/test/iaa.c b/test/iaa.c index 2002be1..f3d45f5 100644 --- a/test/iaa.c +++ b/test/iaa.c @@ -94,6 +94,33 @@ static int init_zdecompress16(struct task *tsk, int tfla= gs, int opcode, unsigned return ACCTEST_STATUS_OK; } = +static int init_zcompress32(struct task *tsk, int tflags, int opcode, unsi= gned long src1_xfer_size) +{ + tsk->pattern =3D 0x98765432abcdef01; + tsk->opcode =3D opcode; + tsk->test_flags =3D tflags; + tsk->xfer_size =3D src1_xfer_size; + + tsk->src1 =3D aligned_alloc(ADDR_ALIGNMENT, src1_xfer_size); + if (!tsk->src1) + return -ENOMEM; + iaa_zcompress16_randomize_input(tsk->src1, tsk->pattern, src1_xfer_size); + + tsk->dst1 =3D aligned_alloc(ADDR_ALIGNMENT, src1_xfer_size * 2); + if (!tsk->dst1) + return -ENOMEM; + memset_pattern(tsk->dst1, 0, src1_xfer_size * 2); + + tsk->output =3D aligned_alloc(ADDR_ALIGNMENT, src1_xfer_size * 2); + if (!tsk->output) + return -ENOMEM; + memset_pattern(tsk->output, 0, src1_xfer_size * 2); + + tsk->iaa_max_dst_size =3D src1_xfer_size * 2; + + return ACCTEST_STATUS_OK; +} + int init_task(struct task *tsk, int tflags, int opcode, unsigned long src1= _xfer_size) { int rc =3D 0; @@ -111,6 +138,9 @@ int init_task(struct task *tsk, int tflags, int opcode,= unsigned long src1_xfer_ case IAX_OPCODE_ZDECOMPRESS16: rc =3D init_zdecompress16(tsk, tflags, opcode, src1_xfer_size); break; + case IAX_OPCODE_ZCOMPRESS32: + rc =3D init_zcompress32(tsk, tflags, opcode, src1_xfer_size); + break; } = if (rc !=3D ACCTEST_STATUS_OK) { @@ -309,6 +339,53 @@ int iaa_zdecompress16_multi_task_nodes(struct acctest_= context *ctx) return ret; } = +static int iaa_wait_zcompress32(struct acctest_context *ctx, struct task *= tsk) +{ + struct completion_record *comp =3D tsk->comp; + int rc; + + rc =3D acctest_wait_on_desc_timeout(comp, ctx, ms_timeout); + if (rc < 0) { + err("zcompress32 desc timeout\n"); + return ACCTEST_STATUS_TIMEOUT; + } + + return ACCTEST_STATUS_OK; +} + +int iaa_zcompress32_multi_task_nodes(struct acctest_context *ctx) +{ + struct task_node *tsk_node =3D ctx->multi_task_node; + int ret =3D ACCTEST_STATUS_OK; + + while (tsk_node) { + 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; + + iaa_prep_zcompress32(tsk_node->tsk); + tsk_node =3D tsk_node->next; + } + + info("Submitted all zcompress32 jobs\n"); + tsk_node =3D ctx->multi_task_node; + while (tsk_node) { + acctest_desc_submit(ctx, tsk_node->tsk->desc); + tsk_node =3D tsk_node->next; + } + + tsk_node =3D ctx->multi_task_node; + while (tsk_node) { + ret =3D iaa_wait_zcompress32(ctx, tsk_node->tsk); + if (ret !=3D ACCTEST_STATUS_OK) + info("Desc: %p failed with ret: %d\n", + tsk_node->tsk->desc, tsk_node->tsk->comp->status); + tsk_node =3D tsk_node->next; + } + + return ret; +} + /* mismatch_expected: expect mismatched buffer with success status 0x1 */ int iaa_task_result_verify(struct task *tsk, int mismatch_expected) { @@ -329,6 +406,9 @@ int iaa_task_result_verify(struct task *tsk, int mismat= ch_expected) case IAX_OPCODE_ZDECOMPRESS16: ret =3D task_result_verify_zdecompress16(tsk, mismatch_expected); break; + case IAX_OPCODE_ZCOMPRESS32: + ret =3D task_result_verify_zcompress32(tsk, mismatch_expected); + break; } = if (ret =3D=3D ACCTEST_STATUS_OK) @@ -416,7 +496,7 @@ int task_result_verify_zcompress16(struct task *tsk, in= t mismatch_expected) if (rc) { err("zcompress16 mismatch, memcmp rc %d\n", rc); for (i =3D 0; i < (expected_len / 2); i++) { - printf("Exp[%d]=3D0x%04X, Act[%d]=3D0x%4X\n", + printf("Exp[%d]=3D0x%04X, Act[%d]=3D0x%04X\n", i, ((uint16_t *)tsk->output)[i], i, ((uint16_t *)tsk->dst1)[i]); } @@ -457,7 +537,7 @@ int task_result_verify_zdecompress16(struct task *tsk, = int mismatch_expected) if (rc) { err("zdecompress16 mismatch, memcmp rc %d\n", rc); for (i =3D 0; i < (expected_len / 2); i++) { - printf("Exp[%d]=3D0x%04X, Act[%d]=3D0x%4X\n", + printf("Exp[%d]=3D0x%04X, Act[%d]=3D0x%04X\n", i, ((uint16_t *)tsk->output)[i], i, ((uint16_t *)tsk->dst1)[i]); } @@ -475,3 +555,44 @@ int task_result_verify_zdecompress16(struct task *tsk,= int mismatch_expected) = return -ENXIO; } + +int task_result_verify_zcompress32(struct task *tsk, int mismatch_expected) +{ + int i; + int rc; + int expected_len; + + if (mismatch_expected) + warn("invalid arg mismatch_expected for %d\n", tsk->opcode); + + expected_len =3D iaa_do_zcompress32(tsk->output, tsk->src1, tsk->xfer_siz= e); + rc =3D memcmp(tsk->dst1, tsk->output, expected_len); + + if (!mismatch_expected) { + if (expected_len - tsk->comp->iax_output_size) { + err("zcompress32 mismatch, exp len %d, act len %d\n", + expected_len, tsk->comp->iax_output_size); + + return -ENXIO; + } + if (rc) { + err("zcompress32 mismatch, memcmp rc %d\n", rc); + for (i =3D 0; i < (expected_len / 4); i++) { + printf("Exp[%d]=3D0x%08X, Act[%d]=3D0x%08X\n", + i, ((uint32_t *)tsk->output)[i], + i, ((uint32_t *)tsk->dst1)[i]); + } + + return -ENXIO; + } + return ACCTEST_STATUS_OK; + } + + /* mismatch_expected */ + if (rc) { + info("expected mismatch\n"); + return ACCTEST_STATUS_OK; + } + + return -ENXIO; +} diff --git a/test/iaa.h b/test/iaa.h index 6303c7f..9746466 100644 --- a/test/iaa.h +++ b/test/iaa.h @@ -13,15 +13,18 @@ int iaa_noop_multi_task_nodes(struct acctest_context *c= tx); int iaa_crc64_multi_task_nodes(struct acctest_context *ctx); int iaa_zcompress16_multi_task_nodes(struct acctest_context *ctx); int iaa_zdecompress16_multi_task_nodes(struct acctest_context *ctx); +int iaa_zcompress32_multi_task_nodes(struct acctest_context *ctx); void iaa_prep_noop(struct task *tsk); void iaa_prep_crc64(struct task *tsk); void iaa_prep_zcompress16(struct task *tsk); void iaa_prep_zdecompress16(struct task *tsk); +void iaa_prep_zcompress32(struct task *tsk); = int iaa_task_result_verify(struct task *tsk, int mismatch_expected); int iaa_task_result_verify_task_nodes(struct acctest_context *ctx, int mis= match_expected); int task_result_verify_crc64(struct task *tsk, int mismatch_expected); int task_result_verify_zcompress16(struct task *tsk, int mismatch_expected= ); int task_result_verify_zdecompress16(struct task *tsk, int mismatch_expect= ed); +int task_result_verify_zcompress32(struct task *tsk, int mismatch_expected= ); = #endif diff --git a/test/iaa_prep.c b/test/iaa_prep.c index e4f7578..7aff1e2 100644 --- a/test/iaa_prep.c +++ b/test/iaa_prep.c @@ -53,3 +53,14 @@ void iaa_prep_zdecompress16(struct task *tsk) tsk->desc->iax_max_dst_size =3D tsk->iaa_max_dst_size; tsk->comp->status =3D 0; } + +void iaa_prep_zcompress32(struct task *tsk) +{ + info("preparing descriptor for zcompress32\n"); + + acctest_prep_desc_common(tsk->desc, 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; +} diff --git a/test/iaa_test.c b/test/iaa_test.c index b5fa0af..7141979 100644 --- a/test/iaa_test.c +++ b/test/iaa_test.c @@ -184,6 +184,16 @@ static int test_zcompress(struct acctest_context *ctx,= size_t buf_size, if (rc !=3D ACCTEST_STATUS_OK) return rc; = + /* Verification of all the nodes*/ + rc =3D iaa_task_result_verify_task_nodes(ctx, 0); + if (rc !=3D ACCTEST_STATUS_OK) + return rc; + break; + case IAX_OPCODE_ZCOMPRESS32: + rc =3D iaa_zcompress32_multi_task_nodes(ctx); + if (rc !=3D ACCTEST_STATUS_OK) + return rc; + /* Verification of all the nodes*/ rc =3D iaa_task_result_verify_task_nodes(ctx, 0); if (rc !=3D ACCTEST_STATUS_OK) @@ -287,12 +297,8 @@ int main(int argc, char *argv[]) break; = case IAX_OPCODE_ZCOMPRESS16: - rc =3D test_zcompress(iaa, buf_size, tflags, opcode, num_desc); - if (rc !=3D ACCTEST_STATUS_OK) - goto error; - break; - case IAX_OPCODE_ZDECOMPRESS16: + case IAX_OPCODE_ZCOMPRESS32: rc =3D test_zcompress(iaa, buf_size, tflags, opcode, num_desc); if (rc !=3D ACCTEST_STATUS_OK) goto error; -- = 2.25.1 --===============2632286957775371992==--