* [Accel-config] [PATCH v1 02/14] accel-config/test: Add test code of operation Zcompress32
@ 2022-05-24 10:24 Li Zhang
0 siblings, 0 replies; 2+ messages in thread
From: Li Zhang @ 2022-05-24 10:24 UTC (permalink / raw)
To: accel-config
[-- Attachment #1: Type: text/plain, Size: 8704 bytes --]
Add test code of operation Zcompress32
Signed-off-by: Li Zhang <li4.zhang(a)intel.com>
---
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 tflags, int opcode, unsigned
return ACCTEST_STATUS_OK;
}
+static int init_zcompress32(struct task *tsk, int tflags, int opcode, unsigned long src1_xfer_size)
+{
+ tsk->pattern = 0x98765432abcdef01;
+ tsk->opcode = opcode;
+ tsk->test_flags = tflags;
+ tsk->xfer_size = src1_xfer_size;
+
+ tsk->src1 = 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 = aligned_alloc(ADDR_ALIGNMENT, src1_xfer_size * 2);
+ if (!tsk->dst1)
+ return -ENOMEM;
+ memset_pattern(tsk->dst1, 0, src1_xfer_size * 2);
+
+ tsk->output = 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 = 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 = 0;
@@ -111,6 +138,9 @@ int init_task(struct task *tsk, int tflags, int opcode, unsigned long src1_xfer_
case IAX_OPCODE_ZDECOMPRESS16:
rc = init_zdecompress16(tsk, tflags, opcode, src1_xfer_size);
break;
+ case IAX_OPCODE_ZCOMPRESS32:
+ rc = init_zcompress32(tsk, tflags, opcode, src1_xfer_size);
+ break;
}
if (rc != 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 = tsk->comp;
+ int rc;
+
+ rc = 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 = ctx->multi_task_node;
+ int ret = ACCTEST_STATUS_OK;
+
+ while (tsk_node) {
+ tsk_node->tsk->dflags |= (IDXD_OP_FLAG_CRAV | IDXD_OP_FLAG_RCR);
+ if ((tsk_node->tsk->test_flags & TEST_FLAGS_BOF) && ctx->bof)
+ tsk_node->tsk->dflags |= IDXD_OP_FLAG_BOF;
+
+ iaa_prep_zcompress32(tsk_node->tsk);
+ tsk_node = tsk_node->next;
+ }
+
+ info("Submitted all zcompress32 jobs\n");
+ tsk_node = ctx->multi_task_node;
+ while (tsk_node) {
+ acctest_desc_submit(ctx, tsk_node->tsk->desc);
+ tsk_node = tsk_node->next;
+ }
+
+ tsk_node = ctx->multi_task_node;
+ while (tsk_node) {
+ ret = iaa_wait_zcompress32(ctx, tsk_node->tsk);
+ if (ret != ACCTEST_STATUS_OK)
+ info("Desc: %p failed with ret: %d\n",
+ tsk_node->tsk->desc, tsk_node->tsk->comp->status);
+ tsk_node = 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 mismatch_expected)
case IAX_OPCODE_ZDECOMPRESS16:
ret = task_result_verify_zdecompress16(tsk, mismatch_expected);
break;
+ case IAX_OPCODE_ZCOMPRESS32:
+ ret = task_result_verify_zcompress32(tsk, mismatch_expected);
+ break;
}
if (ret == ACCTEST_STATUS_OK)
@@ -416,7 +496,7 @@ int task_result_verify_zcompress16(struct task *tsk, int mismatch_expected)
if (rc) {
err("zcompress16 mismatch, memcmp rc %d\n", rc);
for (i = 0; i < (expected_len / 2); i++) {
- printf("Exp[%d]=0x%04X, Act[%d]=0x%4X\n",
+ printf("Exp[%d]=0x%04X, Act[%d]=0x%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 = 0; i < (expected_len / 2); i++) {
- printf("Exp[%d]=0x%04X, Act[%d]=0x%4X\n",
+ printf("Exp[%d]=0x%04X, Act[%d]=0x%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 = iaa_do_zcompress32(tsk->output, tsk->src1, tsk->xfer_size);
+ rc = 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 = 0; i < (expected_len / 4); i++) {
+ printf("Exp[%d]=0x%08X, Act[%d]=0x%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 *ctx);
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 mismatch_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_expected);
+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 = tsk->iaa_max_dst_size;
tsk->comp->status = 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 = (uint64_t)(tsk->comp);
+ tsk->desc->iax_max_dst_size = tsk->iaa_max_dst_size;
+ tsk->comp->status = 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 != ACCTEST_STATUS_OK)
return rc;
+ /* Verification of all the nodes*/
+ rc = iaa_task_result_verify_task_nodes(ctx, 0);
+ if (rc != ACCTEST_STATUS_OK)
+ return rc;
+ break;
+ case IAX_OPCODE_ZCOMPRESS32:
+ rc = iaa_zcompress32_multi_task_nodes(ctx);
+ if (rc != ACCTEST_STATUS_OK)
+ return rc;
+
/* Verification of all the nodes*/
rc = iaa_task_result_verify_task_nodes(ctx, 0);
if (rc != ACCTEST_STATUS_OK)
@@ -287,12 +297,8 @@ int main(int argc, char *argv[])
break;
case IAX_OPCODE_ZCOMPRESS16:
- rc = test_zcompress(iaa, buf_size, tflags, opcode, num_desc);
- if (rc != ACCTEST_STATUS_OK)
- goto error;
- break;
-
case IAX_OPCODE_ZDECOMPRESS16:
+ case IAX_OPCODE_ZCOMPRESS32:
rc = test_zcompress(iaa, buf_size, tflags, opcode, num_desc);
if (rc != ACCTEST_STATUS_OK)
goto error;
--
2.25.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [Accel-config] [PATCH v1 02/14] accel-config/test: Add test code of operation Zcompress32
@ 2022-06-04 0:48 Li Zhang
0 siblings, 0 replies; 2+ messages in thread
From: Li Zhang @ 2022-06-04 0:48 UTC (permalink / raw)
To: accel-config
[-- Attachment #1: Type: text/plain, Size: 8704 bytes --]
Add test code of operation Zcompress32
Signed-off-by: Li Zhang <li4.zhang(a)intel.com>
---
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 tflags, int opcode, unsigned
return ACCTEST_STATUS_OK;
}
+static int init_zcompress32(struct task *tsk, int tflags, int opcode, unsigned long src1_xfer_size)
+{
+ tsk->pattern = 0x98765432abcdef01;
+ tsk->opcode = opcode;
+ tsk->test_flags = tflags;
+ tsk->xfer_size = src1_xfer_size;
+
+ tsk->src1 = 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 = aligned_alloc(ADDR_ALIGNMENT, src1_xfer_size * 2);
+ if (!tsk->dst1)
+ return -ENOMEM;
+ memset_pattern(tsk->dst1, 0, src1_xfer_size * 2);
+
+ tsk->output = 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 = 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 = 0;
@@ -111,6 +138,9 @@ int init_task(struct task *tsk, int tflags, int opcode, unsigned long src1_xfer_
case IAX_OPCODE_ZDECOMPRESS16:
rc = init_zdecompress16(tsk, tflags, opcode, src1_xfer_size);
break;
+ case IAX_OPCODE_ZCOMPRESS32:
+ rc = init_zcompress32(tsk, tflags, opcode, src1_xfer_size);
+ break;
}
if (rc != 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 = tsk->comp;
+ int rc;
+
+ rc = 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 = ctx->multi_task_node;
+ int ret = ACCTEST_STATUS_OK;
+
+ while (tsk_node) {
+ tsk_node->tsk->dflags |= (IDXD_OP_FLAG_CRAV | IDXD_OP_FLAG_RCR);
+ if ((tsk_node->tsk->test_flags & TEST_FLAGS_BOF) && ctx->bof)
+ tsk_node->tsk->dflags |= IDXD_OP_FLAG_BOF;
+
+ iaa_prep_zcompress32(tsk_node->tsk);
+ tsk_node = tsk_node->next;
+ }
+
+ info("Submitted all zcompress32 jobs\n");
+ tsk_node = ctx->multi_task_node;
+ while (tsk_node) {
+ acctest_desc_submit(ctx, tsk_node->tsk->desc);
+ tsk_node = tsk_node->next;
+ }
+
+ tsk_node = ctx->multi_task_node;
+ while (tsk_node) {
+ ret = iaa_wait_zcompress32(ctx, tsk_node->tsk);
+ if (ret != ACCTEST_STATUS_OK)
+ info("Desc: %p failed with ret: %d\n",
+ tsk_node->tsk->desc, tsk_node->tsk->comp->status);
+ tsk_node = 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 mismatch_expected)
case IAX_OPCODE_ZDECOMPRESS16:
ret = task_result_verify_zdecompress16(tsk, mismatch_expected);
break;
+ case IAX_OPCODE_ZCOMPRESS32:
+ ret = task_result_verify_zcompress32(tsk, mismatch_expected);
+ break;
}
if (ret == ACCTEST_STATUS_OK)
@@ -416,7 +496,7 @@ int task_result_verify_zcompress16(struct task *tsk, int mismatch_expected)
if (rc) {
err("zcompress16 mismatch, memcmp rc %d\n", rc);
for (i = 0; i < (expected_len / 2); i++) {
- printf("Exp[%d]=0x%04X, Act[%d]=0x%4X\n",
+ printf("Exp[%d]=0x%04X, Act[%d]=0x%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 = 0; i < (expected_len / 2); i++) {
- printf("Exp[%d]=0x%04X, Act[%d]=0x%4X\n",
+ printf("Exp[%d]=0x%04X, Act[%d]=0x%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 = iaa_do_zcompress32(tsk->output, tsk->src1, tsk->xfer_size);
+ rc = 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 = 0; i < (expected_len / 4); i++) {
+ printf("Exp[%d]=0x%08X, Act[%d]=0x%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 *ctx);
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 mismatch_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_expected);
+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 = tsk->iaa_max_dst_size;
tsk->comp->status = 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 = (uint64_t)(tsk->comp);
+ tsk->desc->iax_max_dst_size = tsk->iaa_max_dst_size;
+ tsk->comp->status = 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 != ACCTEST_STATUS_OK)
return rc;
+ /* Verification of all the nodes*/
+ rc = iaa_task_result_verify_task_nodes(ctx, 0);
+ if (rc != ACCTEST_STATUS_OK)
+ return rc;
+ break;
+ case IAX_OPCODE_ZCOMPRESS32:
+ rc = iaa_zcompress32_multi_task_nodes(ctx);
+ if (rc != ACCTEST_STATUS_OK)
+ return rc;
+
/* Verification of all the nodes*/
rc = iaa_task_result_verify_task_nodes(ctx, 0);
if (rc != ACCTEST_STATUS_OK)
@@ -287,12 +297,8 @@ int main(int argc, char *argv[])
break;
case IAX_OPCODE_ZCOMPRESS16:
- rc = test_zcompress(iaa, buf_size, tflags, opcode, num_desc);
- if (rc != ACCTEST_STATUS_OK)
- goto error;
- break;
-
case IAX_OPCODE_ZDECOMPRESS16:
+ case IAX_OPCODE_ZCOMPRESS32:
rc = test_zcompress(iaa, buf_size, tflags, opcode, num_desc);
if (rc != ACCTEST_STATUS_OK)
goto error;
--
2.25.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-06-04 0:48 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-24 10:24 [Accel-config] [PATCH v1 02/14] accel-config/test: Add test code of operation Zcompress32 Li Zhang
2022-06-04 0:48 Li Zhang
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.