diff --git a/KAEZstd/include/kaezstd.h b/KAEZstd/include/kaezstd.h index adf18cdb80fb6bb0a835c3e33f73c11873d5df1a..39c6c22ef44fc847c723763f9c4ab1fbb844dde4 100644 --- a/KAEZstd/include/kaezstd.h +++ b/KAEZstd/include/kaezstd.h @@ -27,6 +27,7 @@ typedef struct { }KAEZstdVersion; extern int kaezstd_get_version(KAEZstdVersion* ver); extern int kaezstd_init(ZSTD_CCtx* zc); +extern void kaezstd_reset(ZSTD_CCtx* zc); extern void kaezstd_release(ZSTD_CCtx* zc); extern void kaezstd_setstatus(ZSTD_CCtx* zc, unsigned int status); extern int kaezstd_compress(ZSTD_CCtx* zc, const void* src, size_t srcSize); diff --git a/KAEZstd/open_source/kaezstd_1_5_2.patch b/KAEZstd/open_source/kaezstd_1_5_2.patch index d599d2bc907021db96b291727ec647897f25c98f..0c25b90ef860809dda5737e113561d4c7a0f466d 100644 --- a/KAEZstd/open_source/kaezstd_1_5_2.patch +++ b/KAEZstd/open_source/kaezstd_1_5_2.patch @@ -1,6 +1,6 @@ -diff -uprN zstd/examples/Makefile zstd-new/examples/Makefile +diff -uprN zstd/examples/Makefile zstd_new/examples/Makefile --- zstd/examples/Makefile 2023-02-20 15:05:23.000000000 +0800 -+++ zstd-new/examples/Makefile 2024-03-29 10:10:58.848000000 +0800 ++++ zstd_new/examples/Makefile 2024-06-24 10:46:28.458827810 +0800 @@ -12,7 +12,8 @@ LIBDIR =../lib CPPFLAGS += -I$(LIBDIR) LIB = $(LIBDIR)/libzstd.a @@ -11,9 +11,9 @@ diff -uprN zstd/examples/Makefile zstd-new/examples/Makefile .PHONY: default default: all -diff -uprN zstd/lib/common/error_private.c zstd-new/lib/common/error_private.c +diff -uprN zstd/lib/common/error_private.c zstd_new/lib/common/error_private.c --- zstd/lib/common/error_private.c 2023-02-20 15:06:06.000000000 +0800 -+++ zstd-new/lib/common/error_private.c 2024-03-29 10:10:58.848000000 +0800 ++++ zstd_new/lib/common/error_private.c 2024-06-24 10:46:28.458827810 +0800 @@ -12,7 +12,7 @@ #include "error_private.h" @@ -23,9 +23,9 @@ diff -uprN zstd/lib/common/error_private.c zstd-new/lib/common/error_private.c { #ifdef ZSTD_STRIP_ERROR_STRINGS (void)code; -diff -uprN zstd/lib/common/error_private.h zstd-new/lib/common/error_private.h +diff -uprN zstd/lib/common/error_private.h zstd_new/lib/common/error_private.h --- zstd/lib/common/error_private.h 2023-02-20 15:05:23.000000000 +0800 -+++ zstd-new/lib/common/error_private.h 2024-03-29 10:10:58.852000000 +0800 ++++ zstd_new/lib/common/error_private.h 2024-06-24 10:46:28.458827810 +0800 @@ -68,7 +68,7 @@ ERR_STATIC ERR_enum ERR_getErrorCode(siz * Error Strings ******************************************/ @@ -35,9 +35,9 @@ diff -uprN zstd/lib/common/error_private.h zstd-new/lib/common/error_private.h ERR_STATIC const char* ERR_getErrorName(size_t code) { -diff -uprN zstd/lib/compress/zstd_compress.c zstd-new/lib/compress/zstd_compress.c +diff -uprN zstd/lib/compress/zstd_compress.c zstd_new/lib/compress/zstd_compress.c --- zstd/lib/compress/zstd_compress.c 2023-02-20 15:06:06.000000000 +0800 -+++ zstd-new/lib/compress/zstd_compress.c 2024-03-30 09:30:14.212000000 +0800 ++++ zstd_new/lib/compress/zstd_compress.c 2024-06-24 11:53:27.386827810 +0800 @@ -28,6 +28,9 @@ #include "zstd_ldm.h" #include "zstd_compress_superblock.h" @@ -86,7 +86,17 @@ diff -uprN zstd/lib/compress/zstd_compress.c zstd-new/lib/compress/zstd_compress case ZSTD_c_windowLog: case ZSTD_c_hashLog: case ZSTD_c_chainLog: -@@ -1909,7 +1929,10 @@ static size_t ZSTD_resetCCtx_internal(ZS +@@ -1210,6 +1230,9 @@ size_t ZSTD_CCtx_refPrefix_advanced( + * Also dumps dictionary */ + size_t ZSTD_CCtx_reset(ZSTD_CCtx* cctx, ZSTD_ResetDirective reset) + { ++#ifdef CONF_KAEZSTD ++ if (cctx->kaeInited == 1) { kaezstd_reset(cctx); } ++#endif + if ( (reset == ZSTD_reset_session_only) + || (reset == ZSTD_reset_session_and_parameters) ) { + cctx->streamStage = zcss_init; +@@ -1909,7 +1932,10 @@ static size_t ZSTD_resetCCtx_internal(ZS RETURN_ERROR_IF(zc->blockState.prevCBlock == NULL, memory_allocation, "couldn't allocate prevCBlock"); zc->blockState.nextCBlock = (ZSTD_compressedBlockState_t*) ZSTD_cwksp_reserve_object(ws, sizeof(ZSTD_compressedBlockState_t)); RETURN_ERROR_IF(zc->blockState.nextCBlock == NULL, memory_allocation, "couldn't allocate nextCBlock"); @@ -98,7 +108,7 @@ diff -uprN zstd/lib/compress/zstd_compress.c zstd-new/lib/compress/zstd_compress RETURN_ERROR_IF(zc->entropyWorkspace == NULL, memory_allocation, "couldn't allocate entropyWorkspace"); } } -@@ -2844,7 +2867,15 @@ static size_t ZSTD_buildSeqStore(ZSTD_CC +@@ -2844,7 +2870,15 @@ static size_t ZSTD_buildSeqStore(ZSTD_CC if (curr > ms->nextToUpdate + 384) ms->nextToUpdate = curr - MIN(192, (U32)(curr - ms->nextToUpdate - 384)); } @@ -115,7 +125,7 @@ diff -uprN zstd/lib/compress/zstd_compress.c zstd-new/lib/compress/zstd_compress /* select and store sequences */ { ZSTD_dictMode_e const dictMode = ZSTD_matchState_dictMode(ms); size_t lastLLSize; -@@ -2889,6 +2920,9 @@ static size_t ZSTD_buildSeqStore(ZSTD_CC +@@ -2889,6 +2923,9 @@ static size_t ZSTD_buildSeqStore(ZSTD_CC { const BYTE* const lastLiterals = (const BYTE*)src + srcSize - lastLLSize; ZSTD_storeLastLiterals(&zc->seqStore, lastLiterals, lastLLSize); } } @@ -125,7 +135,7 @@ diff -uprN zstd/lib/compress/zstd_compress.c zstd-new/lib/compress/zstd_compress return ZSTDbss_compress; } -@@ -3963,7 +3997,11 @@ static size_t ZSTD_compress_frameChunk(Z +@@ -3963,7 +4000,11 @@ static size_t ZSTD_compress_frameChunk(Z /* Ensure hash/chain table insertion resumes no sooner than lowlimit */ if (ms->nextToUpdate < ms->window.lowLimit) ms->nextToUpdate = ms->window.lowLimit; @@ -138,7 +148,7 @@ diff -uprN zstd/lib/compress/zstd_compress.c zstd-new/lib/compress/zstd_compress { size_t cSize; if (ZSTD_useTargetCBlockSize(&cctx->appliedParams)) { cSize = ZSTD_compressBlock_targetCBlockSize(cctx, op, dstCapacity, ip, blockSize, lastBlock); -@@ -3982,6 +4020,11 @@ static size_t ZSTD_compress_frameChunk(Z +@@ -3982,6 +4023,11 @@ static size_t ZSTD_compress_frameChunk(Z if (cSize == 0) { /* block is not compressible */ cSize = ZSTD_noCompressBlock(op, dstCapacity, ip, blockSize, lastBlock); @@ -150,19 +160,19 @@ diff -uprN zstd/lib/compress/zstd_compress.c zstd-new/lib/compress/zstd_compress FORWARD_IF_ERROR(cSize, "ZSTD_noCompressBlock failed"); } else { U32 const cBlockHeader = cSize == 1 ? -@@ -3989,6 +4032,11 @@ static size_t ZSTD_compress_frameChunk(Z +@@ -3989,6 +4035,11 @@ static size_t ZSTD_compress_frameChunk(Z lastBlock + (((U32)bt_compressed)<<1) + (U32)(cSize << 3); MEM_writeLE24(op, cBlockHeader); cSize += ZSTD_blockHeaderSize; +#ifdef CONF_KAEZSTD + if (cctx->kaeInited == 1) { -+ kaezstd_setstatus(cctx, TUPLE_STATUS_COMPRESS); ++ kaezstd_setstatus(cctx, cSize == 1 ? TUPLE_STATUS_RLEBLOCK : TUPLE_STATUS_COMPRESS); + } +#endif } } -@@ -4571,6 +4619,9 @@ size_t ZSTD_compressBegin_usingDict(ZSTD +@@ -4571,6 +4622,9 @@ size_t ZSTD_compressBegin_usingDict(ZSTD { ZSTD_parameters const params = ZSTD_getParams_internal(compressionLevel, ZSTD_CONTENTSIZE_UNKNOWN, dictSize, ZSTD_cpm_noAttachDict); ZSTD_CCtxParams_init_internal(&cctxParams, ¶ms, (compressionLevel == 0) ? ZSTD_CLEVEL_DEFAULT : compressionLevel); @@ -172,7 +182,7 @@ diff -uprN zstd/lib/compress/zstd_compress.c zstd-new/lib/compress/zstd_compress } DEBUGLOG(4, "ZSTD_compressBegin_usingDict (dictSize=%u)", (unsigned)dictSize); return ZSTD_compressBegin_internal(cctx, dict, dictSize, ZSTD_dct_auto, ZSTD_dtlm_fast, NULL, -@@ -4716,6 +4767,9 @@ size_t ZSTD_compress_usingDict(ZSTD_CCtx +@@ -4716,6 +4770,9 @@ size_t ZSTD_compress_usingDict(ZSTD_CCtx ZSTD_parameters const params = ZSTD_getParams_internal(compressionLevel, srcSize, dict ? dictSize : 0, ZSTD_cpm_noAttachDict); assert(params.fParams.contentSizeFlag == 1); ZSTD_CCtxParams_init_internal(&cctx->simpleApiParams, ¶ms, (compressionLevel == 0) ? ZSTD_CLEVEL_DEFAULT: compressionLevel); @@ -182,9 +192,9 @@ diff -uprN zstd/lib/compress/zstd_compress.c zstd-new/lib/compress/zstd_compress } DEBUGLOG(4, "ZSTD_compress_usingDict (srcSize=%u)", (unsigned)srcSize); return ZSTD_compress_advanced_internal(cctx, dst, dstCapacity, src, srcSize, dict, dictSize, &cctx->simpleApiParams); -diff -uprN zstd/lib/compress/zstd_compress_internal.h zstd-new/lib/compress/zstd_compress_internal.h +diff -uprN zstd/lib/compress/zstd_compress_internal.h zstd_new/lib/compress/zstd_compress_internal.h --- zstd/lib/compress/zstd_compress_internal.h 2023-02-20 15:06:06.000000000 +0800 -+++ zstd-new/lib/compress/zstd_compress_internal.h 2024-03-29 10:13:46.852000000 +0800 ++++ zstd_new/lib/compress/zstd_compress_internal.h 2024-06-24 10:46:28.458827810 +0800 @@ -18,6 +18,9 @@ /*-************************************* * Dependencies @@ -208,9 +218,9 @@ diff -uprN zstd/lib/compress/zstd_compress_internal.h zstd-new/lib/compress/zstd ZSTD_compressionStage_e stage; int cParamsChanged; /* == 1 if cParams(except wlog) or compression level are changed in requestedParams. Triggers transmission of new params to ZSTDMT (if available) then reset to 0. */ int bmi2; /* == 1 if the CPU supports BMI2 and 0 otherwise. CPU support is determined dynamically once per context lifetime. */ -diff -uprN zstd/lib/libzstd.mk zstd-new/lib/libzstd.mk +diff -uprN zstd/lib/libzstd.mk zstd_new/lib/libzstd.mk --- zstd/lib/libzstd.mk 2023-02-20 15:06:06.000000000 +0800 -+++ zstd-new/lib/libzstd.mk 2024-03-29 10:10:58.852000000 +0800 ++++ zstd_new/lib/libzstd.mk 2024-06-24 10:46:28.458827810 +0800 @@ -99,6 +99,10 @@ ASFLAGS += $(DEBUGFLAGS) $(MOREFLAGS) $ LDFLAGS += $(MOREFLAGS) FLAGS = $(CPPFLAGS) $(CFLAGS) $(ASFLAGS) $(LDFLAGS) diff --git a/KAEZstd/src/kaezstd_adapter.c b/KAEZstd/src/kaezstd_adapter.c index c4504e9c6fbe9389953bc03fd868398b7a0f025b..8dd79debab48b4ac084ea3ecfa3eac71b57963fe 100644 --- a/KAEZstd/src/kaezstd_adapter.c +++ b/KAEZstd/src/kaezstd_adapter.c @@ -15,7 +15,6 @@ static void uadk_get_accel_platform(void) { if (g_platform >= 0) { - US_INFO("kaezstd v%d inited!\n", g_platform); return; } // init log @@ -27,17 +26,19 @@ static void uadk_get_accel_platform(void) free(dev); if (flag & 0x1) { g_platform = HW_V2; - return; + goto end; } } // check no-sva int nosva_dev_num = wd_get_available_dev_num("lz77_zstd"); if (nosva_dev_num > 0) { g_platform = HW_V1; - return; + goto end; } // hardware don't support, use zstd original interface g_platform = HW_NONE; +end: + US_INFO("kaezstd v%d inited!\n", g_platform); } int kaezstd_init(ZSTD_CCtx* zc) @@ -62,6 +63,25 @@ int kaezstd_init(ZSTD_CCtx* zc) return ret; } +void kaezstd_reset(ZSTD_CCtx* zc) +{ + uadk_get_accel_platform(); + + switch (g_platform) + { + case HW_NONE: + break; + case HW_V1: + kaezstd_reset_v1(zc); + break; + case HW_V2: + break; + default: + break; + } + US_INFO("kaezstd_reset"); +} + void kaezstd_release(ZSTD_CCtx* zc) { uadk_get_accel_platform(); @@ -99,7 +119,7 @@ void kaezstd_setstatus(ZSTD_CCtx* zc, unsigned int status) default: break; } - US_INFO("kaezstd_setstatus %d\n", status); + US_INFO("kaezstd_set blk_type %d\n", status); } int kaezstd_compress(ZSTD_CCtx* zc, const void* src, size_t srcSize) diff --git a/KAEZstd/src/kaezstd_adapter.h b/KAEZstd/src/kaezstd_adapter.h index 0bdf1a10c981e6d948fbb6ad3229e4fb5c9a7bcb..1754914acaae0daef0a4a3c824d94f009566d262 100644 --- a/KAEZstd/src/kaezstd_adapter.h +++ b/KAEZstd/src/kaezstd_adapter.h @@ -18,6 +18,7 @@ enum { static int g_platform = -1; extern int kaezstd_init_v1(ZSTD_CCtx* zc); +extern void kaezstd_reset_v1(ZSTD_CCtx* zc); extern void kaezstd_release_v1(ZSTD_CCtx* zc); extern void kaezstd_setstatus_v1(ZSTD_CCtx* zc, unsigned int status); extern int kaezstd_compress_v1(ZSTD_CCtx* zc, const void* src, size_t srcSize); diff --git a/KAEZstd/src/v1/kaezstd_comp.c b/KAEZstd/src/v1/kaezstd_comp.c index 470de4275678dc17ed77c9e00546d17577ccb3d2..484425fe11c86aa09baa573af6fa5798f57b434e 100644 --- a/KAEZstd/src/v1/kaezstd_comp.c +++ b/KAEZstd/src/v1/kaezstd_comp.c @@ -48,14 +48,15 @@ int kaezstd_compress_v1(ZSTD_CCtx* zc, const void* src, size_t srcSize) return KAE_ZSTD_INVAL_PARA; } - US_DEBUG("kaezstd compress srcSize : %lu", srcSize); + US_INFO("kaezstd compress srcSize : %lu", srcSize); kaezip_ctx->in = (void*)src; - kaezip_ctx->in_len = (srcSize < KAEZIP_STREAM_CHUNK_IN) ? srcSize : KAEZIP_STREAM_CHUNK_IN; + kaezip_ctx->in_len = srcSize; kaezip_ctx->out = NULL; kaezip_ctx->consumed = 0; kaezip_ctx->produced = 0; kaezip_ctx->avail_out = KAEZIP_STREAM_CHUNK_OUT; - kaezip_ctx->flush = (srcSize <= KAEZIP_STREAM_CHUNK_IN) ? WCRYPTO_FINISH : WCRYPTO_SYNC_FLUSH; + kaezip_ctx->flush = (zc->kaeFrameMode == 1) ? WCRYPTO_FINISH : + (srcSize & 0x3) ? WCRYPTO_FINISH : WCRYPTO_SYNC_FLUSH; kaezip_ctx->do_comp_len = kaezip_ctx->in_len; kaezip_set_input_data(kaezip_ctx); @@ -67,9 +68,9 @@ int kaezstd_compress_v1(ZSTD_CCtx* zc, const void* src, size_t srcSize) return ret; } else { struct wcrypto_lz77_zstd_format* zstd_data = &kaezip_ctx->zstd_data; - US_INFO("lit_num = %u, seq_num = %u, lit_length_overflow_cnt = %u, lit_length_overflow_pos = %u\n", - zstd_data->lit_num, zstd_data->seq_num, - zstd_data->lit_length_overflow_cnt, zstd_data->lit_length_overflow_pos); + US_DEBUG("frameMode = %u, flush = %d, lit_num = %u, seq_num = %u, lit_length_overflow_cnt = %u, lit_length_overflow_pos = %u\n", + zc->kaeFrameMode, kaezip_ctx->flush, + zstd_data->lit_num, zstd_data->seq_num, zstd_data->lit_length_overflow_cnt, zstd_data->lit_length_overflow_pos); } if (op_data->stream_pos == WCRYPTO_COMP_STREAM_NEW) { diff --git a/KAEZstd/src/v1/kaezstd_init.c b/KAEZstd/src/v1/kaezstd_init.c index 69f3f003cbc8ebc8cc70679353e466ac9e7e50ed..7fb1d6af6454ac0f4af515294529ff15c2cbdb36 100644 --- a/KAEZstd/src/v1/kaezstd_init.c +++ b/KAEZstd/src/v1/kaezstd_init.c @@ -22,12 +22,22 @@ int kaezstd_init_v1(ZSTD_CCtx* zc) return KAE_ZSTD_SUCC; } +void kaezstd_reset_v1(ZSTD_CCtx* zc) +{ + kaezip_ctx_t* kaezip_ctx = (kaezip_ctx_t*)zc->kaeConfig; + if (kaezip_ctx) { + kaezip_ctx->status = KAEZIP_COMP_INIT; + kaezip_ctx->zstd_data.blk_type = 2; // zstd compressed block + US_DEBUG("kaezstd reset v1"); + } +} + void kaezstd_release_v1(ZSTD_CCtx* zc) { kaezip_ctx_t* kaezip_ctx = (kaezip_ctx_t*)zc->kaeConfig; if (kaezip_ctx) { kaezip_put_ctx(kaezip_ctx); - US_INFO("kaezstd release"); + US_INFO("kaezstd release v1"); } zc->kaeConfig = 0; } diff --git a/KAEZstd/src/v1/kaezstd_init.h b/KAEZstd/src/v1/kaezstd_init.h index b2ca8a8ea2471bba4e32e567877a1dd17fc7ad01..d200e3fa1543d206548d7ddd74a725a33f5ffd04 100644 --- a/KAEZstd/src/v1/kaezstd_init.h +++ b/KAEZstd/src/v1/kaezstd_init.h @@ -12,6 +12,7 @@ #include "kaezstd_common.h" int kaezstd_init_v1(ZSTD_CCtx* zc); +void kaezstd_reset_v1(ZSTD_CCtx* zc); void kaezstd_release_v1(ZSTD_CCtx* zc); #endif \ No newline at end of file diff --git a/KAEZstd/src/v2/kaezstd_compress.c b/KAEZstd/src/v2/kaezstd_compress.c index 3b07a4e21e464fada6459fb85ccbf859fb5d16de..ed7b87173d503f92743787194e3d1963d69371c5 100644 --- a/KAEZstd/src/v2/kaezstd_compress.c +++ b/KAEZstd/src/v2/kaezstd_compress.c @@ -53,7 +53,7 @@ int kaezstd_compress_v2(ZSTD_CCtx* zc, const void* src, size_t srcSize) KaeZstdConfig *config = NULL; int ret; - US_DEBUG("KAE zstd compress."); + US_INFO("KAE zstd compress, srcSize is %lu", srcSize); if (zc == NULL || src == NULL || srcSize == 0) { US_ERR("compress parameter invalid\n"); return KAE_ZSTD_INVAL_PARA; @@ -64,19 +64,16 @@ int kaezstd_compress_v2(ZSTD_CCtx* zc, const void* src, size_t srcSize) config->req.src = (void*)src; config->req.src_len = srcSize; config->req.dst_len = REQ_DSTBUFF_LEN; - config->req.last = zc->kaeFrameMode; + config->req.last = (zc->kaeFrameMode == 1) ? 1 : (srcSize & 0x3) ? 1 : 0; ret = wd_do_comp_strm(config->sess, &(config->req)); if (ret) { US_ERR("wd_do_comp_strm = %d\n", ret); return ret; + } else { + US_DEBUG("lit_num = %u, seq_num = %u, lit_length_overflow_type = %d, lit_length_overflow_pos = %u\n", + config->tuple.litlen, config->tuple.seqnum, config->tuple.longLengthType, config->tuple.longLengthPos); } - ret = kaezstd_data_parsing(zc, config); - if (ret) { - US_ERR("data_parsing = %d\n", ret); - return ret; - } - - return ret; + return kaezstd_data_parsing(zc, config); } diff --git a/build.sh b/build.sh index bbb8a2363c6b693707684923fd0d59aea2ef479c..4cca34646caf6d6ef4d3f5755446a0a976a4d129 100644 --- a/build.sh +++ b/build.sh @@ -162,7 +162,9 @@ function build_uadk() cd ${SRC_PATH} patch --no-backup-if-mismatch -p1 -R -s --forward < ./scripts/patches/0001-uadk-add-ctr-mode.patch || true patch --no-backup-if-mismatch -p1 -N -s --forward < ./scripts/patches/0001-uadk-add-ctr-mode.patch # uadk没支持ctr模式,engine层已经软件层面适配,可以定制化使能 - cd ${SRC_PATH}/uadk + patch --no-backup-if-mismatch -p1 -R -s --forward < ./scripts/patches/0002-fix-uadk-zstd-bug.patch || true + patch --no-backup-if-mismatch -p1 -N -s --forward < ./scripts/patches/0002-fix-uadk-zstd-bug.patch + cd ${SRC_PATH}/uadk sh autogen.sh sh conf.sh make -j64 diff --git a/scripts/patches/0002-fix-uadk-zstd-bug.patch b/scripts/patches/0002-fix-uadk-zstd-bug.patch new file mode 100644 index 0000000000000000000000000000000000000000..2117fe11b513205ca01b30d7edbcf29c588df374 --- /dev/null +++ b/scripts/patches/0002-fix-uadk-zstd-bug.patch @@ -0,0 +1,36 @@ +From e4eb46f7bd5b1a1c576d548dd2265621b4a6ac9a Mon Sep 17 00:00:00 2001 +From: LiuYongYang +Date: Thu, 27 Jun 2024 15:05:43 +0800 +Subject: [PATCH] fix uadk zstd bug + +--- + uadk/v1/drv/hisi_zip_udrv.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/uadk/v1/drv/hisi_zip_udrv.c b/uadk/v1/drv/hisi_zip_udrv.c +index dfd1fb3..f161c32 100644 +--- a/uadk/v1/drv/hisi_zip_udrv.c ++++ b/uadk/v1/drv/hisi_zip_udrv.c +@@ -501,8 +501,8 @@ static int fill_zip_addr_lz77_zstd(void *ssqe, + } else { + sqe->cipher_key_addr_l = lower_32_bits((__u64)addr.dest_addr); + sqe->cipher_key_addr_h = upper_32_bits((__u64)addr.dest_addr); +- sqe->dest_addr_l = lower_32_bits((__u64)addr.dest_addr + msg->in_size); +- sqe->dest_addr_h = upper_32_bits((__u64)addr.dest_addr + msg->in_size); ++ sqe->dest_addr_l = lower_32_bits((__u64)addr.dest_addr + msg->in_size + ZSTD_LIT_RSV_SIZE); ++ sqe->dest_addr_h = upper_32_bits((__u64)addr.dest_addr + msg->in_size + ZSTD_LIT_RSV_SIZE); + } + + sqe->stream_ctx_addr_l = lower_32_bits((__u64)addr.ctxbuf_addr); +@@ -672,7 +672,7 @@ static void fill_priv_lz77_zstd(void *ssqe, struct wcrypto_comp_msg *recv_msg) + format->sequences_start = zstd_out->sequence; + } else { + format->literals_start = recv_msg->dst; +- format->sequences_start = recv_msg->dst + recv_msg->in_size; ++ format->sequences_start = recv_msg->dst + recv_msg->in_size + ZSTD_LIT_RSV_SIZE; + format->freq = (void *)(&format->lit_length_overflow_pos + 1); + } + +-- +2.33.0 +