From 6225db754988816da36d85e55d5e6c60ac0078f1 Mon Sep 17 00:00:00 2001 From: JangShui Yang <1175135535@qq.com> Date: Wed, 4 Sep 2024 13:56:05 +0800 Subject: [PATCH] libwd: update the source code to 2.7.0 --- ...dk-fix-build-issue-of-pthread_atfork.patch | 39 - ...ark-skip-sm4-benchmark-if-openssl-wi.patch | 52 + 0002-uadk-fix-static-build-error.patch | 36 - ...dk-v1-hpre-remove-redundant-comments.patch | 78 + 0003-uadk-add-secure-compilation-option.patch | 70 - ...-uadk-v1-fix-for-atomic-memory-order.patch | 34 + ...-replace-wd_lock-to-pthread_spinlock.patch | 271 ++ 0004-uadk_tool-fix-build-error.patch | 153 - ...dk-v1-fix-for-wd_lock-implementation.patch | 50 + 0005-v1-fix-build-error.patch | 134 - ...adk-fix-for-env-uninit-segment-fault.patch | 28 + 0006-wd_mempool-fix-build-error.patch | 43 - ..._zip_udrv-fix-the-wrong-literal-buff.patch | 62 + 0007-wd_rsa-fix-build-error.patch | 101 - 0008-test-fix-build-error.patch | 45 - ...ace-wd_spinlock-to-pthread_spin_lock.patch | 289 ++ ...sec-move-function-to-wd_digest_drv.h.patch | 201 - ...tools-add-segfault-locating-function.patch | 181 + ...fix-CE-driver-initialization-problem.patch | 71 + ...-partial_block-to-store-partial-data.patch | 149 - ...digest-add-wd_ctx_spin_lock-function.patch | 77 - 0011-uadk-v1-fix-for-sec_dump_bd.patch | 68 + ...ve-redundant-header-file-in-makefile.patch | 28 - 0012-uadk-v1-fix-for-wd_recv_sync-print.patch | 46 + ...dk-isa-ce-support-sm3-ce-instruction.patch | 1888 -------- ...pdate-the-symbol-table-for-libraries.patch | 29 + ...ontrol-range-of-environmemt-variable.patch | 33 - 0014-uadk-modify-address-check.patch | 174 + 0015-uadk-check-calloc-return-value.patch | 54 + ...fault-sched_type-for-instruction-tas.patch | 72 - ...ec-modify-minor-errors-in-hisi_sec.c.patch | 148 + 0016-uadk-digest-modify-spelling-errors.patch | 184 - ...si-fix-failed-to-init-drv-after-fork.patch | 152 - ...sa-fix-wd_rsa_common_uninit-re-entry.patch | 33 - 0019-wd_dh-Fix-wd_aead_uninit-re-entry.patch | 32 - 0020-wd_ecc-Fix-wd_ecc_uninit-re-entry.patch | 32 - ...gest-uninit-check-status-in-one-func.patch | 71 - ...aead-uninit-check-status-in-one-func.patch | 72 - ...e-install-wd_zlibwrapper.h-to-system.patch | 39 - 0024-conf-fix-includedir.patch | 33 - ...rt-for-SM4-CBC-and-CTR-modes-in-CE-i.patch | 1170 ----- ...rt-for-SM4-CFB-and-XTS-modes-in-CE-i.patch | 1348 ------ ...rt-for-SM4-ECB-algorithm-in-CE-instr.patch | 348 -- ...pher-isa_ce-support-SM4-cbc_cts-mode.patch | 337 -- ...ck-whether-the-platform-supports-SVE.patch | 49 - 0030-uadk-sched-fix-async-mode-ctx-id.patch | 34 - ...nitializes-ctx-resources-in-SVE-mode.patch | 169 - ...port-multi-buffer-calculation-for-sm.patch | 4092 ----------------- ...tool-fix-aead-performance-test-issue.patch | 38 - ...e-logic-for-counting-retransmissions.patch | 100 - ...rt-the-nosva-test-of-a-specified-dev.patch | 119 - ...ls-support-designated-device-testing.patch | 674 --- ...t-sm3-ce-benchmark-and-function-test.patch | 308 -- ...k_tool-support-sm4-ce-benchmark-test.patch | 167 - ...ort-sm3-md5-multibuff-benchmark-test.patch | 272 -- ...e-msg-pool-release-bug-of-async-zip-.patch | 467 -- ...eue-application-failure-from-multipl.patch | 641 --- ...k-need_debug-before-calling-WD_DEBUG.patch | 54 - 0043-uadk-remove-unused-ioctl-cmd.patch | 28 - 0044-uadk-v1-remove-dummy.patch | 247 - 0045-cipher-optimze-input-lengths-check.patch | 114 - ...prove-the-judgment-conditions-of-tag.patch | 54 - ...-sec-cipher-bd1-ci_gen-configuration.patch | 39 - 0048-uadk-fix-for-shmget-shmflag.patch | 43 - ...directly-assigning-values-to-structu.patch | 100 - ...util-optimize-for-wd_handle_msg_sync.patch | 61 - ...k-drv_hisi-optimize-qm-recv-function.patch | 115 - 0052-uadk-modify-uadk-static-compile.patch | 1307 ------ libwd-2.6.0.tar.gz | Bin 738576 -> 0 bytes libwd-2.7.0.tar.gz | Bin 0 -> 777480 bytes libwd.spec | 88 +- 71 files changed, 1663 insertions(+), 16272 deletions(-) delete mode 100644 0001-uadk-fix-build-issue-of-pthread_atfork.patch create mode 100644 0001-uadk_tool-benchmark-skip-sm4-benchmark-if-openssl-wi.patch delete mode 100644 0002-uadk-fix-static-build-error.patch create mode 100644 0002-uadk-v1-hpre-remove-redundant-comments.patch delete mode 100644 0003-uadk-add-secure-compilation-option.patch create mode 100644 0003-uadk-v1-fix-for-atomic-memory-order.patch create mode 100644 0004-uadk-replace-wd_lock-to-pthread_spinlock.patch delete mode 100644 0004-uadk_tool-fix-build-error.patch create mode 100644 0005-uadk-v1-fix-for-wd_lock-implementation.patch delete mode 100644 0005-v1-fix-build-error.patch create mode 100644 0006-uadk-fix-for-env-uninit-segment-fault.patch delete mode 100644 0006-wd_mempool-fix-build-error.patch create mode 100644 0007-uadk-v1-drv-hisi_zip_udrv-fix-the-wrong-literal-buff.patch delete mode 100644 0007-wd_rsa-fix-build-error.patch delete mode 100644 0008-test-fix-build-error.patch create mode 100644 0008-uadk-v1-replace-wd_spinlock-to-pthread_spin_lock.patch delete mode 100644 0009-uadk-sec-move-function-to-wd_digest_drv.h.patch create mode 100644 0009-uadk_tools-add-segfault-locating-function.patch create mode 100644 0010-uadk-bugfix-CE-driver-initialization-problem.patch delete mode 100644 0010-uadk-digest-add-partial_block-to-store-partial-data.patch delete mode 100644 0011-uadk-digest-add-wd_ctx_spin_lock-function.patch create mode 100644 0011-uadk-v1-fix-for-sec_dump_bd.patch delete mode 100644 0012-uadk-remove-redundant-header-file-in-makefile.patch create mode 100644 0012-uadk-v1-fix-for-wd_recv_sync-print.patch delete mode 100644 0013-uadk-isa-ce-support-sm3-ce-instruction.patch create mode 100644 0013-uadk-v1-update-the-symbol-table-for-libraries.patch delete mode 100644 0014-uadk-fix-control-range-of-environmemt-variable.patch create mode 100644 0014-uadk-modify-address-check.patch create mode 100644 0015-uadk-check-calloc-return-value.patch delete mode 100644 0015-uadk-util-use-default-sched_type-for-instruction-tas.patch create mode 100644 0016-drv-hisi-sec-modify-minor-errors-in-hisi_sec.c.patch delete mode 100644 0016-uadk-digest-modify-spelling-errors.patch delete mode 100644 0017-uadk-drv-hisi-fix-failed-to-init-drv-after-fork.patch delete mode 100644 0018-wd_rsa-fix-wd_rsa_common_uninit-re-entry.patch delete mode 100644 0019-wd_dh-Fix-wd_aead_uninit-re-entry.patch delete mode 100644 0020-wd_ecc-Fix-wd_ecc_uninit-re-entry.patch delete mode 100644 0021-wd_digest-uninit-check-status-in-one-func.patch delete mode 100644 0022-wd_aead-uninit-check-status-in-one-func.patch delete mode 100644 0023-makefile-install-wd_zlibwrapper.h-to-system.patch delete mode 100644 0024-conf-fix-includedir.patch delete mode 100644 0025-cipher-add-support-for-SM4-CBC-and-CTR-modes-in-CE-i.patch delete mode 100644 0026-cipher-add-support-for-SM4-CFB-and-XTS-modes-in-CE-i.patch delete mode 100644 0027-cipher-add-support-for-SM4-ECB-algorithm-in-CE-instr.patch delete mode 100644 0028-uadk-cipher-isa_ce-support-SM4-cbc_cts-mode.patch delete mode 100644 0029-uadk-wd_alg-check-whether-the-platform-supports-SVE.patch delete mode 100644 0030-uadk-sched-fix-async-mode-ctx-id.patch delete mode 100644 0031-uadk-initializes-ctx-resources-in-SVE-mode.patch delete mode 100644 0032-uadk-hash_mb-support-multi-buffer-calculation-for-sm.patch delete mode 100644 0033-uadk_tool-fix-aead-performance-test-issue.patch delete mode 100644 0034-uadk_tool-fix-the-logic-for-counting-retransmissions.patch delete mode 100644 0035-uadk-tools-support-the-nosva-test-of-a-specified-dev.patch delete mode 100644 0036-uadk-tools-support-designated-device-testing.patch delete mode 100644 0037-uadk_tool-support-sm3-ce-benchmark-and-function-test.patch delete mode 100644 0038-uadk_tool-support-sm4-ce-benchmark-test.patch delete mode 100644 0039-uadk_tool-support-sm3-md5-multibuff-benchmark-test.patch delete mode 100644 0040-uadk-tool-fix-the-msg-pool-release-bug-of-async-zip-.patch delete mode 100644 0041-uadk_tool-fix-queue-application-failure-from-multipl.patch delete mode 100644 0042-ecc-check-need_debug-before-calling-WD_DEBUG.patch delete mode 100644 0043-uadk-remove-unused-ioctl-cmd.patch delete mode 100644 0044-uadk-v1-remove-dummy.patch delete mode 100644 0045-cipher-optimze-input-lengths-check.patch delete mode 100644 0046-uadk-v1-improve-the-judgment-conditions-of-tag.patch delete mode 100644 0047-uadk-v1-fix-for-sec-cipher-bd1-ci_gen-configuration.patch delete mode 100644 0048-uadk-fix-for-shmget-shmflag.patch delete mode 100644 0049-sec-optimze-for-directly-assigning-values-to-structu.patch delete mode 100644 0050-util-optimize-for-wd_handle_msg_sync.patch delete mode 100644 0051-uadk-drv_hisi-optimize-qm-recv-function.patch delete mode 100644 0052-uadk-modify-uadk-static-compile.patch delete mode 100644 libwd-2.6.0.tar.gz create mode 100644 libwd-2.7.0.tar.gz diff --git a/0001-uadk-fix-build-issue-of-pthread_atfork.patch b/0001-uadk-fix-build-issue-of-pthread_atfork.patch deleted file mode 100644 index 5e1931d..0000000 --- a/0001-uadk-fix-build-issue-of-pthread_atfork.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 7ef31a9e64706d8312f7137b771c47e1658d4f6d Mon Sep 17 00:00:00 2001 -From: Zhangfei Gao -Date: Wed, 10 Jan 2024 10:24:19 +0000 -Subject: [PATCH 1/8] uadk: fix build issue of pthread_atfork - -In ubuntu 16.04 and 18.04, build uadk fail -log: -/bin/bash ../libtool --tag=CC --mode=link aarch64-linux-gnu-gcc -Wall -O0 -Werror -fno-strict-aliasing -I../include -I.. -g -O2 -Wl,-rpath,'/usr/local/lib' -pthread -o wd_mempool_test wd_mempool_test.o -L../.libs -lwd -ldl -lwd_crypto -lnuma -libtool: link: aarch64-linux-gnu-gcc -Wall -O0 -Werror -fno-strict-aliasing -I../include -I.. -g -O2 -Wl,-rpath -Wl,/usr/local/lib -pthread -o .libs/wd_mempool_test wd_mempool_test.o -L../.libs /mnt/uadk/.libs/libwd.so -ldl /mnt/uadk/.libs/libwd_crypto.so -lnuma -lpthread -/usr/bin/ld: .libs/wd_mempool_test: hidden symbol `pthread_atfork' in /usr/lib/aarch64-linux-gnu/libpthread_nonshared.a(pthread_atfork.oS) is referenced by DSO - -Reason is pthread_atfork in wd_xxx.c, missing -lpthread. - -Signed-off-by: Zhangfei Gao ---- - Makefile.am | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Makefile.am b/Makefile.am -index d81e8cc..a369b7e 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -114,11 +114,11 @@ libwd_la_LDFLAGS=$(UADK_VERSION) $(UADK_WD_SYMBOL) $(UADK_V1_SYMBOL) - libwd_la_LIBADD= -ldl -lnuma - - libwd_comp_la_LIBADD= -lwd -ldl -lnuma --libwd_comp_la_LDFLAGS=$(UADK_VERSION) $(UADK_COMP_SYMBOL) -+libwd_comp_la_LDFLAGS=$(UADK_VERSION) $(UADK_COMP_SYMBOL) -lpthread - libwd_comp_la_DEPENDENCIES= libwd.la - - libwd_crypto_la_LIBADD= -lwd -ldl -lnuma --libwd_crypto_la_LDFLAGS=$(UADK_VERSION) $(UADK_CRYPTO_SYMBOL) -+libwd_crypto_la_LDFLAGS=$(UADK_VERSION) $(UADK_CRYPTO_SYMBOL) -lpthread - libwd_crypto_la_DEPENDENCIES= libwd.la - - libhisi_zip_la_LIBADD= -lwd -ldl -lwd_comp --- -2.25.1 - diff --git a/0001-uadk_tool-benchmark-skip-sm4-benchmark-if-openssl-wi.patch b/0001-uadk_tool-benchmark-skip-sm4-benchmark-if-openssl-wi.patch new file mode 100644 index 0000000..14c7423 --- /dev/null +++ b/0001-uadk_tool-benchmark-skip-sm4-benchmark-if-openssl-wi.patch @@ -0,0 +1,52 @@ +From 92eed6318fc0951e71c2dfc3b72826bd7e1eb4c8 Mon Sep 17 00:00:00 2001 +From: Rongqi Sun +Date: Thu, 13 Jun 2024 07:07:02 +0000 +Subject: [PATCH 01/16] uadk_tool/benchmark: skip sm4 benchmark if openssl with + 'no-sm4' + +When openssl is with 'no-sm4', which cause macro 'OPENSSL_NO_SM4' is defined. So sm4 benchmark should check the macro too, otherwise build would be failed. + +Signed-off-by: Rongqi Sun +--- + uadk_tool/benchmark/sec_soft_benchmark.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/uadk_tool/benchmark/sec_soft_benchmark.c b/uadk_tool/benchmark/sec_soft_benchmark.c +index 3a38cbd..84dab63 100644 +--- a/uadk_tool/benchmark/sec_soft_benchmark.c ++++ b/uadk_tool/benchmark/sec_soft_benchmark.c +@@ -280,6 +280,7 @@ static int sec_soft_param_parse(soft_thread *tddata, struct acc_option *options) + mode = WD_CIPHER_CBC; + tddata->evp_cipher = EVP_des_ede3_cbc(); + break; ++#ifndef OPENSSL_NO_SM4 + case SM4_128_ECB: + keysize = 16; + mode = WD_CIPHER_ECB; +@@ -309,6 +310,7 @@ static int sec_soft_param_parse(soft_thread *tddata, struct acc_option *options) + keysize = 16; + mode = WD_CIPHER_XTS; + break; ++#endif + case AES_128_CCM: + keysize = 16; + mode = WD_CIPHER_CCM; +@@ -354,6 +356,7 @@ static int sec_soft_param_parse(soft_thread *tddata, struct acc_option *options) + mode = WD_CIPHER_CBC; + tddata->evp_cipher = EVP_aes_256_cbc(); + break; ++#ifndef OPENSSL_NO_SM4 + case SM4_128_CCM: + keysize = 16; + mode = WD_CIPHER_CCM; +@@ -362,6 +365,7 @@ static int sec_soft_param_parse(soft_thread *tddata, struct acc_option *options) + keysize = 16; + mode = WD_CIPHER_GCM; + break; ++#endif + case SM3_ALG: // digest mode is optype + keysize = 4; + mode = optype; +-- +2.25.1 + diff --git a/0002-uadk-fix-static-build-error.patch b/0002-uadk-fix-static-build-error.patch deleted file mode 100644 index e455b9e..0000000 --- a/0002-uadk-fix-static-build-error.patch +++ /dev/null @@ -1,36 +0,0 @@ -From e50c7b8ab28696c904afa86741a4b6951c90b0b3 Mon Sep 17 00:00:00 2001 -From: Zhangfei Gao -Date: Wed, 10 Jan 2024 13:33:18 +0000 -Subject: [PATCH 2/8] uadk: fix static build error - -static build fail on both ubuntu and openEuler -/usr/bin/ld: ../.libs/libwd_comp.a(wd_comp.o): relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `stderr@@GLIBC_2.17' which may bind externally can not be used when making a shared object; recompile with -fPIC -/usr/bin/ld: ../.libs/libwd_comp.a(wd_comp.o)(.text+0x84): unresolvable R_AARCH64_ADR_PREL_PG_HI21 relocation against symbol `stderr@@GLIBC_2.17' - -Solved by adding -fPIC - -The -fPIC option in GCC stands for "Position Independent Code." -When this option is used, the generated machine code is not dependent -on being located at a specific address in order to work - -Signed-off-by: Zhangfei Gao ---- - Makefile.am | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Makefile.am b/Makefile.am -index a369b7e..51691cb 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -86,7 +86,7 @@ libhisi_sec_la_SOURCES=drv/hisi_sec.c drv/hisi_qm_udrv.c \ - libhisi_hpre_la_SOURCES=drv/hisi_hpre.c drv/hisi_qm_udrv.c \ - hisi_qm_udrv.h wd_hpre_drv.h - if WD_STATIC_DRV --AM_CFLAGS += -DWD_STATIC_DRV -+AM_CFLAGS += -DWD_STATIC_DRV -fPIC - AM_CFLAGS += -DWD_NO_LOG - - libwd_la_LIBADD = $(libwd_la_OBJECTS) -ldl -lnuma --- -2.25.1 - diff --git a/0002-uadk-v1-hpre-remove-redundant-comments.patch b/0002-uadk-v1-hpre-remove-redundant-comments.patch new file mode 100644 index 0000000..53588c9 --- /dev/null +++ b/0002-uadk-v1-hpre-remove-redundant-comments.patch @@ -0,0 +1,78 @@ +From 1e0bacb328334ebf0f0bc9cf951a11b971f3ab03 Mon Sep 17 00:00:00 2001 +From: Zhiqi Song +Date: Tue, 23 Jul 2024 19:37:19 +0800 +Subject: [PATCH 02/16] uadk/v1/hpre: remove redundant comments + +Remove redundant comments, as the API name clearly +describes the function. And fix code wrap. + +Signed-off-by: Zhiqi Song +Signed-off-by: Qi Tao +--- + v1/drv/hisi_hpre_udrv.c | 14 +++----------- + 1 file changed, 3 insertions(+), 11 deletions(-) + +diff --git a/v1/drv/hisi_hpre_udrv.c b/v1/drv/hisi_hpre_udrv.c +index 84ec710..05518ab 100644 +--- a/v1/drv/hisi_hpre_udrv.c ++++ b/v1/drv/hisi_hpre_udrv.c +@@ -490,12 +490,10 @@ int qm_fill_rsa_sqe(void *message, struct qm_queue_info *info, __u16 i) + return -WD_EINVAL; + hw_msg->task_len1 = msg->key_bytes / BYTE_BITS - 0x1; + +- /* prepare rsa key */ + ret = qm_rsa_prepare_key(msg, q, hw_msg, &va, &size); + if (unlikely(ret)) + return ret; + +- /* prepare in/out put */ + ret = qm_rsa_prepare_iot(msg, q, hw_msg); + if (unlikely(ret)) { + rsa_key_unmap(msg, q, hw_msg, va, size); +@@ -576,13 +574,11 @@ static int fill_dh_g_param(struct wd_queue *q, struct wcrypto_dh_msg *msg, + int ret; + + ret = qm_crypto_bin_to_hpre_bin((char *)msg->g, +- (const char *)msg->g, msg->key_bytes, +- msg->gbytes, "dh g"); ++ (const char *)msg->g, msg->key_bytes, msg->gbytes, "dh g"); + if (unlikely(ret)) + return ret; + +- phy = (uintptr_t)drv_iova_map(q, (void *)msg->g, +- msg->key_bytes); ++ phy = (uintptr_t)drv_iova_map(q, (void *)msg->g, msg->key_bytes); + if (unlikely(!phy)) { + WD_ERR("Get dh g parameter dma address fail!\n"); + return -WD_ENOMEM; +@@ -1338,8 +1334,7 @@ static int qm_ecc_prepare_in(struct wcrypto_ecc_msg *msg, + hw_msg->bd_rsv2 = 1; /* fall through */ + case WCRYPTO_ECXDH_GEN_KEY: /* fall through */ + case WCRYPTO_SM2_KG: +- ret = ecc_prepare_dh_gen_in((void *)in, +- data); ++ ret = ecc_prepare_dh_gen_in((void *)in, data); + break; + case WCRYPTO_ECXDH_COMPUTE_KEY: + /* +@@ -1667,17 +1662,14 @@ static int qm_fill_ecc_sqe_general(void *message, struct qm_queue_info *info, + memset(hw_msg, 0, sizeof(struct hisi_hpre_sqe)); + hw_msg->task_len1 = ((msg->key_bytes) >> BYTE_BITS_SHIFT) - 0x1; + +- /* prepare algorithm */ + ret = qm_ecc_prepare_alg(hw_msg, msg); + if (unlikely(ret)) + return ret; + +- /* prepare key */ + ret = qm_ecc_prepare_key(msg, q, hw_msg, &va, &size); + if (unlikely(ret)) + return ret; + +- /* prepare in/out put */ + ret = qm_ecc_prepare_iot(msg, q, hw_msg); + if (unlikely(ret)) + goto map_key_fail; +-- +2.25.1 + diff --git a/0003-uadk-add-secure-compilation-option.patch b/0003-uadk-add-secure-compilation-option.patch deleted file mode 100644 index 71c2903..0000000 --- a/0003-uadk-add-secure-compilation-option.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 4cd0b3e82205767ac151835e69736c61aca4eda8 Mon Sep 17 00:00:00 2001 -From: Qi Tao -Date: Thu, 18 Jan 2024 21:07:26 +0800 -Subject: [PATCH 3/8] uadk: add secure compilation option -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Add PIE, PIC, BIND_NOW, SP, NO Rpath/RunPath, FS, -Ftrapv and Strip compilation options. - -PIC(-fPIC): - Generate position-Independent-Code and andomly - load dynamic libraries. -PIE(-fPIE -pie): - Generate location-independent executables,which - reduces the probability of fixed address attacks - and buffer overflow attacks. -BIND_NOW(-Wl,-z,relro,-z,now): - GOT table redirects all read-only,which defends - against ret2plt attacks. -SP(-fstack-protector-strong/all): - Determine whether an overflow attack occurs. -Strip(-Wl,-s): - Deleting symbol tables defends against hacker - attacks and reduces the file size. -FS(-D_FORTIFY_SOURCE=2 -O2): - Provides access checks for fixed-size buffers - at compile time and at run time. -Ftrapv(-ftrapv): - Detects integer overflow. -NO Rpath/RunPath(hardcode_into_libs=no): - Eliminates dynamic library search paths, - which defense against attacks by replacing - dynamic libraries with the same name. - -Signed-off-by: Qi Tao ---- - Makefile.am | 2 ++ - configure.ac | 1 + - 2 files changed, 3 insertions(+) - -diff --git a/Makefile.am b/Makefile.am -index 51691cb..64cfa44 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -1,6 +1,8 @@ - ACLOCAL_AMFLAGS = -I m4 -I./include - AUTOMAKE_OPTIONS = foreign subdir-objects - AM_CFLAGS=-Wall -Werror -fno-strict-aliasing -I$(top_srcdir)/include -+AM_CFLAGS+=-fPIC -fPIE -pie -fstack-protector-strong -D_FORTIFY_SOURCE=2 \ -+ -O2 -ftrapv -Wl,-z,relro,-z,now -Wl,-s - CLEANFILES = - - if WITH_LOG_FILE -diff --git a/configure.ac b/configure.ac -index 2692175..b198417 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -18,6 +18,7 @@ AM_PROG_AR - AC_PROG_LIBTOOL - AM_PROG_LIBTOOL - LT_INIT -+AC_SUBST([hardcode_into_libs], [no]) - AM_PROG_CC_C_O - - AC_ARG_ENABLE([debug-log], --- -2.25.1 - diff --git a/0003-uadk-v1-fix-for-atomic-memory-order.patch b/0003-uadk-v1-fix-for-atomic-memory-order.patch new file mode 100644 index 0000000..af2855a --- /dev/null +++ b/0003-uadk-v1-fix-for-atomic-memory-order.patch @@ -0,0 +1,34 @@ +From 7b1afc72dc9ffe79d60dad4c395b0f7c7010ec22 Mon Sep 17 00:00:00 2001 +From: Wenkai Lin +Date: Tue, 23 Jul 2024 19:39:06 +0800 +Subject: [PATCH 03/16] uadk/v1: fix for atomic memory order + +If the memory order of the atomic operation is used improperly, +an exception occurs in multiple threads. +The load operation should use __ATOMIC_ACQUIRE, all memory access +operations of the current thread cannot be reordered before this +instruction, which is visible to the store operation (release) +of other threads. + +Signed-off-by: Wenkai Lin +Signed-off-by: Qi Tao +--- + v1/wd_util.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/v1/wd_util.c b/v1/wd_util.c +index d441805..f44da99 100644 +--- a/v1/wd_util.c ++++ b/v1/wd_util.c +@@ -25,7 +25,7 @@ + void wd_spinlock(struct wd_lock *lock) + { + while (__atomic_test_and_set(&lock->lock, __ATOMIC_ACQUIRE)) +- while (__atomic_load_n(&lock->lock, __ATOMIC_RELAXED)) ++ while (__atomic_load_n(&lock->lock, __ATOMIC_ACQUIRE)) + ; + } + +-- +2.25.1 + diff --git a/0004-uadk-replace-wd_lock-to-pthread_spinlock.patch b/0004-uadk-replace-wd_lock-to-pthread_spinlock.patch new file mode 100644 index 0000000..c9e677b --- /dev/null +++ b/0004-uadk-replace-wd_lock-to-pthread_spinlock.patch @@ -0,0 +1,271 @@ +From a9ed7daa2d67398d0aa785601bca2a5829550c14 Mon Sep 17 00:00:00 2001 +From: Wenkai Lin +Date: Tue, 23 Jul 2024 19:40:29 +0800 +Subject: [PATCH 04/16] uadk: replace wd_lock to pthread_spinlock + +pthread_spinlock was proved to be more reliable than +self-implemented lock, so we replaced wd_lock. + +Signed-off-by: Wenkai Lin +Signed-off-by: Qi Tao +--- + wd_mempool.c | 74 +++++++++++++++++++++++++--------------------------- + 1 file changed, 35 insertions(+), 39 deletions(-) + +diff --git a/wd_mempool.c b/wd_mempool.c +index 2d21a0d..22db843 100644 +--- a/wd_mempool.c ++++ b/wd_mempool.c +@@ -36,21 +36,6 @@ + #define WD_HUNDRED 100 + #define PAGE_SIZE_OFFSET 10 + +-struct wd_lock { +- __u32 lock; +-}; +- +-static inline void wd_spinlock(struct wd_lock *lock) +-{ +- while (__atomic_test_and_set(&lock->lock, __ATOMIC_ACQUIRE)) +- while (__atomic_load_n(&lock->lock, __ATOMIC_RELAXED)); +-} +- +-static inline void wd_unspinlock(struct wd_lock *lock) +-{ +- __atomic_clear(&lock->lock, __ATOMIC_RELEASE); +-} +- + struct wd_ref { + __u32 ref; + }; +@@ -127,7 +112,7 @@ struct blkpool { + struct mempool *mp; + struct memzone_list mz_list; + unsigned long free_block_num; +- struct wd_lock lock; ++ pthread_spinlock_t lock; + struct wd_ref ref; + }; + +@@ -161,8 +146,7 @@ struct mempool { + size_t size; + size_t real_size; + struct bitmap *bitmap; +- /* use self-define lock to avoid to use pthread lib in libwd */ +- struct wd_lock lock; ++ pthread_spinlock_t lock; + struct wd_ref ref; + struct sys_hugepage_list hp_list; + unsigned long free_blk_num; +@@ -314,16 +298,16 @@ void *wd_block_alloc(handle_t blkpool) + return NULL; + } + +- wd_spinlock(&bp->lock); ++ pthread_spin_lock(&bp->lock); + if (bp->top > 0) { + bp->top--; + bp->free_block_num--; + p = bp->blk_elem[bp->top]; +- wd_unspinlock(&bp->lock); ++ pthread_spin_unlock(&bp->lock); + return p; + } + +- wd_unspinlock(&bp->lock); ++ pthread_spin_unlock(&bp->lock); + wd_atomic_sub(&bp->ref, 1); + + return NULL; +@@ -336,17 +320,17 @@ void wd_block_free(handle_t blkpool, void *addr) + if (!bp || !addr) + return; + +- wd_spinlock(&bp->lock); ++ pthread_spin_lock(&bp->lock); + if (bp->top < bp->depth) { + bp->blk_elem[bp->top] = addr; + bp->top++; + bp->free_block_num++; +- wd_unspinlock(&bp->lock); ++ pthread_spin_unlock(&bp->lock); + wd_atomic_sub(&bp->ref, 1); + return; + } + +- wd_unspinlock(&bp->lock); ++ pthread_spin_unlock(&bp->lock); + } + + static int alloc_memzone(struct blkpool *bp, void *addr, size_t blk_num, +@@ -392,9 +376,9 @@ static void free_mem_to_mempool(struct blkpool *bp) + { + struct mempool *mp = bp->mp; + +- wd_spinlock(&mp->lock); ++ pthread_spin_lock(&mp->lock); + free_mem_to_mempool_nolock(bp); +- wd_unspinlock(&mp->lock); ++ pthread_spin_unlock(&mp->lock); + } + + static int check_mempool_real_size(struct mempool *mp, struct blkpool *bp) +@@ -455,7 +439,7 @@ static int alloc_mem_multi_in_one(struct mempool *mp, struct blkpool *bp) + int ret = -WD_ENOMEM; + int pos = 0; + +- wd_spinlock(&mp->lock); ++ pthread_spin_lock(&mp->lock); + if (check_mempool_real_size(mp, bp)) + goto err_check_size; + +@@ -471,13 +455,13 @@ static int alloc_mem_multi_in_one(struct mempool *mp, struct blkpool *bp) + pos = ret; + } + +- wd_unspinlock(&mp->lock); ++ pthread_spin_unlock(&mp->lock); + return 0; + + err_free_memzone: + free_mem_to_mempool_nolock(bp); + err_check_size: +- wd_unspinlock(&mp->lock); ++ pthread_spin_unlock(&mp->lock); + return ret; + } + +@@ -493,7 +477,7 @@ static int alloc_mem_one_need_multi(struct mempool *mp, struct blkpool *bp) + int ret = -WD_ENOMEM; + int pos = 0; + +- wd_spinlock(&mp->lock); ++ pthread_spin_lock(&mp->lock); + if (check_mempool_real_size(mp, bp)) + goto err_check_size; + +@@ -509,13 +493,13 @@ static int alloc_mem_one_need_multi(struct mempool *mp, struct blkpool *bp) + mp->real_size -= mp->blk_size * mem_combined_num; + } + +- wd_unspinlock(&mp->lock); ++ pthread_spin_unlock(&mp->lock); + return 0; + + err_free_memzone: + free_mem_to_mempool_nolock(bp); + err_check_size: +- wd_unspinlock(&mp->lock); ++ pthread_spin_unlock(&mp->lock); + return ret; + } + +@@ -576,10 +560,13 @@ handle_t wd_blockpool_create(handle_t mempool, size_t block_size, + bp->blk_size = block_size; + bp->free_block_num = block_num; + bp->mp = mp; ++ ret = pthread_spin_init(&bp->lock, PTHREAD_PROCESS_PRIVATE); ++ if (ret < 0) ++ goto err_free_bp; + + ret = alloc_mem_from_mempool(mp, bp); + if (ret < 0) +- goto err_free_bp; ++ goto err_uninit_lock; + + ret = init_blkpool_elem(bp); + if (ret < 0) +@@ -590,6 +577,8 @@ handle_t wd_blockpool_create(handle_t mempool, size_t block_size, + + err_free_mem: + free_mem_to_mempool(bp); ++err_uninit_lock: ++ pthread_spin_destroy(&bp->lock); + err_free_bp: + free(bp); + err_sub_ref: +@@ -613,6 +602,7 @@ void wd_blockpool_destroy(handle_t blkpool) + sched_yield(); + + free_mem_to_mempool(bp); ++ pthread_spin_destroy(&bp->lock); + free(bp->blk_elem); + free(bp); + wd_atomic_sub(&mp->ref, 1); +@@ -919,10 +909,13 @@ handle_t wd_mempool_create(size_t size, int node) + mp->node = node; + mp->size = tmp; + mp->blk_size = WD_MEMPOOL_BLOCK_SIZE; ++ ret = pthread_spin_init(&mp->lock, PTHREAD_PROCESS_PRIVATE); ++ if (ret < 0) ++ goto free_pool; + + ret = alloc_mem_from_hugepage(mp); + if (ret < 0) +- goto free_pool; ++ goto uninit_lock; + + ret = init_mempool(mp); + if (ret < 0) +@@ -933,6 +926,8 @@ handle_t wd_mempool_create(size_t size, int node) + + free_pool_memory: + free_hugepage_mem(mp); ++uninit_lock: ++ pthread_spin_destroy(&mp->lock); + free_pool: + free(mp); + return (handle_t)(-WD_ENOMEM); +@@ -951,6 +946,7 @@ void wd_mempool_destroy(handle_t mempool) + while(wd_atomic_load(&mp->ref)); + uninit_mempool(mp); + free_hugepage_mem(mp); ++ pthread_spin_destroy(&mp->lock); + free(mp); + } + +@@ -968,7 +964,7 @@ void wd_mempool_stats(handle_t mempool, struct wd_mempool_stats *stats) + return; + } + +- wd_spinlock(&mp->lock); ++ pthread_spin_lock(&mp->lock); + + stats->page_type = mp->page_type; + stats->page_size = mp->page_size; +@@ -979,7 +975,7 @@ void wd_mempool_stats(handle_t mempool, struct wd_mempool_stats *stats) + stats->blk_usage_rate = (stats->blk_num - mp->free_blk_num) / + stats->blk_num * WD_HUNDRED; + +- wd_unspinlock(&mp->lock); ++ pthread_spin_unlock(&mp->lock); + } + + void wd_blockpool_stats(handle_t blkpool, struct wd_blockpool_stats *stats) +@@ -993,7 +989,7 @@ void wd_blockpool_stats(handle_t blkpool, struct wd_blockpool_stats *stats) + return; + } + +- wd_spinlock(&bp->lock); ++ pthread_spin_lock(&bp->lock); + + stats->block_size = bp->blk_size; + stats->block_num = bp->depth; +@@ -1006,12 +1002,12 @@ void wd_blockpool_stats(handle_t blkpool, struct wd_blockpool_stats *stats) + + if (!size) { + WD_ERR("invalid: blkpool size is zero!\n"); +- wd_unspinlock(&bp->lock); ++ pthread_spin_unlock(&bp->lock); + return; + } + + stats->mem_waste_rate = (size - bp->blk_size * bp->depth) / + size * WD_HUNDRED; + +- wd_unspinlock(&bp->lock); ++ pthread_spin_unlock(&bp->lock); + } +-- +2.25.1 + diff --git a/0004-uadk_tool-fix-build-error.patch b/0004-uadk_tool-fix-build-error.patch deleted file mode 100644 index 7214660..0000000 --- a/0004-uadk_tool-fix-build-error.patch +++ /dev/null @@ -1,153 +0,0 @@ -From 797031c0562786591f9837650c1521573dee356c Mon Sep 17 00:00:00 2001 -From: Zhangfei Gao -Date: Wed, 24 Jan 2024 04:00:50 +0000 -Subject: [PATCH 4/8] uadk_tool: fix build error - -Fix build errors, like -"overlapping comparisons always evaluate to true", -"used uninitialized" etc. - -Signed-off-by: Zhangfei Gao -Signed-off-by: 15859157387 <977713017@qq.com> ---- - uadk_tool/benchmark/hpre_uadk_benchmark.c | 4 ++-- - uadk_tool/benchmark/hpre_wd_benchmark.c | 4 ++-- - uadk_tool/benchmark/sec_uadk_benchmark.c | 8 ++++---- - uadk_tool/benchmark/sec_wd_benchmark.c | 8 ++++---- - uadk_tool/benchmark/uadk_benchmark.c | 12 ------------ - uadk_tool/benchmark/uadk_benchmark.h | 1 - - uadk_tool/test/test_sec.c | 1 - - 7 files changed, 12 insertions(+), 26 deletions(-) - -diff --git a/uadk_tool/benchmark/hpre_uadk_benchmark.c b/uadk_tool/benchmark/hpre_uadk_benchmark.c -index 028e102..0cbbdf2 100644 ---- a/uadk_tool/benchmark/hpre_uadk_benchmark.c -+++ b/uadk_tool/benchmark/hpre_uadk_benchmark.c -@@ -2130,7 +2130,7 @@ static void *ecc_uadk_sync_run(void *arg) - memset(&req, 0, sizeof(req)); - - memset(&setup, 0, sizeof(setup)); -- if (subtype != X448_TYPE || subtype != X25519_TYPE) { -+ if (subtype != X448_TYPE && subtype != X25519_TYPE) { - ret = get_ecc_curve(&setup, cid); - if (ret) - return NULL; -@@ -2289,7 +2289,7 @@ static void *ecc_uadk_async_run(void *arg) - memset(&req, 0, sizeof(req)); - - memset(&setup, 0, sizeof(setup)); -- if (subtype != X448_TYPE || subtype != X25519_TYPE) { -+ if (subtype != X448_TYPE && subtype != X25519_TYPE) { - ret = get_ecc_curve(&setup, cid); - if (ret) - return NULL; -diff --git a/uadk_tool/benchmark/hpre_wd_benchmark.c b/uadk_tool/benchmark/hpre_wd_benchmark.c -index 67d57c6..2873ffd 100644 ---- a/uadk_tool/benchmark/hpre_wd_benchmark.c -+++ b/uadk_tool/benchmark/hpre_wd_benchmark.c -@@ -2090,7 +2090,7 @@ static void *ecc_wd_sync_run(void *arg) - queue = g_thread_queue.bd_res[pdata->td_id].queue; - - memset(&setup, 0, sizeof(setup)); -- if (subtype != X448_TYPE || subtype != X25519_TYPE) { -+ if (subtype != X448_TYPE && subtype != X25519_TYPE) { - ret = get_ecc_curve(&setup, cid); - if (ret) - return NULL; -@@ -2248,7 +2248,7 @@ static void *ecc_wd_async_run(void *arg) - queue = g_thread_queue.bd_res[pdata->td_id].queue; - - memset(&setup, 0, sizeof(setup)); -- if (subtype != X448_TYPE || subtype != X25519_TYPE) { -+ if (subtype != X448_TYPE && subtype != X25519_TYPE) { - ret = get_ecc_curve(&setup, cid); - if (ret) - return NULL; -diff --git a/uadk_tool/benchmark/sec_uadk_benchmark.c b/uadk_tool/benchmark/sec_uadk_benchmark.c -index f1ae18b..c99ae89 100644 ---- a/uadk_tool/benchmark/sec_uadk_benchmark.c -+++ b/uadk_tool/benchmark/sec_uadk_benchmark.c -@@ -148,10 +148,10 @@ static int sec_uadk_param_parse(thread_data *tddata, struct acc_option *options) - bool is_union = false; - u8 keysize = 0; - u8 ivsize = 0; -- u8 dmode; -- u8 dalg; -- u8 mode; -- u8 alg; -+ u8 dmode = 0; -+ u8 dalg = 0; -+ u8 mode = 0; -+ u8 alg = 0; - - switch(algtype) { - case AES_128_ECB: -diff --git a/uadk_tool/benchmark/sec_wd_benchmark.c b/uadk_tool/benchmark/sec_wd_benchmark.c -index 6e5c8a0..aa03db8 100644 ---- a/uadk_tool/benchmark/sec_wd_benchmark.c -+++ b/uadk_tool/benchmark/sec_wd_benchmark.c -@@ -214,10 +214,10 @@ static int sec_wd_param_parse(thread_data *tddata, struct acc_option *options) - bool is_union = false; - u8 keysize = 0; - u8 ivsize = 0; -- u8 dmode; -- u8 dalg; -- u8 mode; -- u8 alg; -+ u8 dmode = 0; -+ u8 dalg = 0; -+ u8 mode = 0; -+ u8 alg = 0; - - switch(algtype) { - case AES_128_ECB: -diff --git a/uadk_tool/benchmark/uadk_benchmark.c b/uadk_tool/benchmark/uadk_benchmark.c -index 6d5d009..cf3a93c 100644 ---- a/uadk_tool/benchmark/uadk_benchmark.c -+++ b/uadk_tool/benchmark/uadk_benchmark.c -@@ -364,18 +364,6 @@ int get_pid_cpu_time(u32 *ptime) - return 0; - } - --void mdelay(u32 ms) --{ -- int clock_tcy = 2600000000; // 2.6Ghz CPU; -- int i; -- -- while(ms) { -- i++; -- if (i == clock_tcy) -- ms--; -- } --} -- - static void alarm_end(int sig) - { - if (sig == SIGALRM) { -diff --git a/uadk_tool/benchmark/uadk_benchmark.h b/uadk_tool/benchmark/uadk_benchmark.h -index 1cce63d..1752948 100644 ---- a/uadk_tool/benchmark/uadk_benchmark.h -+++ b/uadk_tool/benchmark/uadk_benchmark.h -@@ -198,7 +198,6 @@ enum test_alg { - ALG_MAX, - }; - --extern void mdelay(u32 ms); - extern int get_pid_cpu_time(u32 *ptime); - extern void cal_perfermance_data(struct acc_option *option, u32 sttime); - extern void time_start(u32 seconds); -diff --git a/uadk_tool/test/test_sec.c b/uadk_tool/test/test_sec.c -index b00a933..16feaf0 100644 ---- a/uadk_tool/test/test_sec.c -+++ b/uadk_tool/test/test_sec.c -@@ -60,7 +60,6 @@ static unsigned int g_ctxnum; - static unsigned int g_data_fmt = WD_FLAT_BUF; - static unsigned int g_sgl_num = 0; - static unsigned int g_init; --static pthread_spinlock_t lock = 0; - - static struct hash_testvec g_long_hash_tv; - --- -2.25.1 - diff --git a/0005-uadk-v1-fix-for-wd_lock-implementation.patch b/0005-uadk-v1-fix-for-wd_lock-implementation.patch new file mode 100644 index 0000000..c0676e5 --- /dev/null +++ b/0005-uadk-v1-fix-for-wd_lock-implementation.patch @@ -0,0 +1,50 @@ +From ab4b2b3beb56847ad42e07abd9f5834d36034448 Mon Sep 17 00:00:00 2001 +From: Wenkai Lin +Date: Tue, 23 Jul 2024 19:42:35 +0800 +Subject: [PATCH 05/16] uadk/v1: fix for wd_lock implementation + +struct wd_lock has synchronization problems, therefore, +modify wd_spinlock by referring to the implementation +of pthread_spin_lock. + +Signed-off-by: Wenkai Lin +Signed-off-by: Qi Tao +--- + v1/wd_util.c | 17 +++++++++++++---- + 1 file changed, 13 insertions(+), 4 deletions(-) + +diff --git a/v1/wd_util.c b/v1/wd_util.c +index f44da99..29f6579 100644 +--- a/v1/wd_util.c ++++ b/v1/wd_util.c +@@ -24,14 +24,23 @@ + + void wd_spinlock(struct wd_lock *lock) + { +- while (__atomic_test_and_set(&lock->lock, __ATOMIC_ACQUIRE)) +- while (__atomic_load_n(&lock->lock, __ATOMIC_ACQUIRE)) +- ; ++ int val = 0; ++ ++ if (__atomic_compare_exchange_n(&lock->lock, &val, 1, 1, ++ __ATOMIC_ACQUIRE, __ATOMIC_RELAXED)) ++ return; ++ ++ do { ++ do { ++ val = __atomic_load_n(&lock->lock, __ATOMIC_RELAXED); ++ } while (val != 0); ++ } while (!__atomic_compare_exchange_n(&lock->lock, &val, 1, 1, ++ __ATOMIC_ACQUIRE, __ATOMIC_RELAXED)); + } + + void wd_unspinlock(struct wd_lock *lock) + { +- __atomic_clear(&lock->lock, __ATOMIC_RELEASE); ++ __atomic_store_n(&lock->lock, 0, __ATOMIC_RELEASE); + } + + void *drv_iova_map(struct wd_queue *q, void *va, size_t sz) +-- +2.25.1 + diff --git a/0005-v1-fix-build-error.patch b/0005-v1-fix-build-error.patch deleted file mode 100644 index 50db7ea..0000000 --- a/0005-v1-fix-build-error.patch +++ /dev/null @@ -1,134 +0,0 @@ -From cb909f390823ec007cfe62aae9cf0dc750c0de2b Mon Sep 17 00:00:00 2001 -From: Zhangfei Gao -Date: Wed, 24 Jan 2024 04:06:04 +0000 -Subject: [PATCH 5/8] v1: fix build error - -Fix build errors, like -"'struct wcrypto_rsa_prikey1' not at the end of a struct or class", -"__TEST_WD_MEM_H not match" etc. - -Signed-off-by: Zhangfei Gao -Signed-off-by: 15859157387 <977713017@qq.com> ---- - v1/test/hisi_zip_test_sgl/zip_alg_sgl.h | 2 +- - v1/test/test_mm/test_wd_mem.c | 5 ----- - v1/test/test_mm/test_wd_mem.h | 2 +- - v1/wd_rsa.c | 18 ++++++++++-------- - 4 files changed, 12 insertions(+), 15 deletions(-) - -diff --git a/v1/test/hisi_zip_test_sgl/zip_alg_sgl.h b/v1/test/hisi_zip_test_sgl/zip_alg_sgl.h -index 0baa35b..1e35069 100644 ---- a/v1/test/hisi_zip_test_sgl/zip_alg_sgl.h -+++ b/v1/test/hisi_zip_test_sgl/zip_alg_sgl.h -@@ -14,7 +14,7 @@ - * limitations under the License. - */ - --#ifndef __WD_ZIP_ALG_SGL__H__ -+#ifndef __WD_ZIP_ALG_SGL_H__ - #define __WD_ZIP_ALG_SGL_H__ - - #include -diff --git a/v1/test/test_mm/test_wd_mem.c b/v1/test/test_mm/test_wd_mem.c -index ba873f9..09824b9 100644 ---- a/v1/test/test_mm/test_wd_mem.c -+++ b/v1/test/test_mm/test_wd_mem.c -@@ -75,11 +75,6 @@ static inline unsigned long long va_to_pa(struct wd_queue *q, void *va) - return (unsigned long long)wd_iova_map(q, va, 0); - } - --static inline void *pa_to_va(struct wd_queue *q, unsigned long long pa) --{ -- return wd_dma_to_va(q, (void *)pa); --} -- - struct mmt_queue_mempool *mmt_test_mempool_create(struct wd_queue *q, - unsigned int block_size, unsigned int block_num) - { -diff --git a/v1/test/test_mm/test_wd_mem.h b/v1/test/test_mm/test_wd_mem.h -index 8a7f561..0962b44 100644 ---- a/v1/test/test_mm/test_wd_mem.h -+++ b/v1/test/test_mm/test_wd_mem.h -@@ -15,7 +15,7 @@ - */ - - #ifndef __TEST_WD_MEM_H --#define ___TEST_WD_MEM_H -+#define __TEST_WD_MEM_H - - #include - #include -diff --git a/v1/wd_rsa.c b/v1/wd_rsa.c -index bda8d31..2c8692b 100644 ---- a/v1/wd_rsa.c -+++ b/v1/wd_rsa.c -@@ -105,8 +105,10 @@ struct wcrypto_rsa_prikey2 { - }; - - struct wcrypto_rsa_prikey { -- struct wcrypto_rsa_prikey1 pkey1; -- struct wcrypto_rsa_prikey2 pkey2; -+ union { -+ struct wcrypto_rsa_prikey1 pkey1; -+ struct wcrypto_rsa_prikey2 pkey2; -+ } pkey; - }; - - /* RSA CRT private key parameter types */ -@@ -444,7 +446,7 @@ static int create_ctx_key(struct wcrypto_rsa_ctx_setup *setup, - WD_ERR("alloc prikey2 fail!\n"); - return -WD_ENOMEM; - } -- pkey2 = &ctx->prikey->pkey2; -+ pkey2 = &ctx->prikey->pkey.pkey2; - memset(ctx->prikey, 0, len); - init_pkey2(pkey2, ctx->key_size); - } else { -@@ -459,7 +461,7 @@ static int create_ctx_key(struct wcrypto_rsa_ctx_setup *setup, - WD_ERR("alloc prikey1 fail!\n"); - return -WD_ENOMEM; - } -- pkey1 = &ctx->prikey->pkey1; -+ pkey1 = &ctx->prikey->pkey.pkey1; - memset(ctx->prikey, 0, len); - init_pkey1(pkey1, ctx->key_size); - } -@@ -716,7 +718,7 @@ int wcrypto_set_rsa_prikey_params(void *ctx, struct wd_dtb *d, struct wd_dtb *n) - WD_ERR("ctx err in set rsa private key1!\n"); - return -WD_EINVAL; - } -- pkey1 = &c->prikey->pkey1; -+ pkey1 = &c->prikey->pkey.pkey1; - if (d) { - if (d->dsize > pkey1->key_size || !d->data) { - WD_ERR("d err in set rsa private key1!\n"); -@@ -750,7 +752,7 @@ void wcrypto_get_rsa_prikey_params(struct wcrypto_rsa_prikey *pvk, struct wd_dtb - return; - } - -- pkey1 = &pvk->pkey1; -+ pkey1 = &pvk->pkey.pkey1; - - if (d) - *d = &pkey1->d; -@@ -825,7 +827,7 @@ int wcrypto_set_rsa_crt_prikey_params(void *ctx, struct wd_dtb *dq, - return ret; - } - -- pkey2 = &c->prikey->pkey2; -+ pkey2 = &c->prikey->pkey.pkey2; - ret = rsa_prikey2_param_set(pkey2, dq, WD_CRT_PRIKEY_DQ); - if (ret) { - WD_ERR("dq err in set rsa private key2!\n"); -@@ -871,7 +873,7 @@ void wcrypto_get_rsa_crt_prikey_params(struct wcrypto_rsa_prikey *pvk, - return; - } - -- pkey2 = &pvk->pkey2; -+ pkey2 = &pvk->pkey.pkey2; - - if (dq) - *dq = &pkey2->dq; --- -2.25.1 - diff --git a/0006-uadk-fix-for-env-uninit-segment-fault.patch b/0006-uadk-fix-for-env-uninit-segment-fault.patch new file mode 100644 index 0000000..198849e --- /dev/null +++ b/0006-uadk-fix-for-env-uninit-segment-fault.patch @@ -0,0 +1,28 @@ +From 21d1a0a1f57487a8d643f45150774b42273a56d5 Mon Sep 17 00:00:00 2001 +From: Wenkai Lin +Date: Tue, 23 Jul 2024 19:43:46 +0800 +Subject: [PATCH 06/16] uadk: fix for env uninit segment fault + +config ctx_config should not be set if init failed. + +Signed-off-by: Wenkai Lin +Signed-off-by: Qi Tao +--- + wd_util.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/wd_util.c b/wd_util.c +index 99be973..76548c9 100644 +--- a/wd_util.c ++++ b/wd_util.c +@@ -1212,6 +1212,7 @@ err_free_ctxs: + free(ctx_config->ctxs); + err_free_ctx_config: + free(ctx_config); ++ config->ctx_config = NULL; + return ret; + } + +-- +2.25.1 + diff --git a/0006-wd_mempool-fix-build-error.patch b/0006-wd_mempool-fix-build-error.patch deleted file mode 100644 index 6d5e71b..0000000 --- a/0006-wd_mempool-fix-build-error.patch +++ /dev/null @@ -1,43 +0,0 @@ -From d335549b1d076a22735bb7211823c2f4140c62af Mon Sep 17 00:00:00 2001 -From: Zhangfei Gao -Date: Wed, 24 Jan 2024 04:15:46 +0000 -Subject: [PATCH 6/8] wd_mempool: fix build error - -Fix build errors like -"passing 'int *' to parameter of type '__u32 *' (aka 'unsigned int *') -converts between pointers to integer types with different sign" - -Signed-off-by: Zhangfei Gao -Signed-off-by: 15859157387 <977713017@qq.com> ---- - wd_mempool.c | 7 +------ - 1 file changed, 1 insertion(+), 6 deletions(-) - -diff --git a/wd_mempool.c b/wd_mempool.c -index ed107d1..47ad36b 100644 ---- a/wd_mempool.c -+++ b/wd_mempool.c -@@ -71,7 +71,7 @@ static inline int wd_atomic_test_add(struct wd_ref *ref, int a, int u) - c = __atomic_load_n(&ref->ref, __ATOMIC_RELAXED); - if (c == u) - break; -- } while (! __atomic_compare_exchange_n(&ref->ref, &c, c + a, true, -+ } while (!__atomic_compare_exchange_n(&ref->ref, (__u32 *)&c, c + a, true, - __ATOMIC_RELAXED, __ATOMIC_RELAXED)); - - return c; -@@ -299,11 +299,6 @@ static int test_bit(struct bitmap *bm, unsigned int nr) - return !(*p & mask); - } - --inline static size_t wd_get_page_size(void) --{ -- return sysconf(_SC_PAGESIZE); --} -- - void *wd_block_alloc(handle_t blkpool) - { - struct blkpool *bp = (struct blkpool*)blkpool; --- -2.25.1 - diff --git a/0007-uadk-v1-drv-hisi_zip_udrv-fix-the-wrong-literal-buff.patch b/0007-uadk-v1-drv-hisi_zip_udrv-fix-the-wrong-literal-buff.patch new file mode 100644 index 0000000..e8258ca --- /dev/null +++ b/0007-uadk-v1-drv-hisi_zip_udrv-fix-the-wrong-literal-buff.patch @@ -0,0 +1,62 @@ +From aa977445de462fad116e90f5242f84e4fdb1f1fb Mon Sep 17 00:00:00 2001 +From: Yang Shen +Date: Tue, 23 Jul 2024 19:45:27 +0800 +Subject: [PATCH 07/16] uadk/v1/drv: hisi_zip_udrv - fix the wrong literal + buffer size + +The driver reserves more 16 bytes for literal output buffer needed by +hardware. But it forgets to add the offset to the beginning of the +sequence. So the literal and sequence buffers have 16 bytes of overlap. +In some case, the sequence data will be overwrited. + +Signed-off-by: Yang Shen +Signed-off-by: Qi Tao +--- + v1/drv/hisi_zip_udrv.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/v1/drv/hisi_zip_udrv.c b/v1/drv/hisi_zip_udrv.c +index 9c9694b..cc55ef5 100644 +--- a/v1/drv/hisi_zip_udrv.c ++++ b/v1/drv/hisi_zip_udrv.c +@@ -177,13 +177,11 @@ int qm_fill_zip_sqe(void *smsg, struct qm_queue_info *info, __u16 i) + return -WD_EINVAL; + } + +- if (unlikely(msg->data_fmt != WD_SGL_BUF && +- msg->in_size > MAX_BUFFER_SIZE)) { ++ if (unlikely(msg->data_fmt != WD_SGL_BUF && msg->in_size > MAX_BUFFER_SIZE)) { + WD_ERR("The in_len is out of range in_len(%u)!\n", msg->in_size); + return -WD_EINVAL; + } +- if (unlikely(msg->data_fmt != WD_SGL_BUF && +- msg->avail_out > MAX_BUFFER_SIZE)) { ++ if (unlikely(msg->data_fmt != WD_SGL_BUF && msg->avail_out > MAX_BUFFER_SIZE)) { + WD_ERR("warning: avail_out is out of range (%u), will set 8MB size max!\n", + msg->avail_out); + msg->avail_out = MAX_BUFFER_SIZE; +@@ -500,8 +498,10 @@ 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); +@@ -671,7 +671,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.25.1 + diff --git a/0007-wd_rsa-fix-build-error.patch b/0007-wd_rsa-fix-build-error.patch deleted file mode 100644 index 4de8d82..0000000 --- a/0007-wd_rsa-fix-build-error.patch +++ /dev/null @@ -1,101 +0,0 @@ -From 6077f4317961f8e308ecad2f02c3cdbb09aa707a Mon Sep 17 00:00:00 2001 -From: Zhangfei Gao -Date: Wed, 24 Jan 2024 04:18:57 +0000 -Subject: [PATCH 7/8] wd_rsa: fix build error - -Fix build errors, like -"field 'pkey1' with variable sized type 'struct wd_rsa_prikey1' -not at the end of a struct or class is a GNU extension" - -Signed-off-by: Zhangfei Gao -Signed-off-by: 15859157387 <977713017@qq.com> ---- - wd_rsa.c | 22 ++++++++++++---------- - 1 file changed, 12 insertions(+), 10 deletions(-) - -diff --git a/wd_rsa.c b/wd_rsa.c -index a27f061..de0b796 100644 ---- a/wd_rsa.c -+++ b/wd_rsa.c -@@ -45,8 +45,10 @@ struct wd_rsa_prikey2 { - }; - - struct wd_rsa_prikey { -- struct wd_rsa_prikey1 pkey1; -- struct wd_rsa_prikey2 pkey2; -+ union { -+ struct wd_rsa_prikey1 pkey1; -+ struct wd_rsa_prikey2 pkey2; -+ } pkey; - }; - - /* RSA private key parameter types */ -@@ -830,7 +832,7 @@ static int create_sess_key(struct wd_rsa_sess_setup *setup, - WD_ERR("failed to alloc sess prikey2!\n"); - return -WD_ENOMEM; - } -- pkey2 = &sess->prikey->pkey2; -+ pkey2 = &sess->prikey->pkey.pkey2; - memset(sess->prikey, 0, len); - init_pkey2(pkey2, sess->key_size); - } else { -@@ -841,7 +843,7 @@ static int create_sess_key(struct wd_rsa_sess_setup *setup, - WD_ERR("failed to alloc sess prikey1!\n"); - return -WD_ENOMEM; - } -- pkey1 = &sess->prikey->pkey1; -+ pkey1 = &sess->prikey->pkey.pkey1; - memset(sess->prikey, 0, len); - init_pkey1(pkey1, sess->key_size); - } -@@ -872,9 +874,9 @@ static void del_sess_key(struct wd_rsa_sess *sess) - } - - if (sess->setup.is_crt) -- wd_memset_zero(prk->pkey2.data, CRT_PARAMS_SZ(sess->key_size)); -+ wd_memset_zero(prk->pkey.pkey2.data, CRT_PARAMS_SZ(sess->key_size)); - else -- wd_memset_zero(prk->pkey1.data, GEN_PARAMS_SZ(sess->key_size)); -+ wd_memset_zero(prk->pkey.pkey1.data, GEN_PARAMS_SZ(sess->key_size)); - free(sess->prikey); - free(sess->pubkey); - } -@@ -1027,7 +1029,7 @@ int wd_rsa_set_prikey_params(handle_t sess, struct wd_dtb *d, struct wd_dtb *n) - WD_ERR("invalid: sess err in set rsa private key1!\n"); - return -WD_EINVAL; - } -- pkey1 = &c->prikey->pkey1; -+ pkey1 = &c->prikey->pkey.pkey1; - if (d) { - if (!d->dsize || !d->data || d->dsize > pkey1->key_size) { - WD_ERR("invalid: d err in set rsa private key1!\n"); -@@ -1062,7 +1064,7 @@ void wd_rsa_get_prikey_params(struct wd_rsa_prikey *pvk, struct wd_dtb **d, - return; - } - -- pkey1 = &pvk->pkey1; -+ pkey1 = &pvk->pkey.pkey1; - - if (d) - *d = &pkey1->d; -@@ -1134,7 +1136,7 @@ int wd_rsa_set_crt_prikey_params(handle_t sess, struct wd_dtb *dq, - return ret; - } - -- pkey2 = &c->prikey->pkey2; -+ pkey2 = &c->prikey->pkey.pkey2; - ret = rsa_prikey2_param_set(pkey2, dq, WD_CRT_PRIKEY_DQ); - if (ret) { - WD_ERR("failed to set dq for rsa private key2!\n"); -@@ -1180,7 +1182,7 @@ void wd_rsa_get_crt_prikey_params(struct wd_rsa_prikey *pvk, - return; - } - -- pkey2 = &pvk->pkey2; -+ pkey2 = &pvk->pkey.pkey2; - - if (dq) - *dq = &pkey2->dq; --- -2.25.1 - diff --git a/0008-test-fix-build-error.patch b/0008-test-fix-build-error.patch deleted file mode 100644 index 7bc0986..0000000 --- a/0008-test-fix-build-error.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 4a451be8acc77467d6ffec9506b8f89ef92def8a Mon Sep 17 00:00:00 2001 -From: Zhangfei Gao -Date: Wed, 24 Jan 2024 04:34:16 +0000 -Subject: [PATCH 8/8] test: fix build error - -Fix build errors like "unused variable" - -Signed-off-by: Zhangfei Gao -Signed-off-by: 15859157387 <977713017@qq.com> ---- - test/wd_mempool_test.c | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/test/wd_mempool_test.c b/test/wd_mempool_test.c -index ad04636..6e28b46 100644 ---- a/test/wd_mempool_test.c -+++ b/test/wd_mempool_test.c -@@ -644,7 +644,7 @@ static void *sva_sec_cipher_async(void *arg) - int cnt = g_times; - handle_t h_sess; - int ret; -- int j, i; -+ int j; - - setup->alg = WD_CIPHER_AES; - setup->mode = WD_CIPHER_CBC; -@@ -658,7 +658,6 @@ static void *sva_sec_cipher_async(void *arg) - SEC_TST_PRT("test sec cipher set key is failed!\n"); - goto out;; - } -- i = cnt; - /* run task */ - do { - try_do_again: -@@ -666,7 +665,6 @@ try_do_again: - req->src = pdata->bd_pool->bds[j].src; - req->dst = pdata->bd_pool->bds[j].dst; - ret = wd_do_cipher_async(h_sess, req); -- i--; - if (ret == -EBUSY) { // busy - usleep(100); - goto try_do_again; --- -2.25.1 - diff --git a/0008-uadk-v1-replace-wd_spinlock-to-pthread_spin_lock.patch b/0008-uadk-v1-replace-wd_spinlock-to-pthread_spin_lock.patch new file mode 100644 index 0000000..2cbe518 --- /dev/null +++ b/0008-uadk-v1-replace-wd_spinlock-to-pthread_spin_lock.patch @@ -0,0 +1,289 @@ +From f7c2a7a3e5116dc0ce4af539070f2ed93bb18af8 Mon Sep 17 00:00:00 2001 +From: Wenkai Lin +Date: Tue, 23 Jul 2024 19:47:09 +0800 +Subject: [PATCH 08/16] uadk/v1: replace wd_spinlock to pthread_spin_lock + +Due to memory differences, using wd_spinlock may +cause synchronization problems, it is better to use +the standard pthread spin lock of glibc. + +Signed-off-by: Wenkai Lin +Signed-off-by: Qi Tao +--- + v1/drv/hisi_qm_udrv.c | 51 +++++++++++++++++++++++++++++------------- + v1/drv/hisi_qm_udrv.h | 4 ++-- + v1/drv/hisi_rng_udrv.c | 25 +++++++++++++++------ + v1/drv/hisi_rng_udrv.h | 2 +- + 4 files changed, 56 insertions(+), 26 deletions(-) + +diff --git a/v1/drv/hisi_qm_udrv.c b/v1/drv/hisi_qm_udrv.c +index 175a5c4..1d4f1d8 100644 +--- a/v1/drv/hisi_qm_udrv.c ++++ b/v1/drv/hisi_qm_udrv.c +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -458,6 +459,11 @@ static int qm_init_queue_info(struct wd_queue *q) + struct hisi_qp_ctx qp_ctx = {0}; + int ret; + ++ if (!info->sqe_size) { ++ WD_ERR("invalid: sqe size is 0!\n"); ++ return -WD_EINVAL; ++ } ++ + info->sq_tail_index = 0; + info->cq_head_index = 0; + info->cqc_phase = 1; +@@ -502,11 +508,6 @@ static int qm_set_queue_info(struct wd_queue *q) + ret = qm_set_queue_regions(q); + if (ret) + return -WD_EINVAL; +- if (!info->sqe_size) { +- WD_ERR("sqe size =%d err!\n", info->sqe_size); +- ret = -WD_EINVAL; +- goto err_with_regions; +- } + info->cq_base = (void *)((uintptr_t)info->sq_base + + info->sqe_size * info->sq_depth); + +@@ -534,8 +535,24 @@ static int qm_set_queue_info(struct wd_queue *q) + goto err_with_regions; + } + ++ ret = pthread_spin_init(&info->sd_lock, PTHREAD_PROCESS_PRIVATE); ++ if (ret) { ++ WD_ERR("failed to init qinfo sd_lock!\n"); ++ goto free_cache; ++ } ++ ++ ret = pthread_spin_init(&info->rc_lock, PTHREAD_PROCESS_PRIVATE); ++ if (ret) { ++ WD_ERR("failed to init qinfo rc_lock!\n"); ++ goto uninit_lock; ++ } ++ + return 0; + ++uninit_lock: ++ pthread_spin_destroy(&info->sd_lock); ++free_cache: ++ free(info->req_cache); + err_with_regions: + qm_unset_queue_regions(q); + return ret; +@@ -576,8 +593,10 @@ void qm_uninit_queue(struct wd_queue *q) + struct q_info *qinfo = q->qinfo; + struct qm_queue_info *info = qinfo->priv; + +- qm_unset_queue_regions(q); ++ pthread_spin_destroy(&info->rc_lock); ++ pthread_spin_destroy(&info->sd_lock); + free(info->req_cache); ++ qm_unset_queue_regions(q); + free(qinfo->priv); + qinfo->priv = NULL; + } +@@ -605,10 +624,10 @@ int qm_send(struct wd_queue *q, void **req, __u32 num) + int ret; + __u32 i; + +- wd_spinlock(&info->sd_lock); ++ pthread_spin_lock(&info->sd_lock); + if (unlikely((__u32)__atomic_load_n(&info->used, __ATOMIC_RELAXED) > + info->sq_depth - num - 1)) { +- wd_unspinlock(&info->sd_lock); ++ pthread_spin_unlock(&info->sd_lock); + WD_ERR("queue is full!\n"); + return -WD_EBUSY; + } +@@ -617,7 +636,7 @@ int qm_send(struct wd_queue *q, void **req, __u32 num) + ret = info->sqe_fill[qinfo->atype](req[i], qinfo->priv, + info->sq_tail_index); + if (unlikely(ret != WD_SUCCESS)) { +- wd_unspinlock(&info->sd_lock); ++ pthread_spin_unlock(&info->sd_lock); + WD_ERR("sqe fill error, ret %d!\n", ret); + return -WD_EINVAL; + } +@@ -629,7 +648,7 @@ int qm_send(struct wd_queue *q, void **req, __u32 num) + } + + ret = qm_tx_update(info, num); +- wd_unspinlock(&info->sd_lock); ++ pthread_spin_unlock(&info->sd_lock); + + return ret; + } +@@ -662,9 +681,9 @@ static int check_ds_rx_base(struct qm_queue_info *info, + return 0; + + if (before) { +- wd_spinlock(&info->rc_lock); ++ pthread_spin_lock(&info->rc_lock); + qm_rx_from_cache(info, resp, num); +- wd_unspinlock(&info->rc_lock); ++ pthread_spin_unlock(&info->rc_lock); + WD_ERR("wd queue hw error happened before qm receive!\n"); + } else { + WD_ERR("wd queue hw error happened after qm receive!\n"); +@@ -705,7 +724,7 @@ int qm_recv(struct wd_queue *q, void **resp, __u32 num) + if (unlikely(ret)) + return ret; + +- wd_spinlock(&info->rc_lock); ++ pthread_spin_lock(&info->rc_lock); + for (i = 0; i < num; i++) { + cqe = info->cq_base + info->cq_head_index * sizeof(struct cqe); + if (info->cqc_phase != CQE_PHASE(cqe)) +@@ -714,7 +733,7 @@ int qm_recv(struct wd_queue *q, void **resp, __u32 num) + mb(); /* make sure the data is all in memory before read */ + sq_head = CQE_SQ_HEAD_INDEX(cqe); + if (unlikely(sq_head >= info->sq_depth)) { +- wd_unspinlock(&info->rc_lock); ++ pthread_spin_unlock(&info->rc_lock); + WD_ERR("CQE_SQ_HEAD_INDEX(%u) error\n", sq_head); + return -WD_EIO; + } +@@ -726,7 +745,7 @@ int qm_recv(struct wd_queue *q, void **resp, __u32 num) + if (!ret) { + break; + } else if (ret < 0) { +- wd_unspinlock(&info->rc_lock); ++ pthread_spin_unlock(&info->rc_lock); + WD_ERR("recv sqe error %u\n", sq_head); + return ret; + } +@@ -747,7 +766,7 @@ int qm_recv(struct wd_queue *q, void **resp, __u32 num) + ret = i; + } + +- wd_unspinlock(&info->rc_lock); ++ pthread_spin_unlock(&info->rc_lock); + + return ret; + } +diff --git a/v1/drv/hisi_qm_udrv.h b/v1/drv/hisi_qm_udrv.h +index 4d54cf6..06ac66a 100644 +--- a/v1/drv/hisi_qm_udrv.h ++++ b/v1/drv/hisi_qm_udrv.h +@@ -166,8 +166,8 @@ struct qm_queue_info { + qm_sqe_parse sqe_parse[WCRYPTO_MAX_ALG]; + hisi_qm_sqe_fill_priv sqe_fill_priv; + hisi_qm_sqe_parse_priv sqe_parse_priv; +- struct wd_lock sd_lock; +- struct wd_lock rc_lock; ++ pthread_spinlock_t sd_lock; ++ pthread_spinlock_t rc_lock; + struct wd_queue *q; + int (*sgl_info)(struct hw_sgl_info *info); + int (*sgl_init)(void *pool, struct wd_sgl *sgl); +diff --git a/v1/drv/hisi_rng_udrv.c b/v1/drv/hisi_rng_udrv.c +index 86a20cb..605ef27 100644 +--- a/v1/drv/hisi_rng_udrv.c ++++ b/v1/drv/hisi_rng_udrv.c +@@ -17,6 +17,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -34,6 +35,7 @@ int rng_init_queue(struct wd_queue *q) + { + struct q_info *qinfo = q->qinfo; + struct rng_queue_info *info; ++ int ret; + + info = calloc(1, sizeof(*info)); + if (!info) { +@@ -41,12 +43,20 @@ int rng_init_queue(struct wd_queue *q) + return -ENOMEM; + } + ++ ret = pthread_spin_init(&info->lock, PTHREAD_PROCESS_PRIVATE); ++ if (ret) { ++ free(info); ++ WD_ERR("failed to init rng qinfo lock!\n"); ++ return ret; ++ } ++ + qinfo->priv = info; + info->mmio_base = wd_drv_mmap_qfr(q, WD_UACCE_QFRT_MMIO, 0); + if (info->mmio_base == MAP_FAILED) { + info->mmio_base = NULL; +- free(qinfo->priv); + qinfo->priv = NULL; ++ pthread_spin_destroy(&info->lock); ++ free(info); + WD_ERR("mmap trng mmio fail\n"); + return -ENOMEM; + } +@@ -63,6 +73,7 @@ void rng_uninit_queue(struct wd_queue *q) + + free(qinfo->priv); + qinfo->priv = NULL; ++ pthread_spin_destroy(&info->lock); + } + + int rng_send(struct wd_queue *q, void **req, __u32 num) +@@ -70,14 +81,14 @@ int rng_send(struct wd_queue *q, void **req, __u32 num) + struct q_info *qinfo = q->qinfo; + struct rng_queue_info *info = qinfo->priv; + +- wd_spinlock(&info->lock); ++ pthread_spin_lock(&info->lock); + if (!info->req_cache[info->send_idx]) { + info->req_cache[info->send_idx] = req[0]; + info->send_idx++; +- wd_unspinlock(&info->lock); ++ pthread_spin_unlock(&info->lock); + return 0; + } +- wd_unspinlock(&info->lock); ++ pthread_spin_unlock(&info->lock); + + WD_ERR("queue is full!\n"); + return -WD_EBUSY; +@@ -128,16 +139,16 @@ int rng_recv(struct wd_queue *q, void **resp, __u32 num) + struct wcrypto_cb_tag *tag; + __u32 currsize = 0; + +- wd_spinlock(&info->lock); ++ pthread_spin_lock(&info->lock); + msg = info->req_cache[info->recv_idx]; + if (!msg) { +- wd_unspinlock(&info->lock); ++ pthread_spin_unlock(&info->lock); + return 0; + } + + info->req_cache[info->recv_idx] = NULL; + info->recv_idx++; +- wd_unspinlock(&info->lock); ++ pthread_spin_unlock(&info->lock); + + tag = (void *)(uintptr_t)msg->usr_tag; + if (usr && tag->ctx_id != usr) +diff --git a/v1/drv/hisi_rng_udrv.h b/v1/drv/hisi_rng_udrv.h +index 56814a4..3efa10e 100644 +--- a/v1/drv/hisi_rng_udrv.h ++++ b/v1/drv/hisi_rng_udrv.h +@@ -29,7 +29,7 @@ struct rng_queue_info { + void *req_cache[TRNG_Q_DEPTH]; + __u8 send_idx; + __u8 recv_idx; +- struct wd_lock lock; ++ pthread_spinlock_t lock; + }; + + int rng_init_queue(struct wd_queue *q); +-- +2.25.1 + diff --git a/0009-uadk-sec-move-function-to-wd_digest_drv.h.patch b/0009-uadk-sec-move-function-to-wd_digest_drv.h.patch deleted file mode 100644 index 783ea8d..0000000 --- a/0009-uadk-sec-move-function-to-wd_digest_drv.h.patch +++ /dev/null @@ -1,201 +0,0 @@ -From b1eeb7ddb8305466cdfb4e49cc68b0b4264d4a43 Mon Sep 17 00:00:00 2001 -From: Weili Qian -Date: Mon, 5 Feb 2024 17:24:21 +0800 -Subject: [PATCH 09/44] uadk/sec: move function to wd_digest_drv.h - -Since function get_hash_bd_type() will be used in multiple files, -move it to wd_digest_drv.h. And rename get_hash_bd_type to -get_hash_msg_type to make the function generic. - -Signed-off-by: Weili Qian ---- - drv/hisi_sec.c | 52 ++++++++++--------------------------- - include/drv/wd_digest_drv.h | 27 ++++++++++++++++++- - 2 files changed, 39 insertions(+), 40 deletions(-) - -diff --git a/drv/hisi_sec.c b/drv/hisi_sec.c -index 5b114f6..9da21a8 100644 ---- a/drv/hisi_sec.c -+++ b/drv/hisi_sec.c -@@ -200,13 +200,6 @@ enum sec_c_width { - C_WIDTH_CS3 = 0x3, - }; - --enum hash_bd_type { -- HASH_SINGLE_BD, -- HASH_FRIST_BD, -- HASH_MIDDLE_BD, -- HASH_END_BD, --}; -- - struct hisi_sec_ctx { - struct wd_ctx_config_internal config; - }; -@@ -1549,29 +1542,10 @@ static int long_hash_param_check(handle_t h_qp, struct wd_digest_msg *msg) - return 0; - } - --static enum hash_bd_type get_hash_bd_type(struct wd_digest_msg *msg) --{ -- /* -- * [has_next , iv_bytes] -- * [ 1 , 0 ] = long hash(frist bd) -- * [ 1 , 1 ] = long hash(middle bd) -- * [ 0 , 1 ] = long hash(end bd) -- * [ 0 , 0 ] = block hash(single bd) -- */ -- if (msg->has_next && !msg->iv_bytes) -- return HASH_FRIST_BD; -- else if (msg->has_next && msg->iv_bytes) -- return HASH_MIDDLE_BD; -- else if (!msg->has_next && msg->iv_bytes) -- return HASH_END_BD; -- else -- return HASH_SINGLE_BD; --} -- - static int fill_digest_long_hash(handle_t h_qp, struct wd_digest_msg *msg, - struct hisi_sec_sqe *sqe) - { -- enum hash_bd_type bd_type = get_hash_bd_type(msg); -+ enum hash_block_type block_type = get_hash_block_type(msg); - __u64 total_bits; - int ret; - -@@ -1579,20 +1553,20 @@ static int fill_digest_long_hash(handle_t h_qp, struct wd_digest_msg *msg, - if (ret) - return ret; - -- if (bd_type == HASH_FRIST_BD) { -+ if (block_type == HASH_FRIST_BLOCK) { - /* Long hash first */ - sqe->ai_apd_cs = AI_GEN_INNER; - sqe->ai_apd_cs |= AUTHPAD_NOPAD << AUTHPAD_OFFSET; - } - -- if (bd_type == HASH_MIDDLE_BD) { -+ if (block_type == HASH_MIDDLE_BLOCK) { - /* Long hash middle */ - sqe->ai_apd_cs = AI_GEN_IVIN_ADDR; - sqe->ai_apd_cs |= AUTHPAD_NOPAD << AUTHPAD_OFFSET; - sqe->type2.a_ivin_addr = sqe->type2.mac_addr; - } - -- if (bd_type == HASH_END_BD) { -+ if (block_type == HASH_END_BLOCK) { - /* Long hash end */ - sqe->ai_apd_cs = AI_GEN_IVIN_ADDR; - sqe->ai_apd_cs |= AUTHPAD_PAD << AUTHPAD_OFFSET; -@@ -1658,16 +1632,16 @@ static int digest_long_bd_align_check(struct wd_digest_msg *msg) - - static int digest_bd2_type_check(struct wd_digest_msg *msg) - { -- enum hash_bd_type type = get_hash_bd_type(msg); -+ enum hash_block_type type = get_hash_block_type(msg); - - /* Long hash first and middle bd */ -- if (type == HASH_FRIST_BD || type == HASH_MIDDLE_BD) { -+ if (type == HASH_FRIST_BLOCK || type == HASH_MIDDLE_BLOCK) { - WD_ERR("hardware v2 not supports 0 size in long hash!\n"); - return -WD_EINVAL; - } - - /* Block mode hash bd */ -- if (type == HASH_SINGLE_BD) { -+ if (type == HASH_SINGLE_BLOCK) { - WD_ERR("hardware v2 not supports 0 size in block hash!\n"); - return -WD_EINVAL; - } -@@ -1677,9 +1651,9 @@ static int digest_bd2_type_check(struct wd_digest_msg *msg) - - static int digest_bd3_type_check(struct wd_digest_msg *msg) - { -- enum hash_bd_type type = get_hash_bd_type(msg); -+ enum hash_block_type type = get_hash_block_type(msg); - /* Long hash first and middle bd */ -- if (type == HASH_FRIST_BD || type == HASH_MIDDLE_BD) { -+ if (type == HASH_FRIST_BLOCK || type == HASH_MIDDLE_BLOCK) { - WD_ERR("invalid: hardware v3 not supports 0 size in long hash!\n"); - return -WD_EINVAL; - } -@@ -1920,7 +1894,7 @@ static int aes_auth_long_hash_check(struct wd_digest_msg *msg) - static int fill_digest_long_hash3(handle_t h_qp, struct wd_digest_msg *msg, - struct hisi_sec_sqe3 *sqe) - { -- enum hash_bd_type bd_type = get_hash_bd_type(msg); -+ enum hash_block_type block_type = get_hash_block_type(msg); - __u64 total_bits; - int ret; - -@@ -1932,20 +1906,20 @@ static int fill_digest_long_hash3(handle_t h_qp, struct wd_digest_msg *msg, - if (ret) - return ret; - -- if (bd_type == HASH_FRIST_BD) { -+ if (block_type == HASH_FRIST_BLOCK) { - /* Long hash first */ - sqe->auth_mac_key |= AI_GEN_INNER << SEC_AI_GEN_OFFSET_V3; - sqe->stream_scene.stream_auth_pad = AUTHPAD_NOPAD; - } - -- if (bd_type == HASH_MIDDLE_BD) { -+ if (block_type == HASH_MIDDLE_BLOCK) { - /* Long hash middle */ - sqe->auth_mac_key |= AI_GEN_IVIN_ADDR << SEC_AI_GEN_OFFSET_V3; - sqe->stream_scene.stream_auth_pad = AUTHPAD_NOPAD; - sqe->auth_ivin.a_ivin_addr = sqe->mac_addr; - } - -- if (bd_type == HASH_END_BD) { -+ if (block_type == HASH_END_BLOCK) { - /* Long hash end */ - sqe->auth_mac_key |= AI_GEN_IVIN_ADDR << SEC_AI_GEN_OFFSET_V3; - sqe->stream_scene.stream_auth_pad = AUTHPAD_PAD; -diff --git a/include/drv/wd_digest_drv.h b/include/drv/wd_digest_drv.h -index 3c4477d..304b506 100644 ---- a/include/drv/wd_digest_drv.h -+++ b/include/drv/wd_digest_drv.h -@@ -10,7 +10,13 @@ - extern "C" { - #endif - --/* fixme wd_digest_msg */ -+enum hash_block_type { -+ HASH_FRIST_BLOCK, -+ HASH_MIDDLE_BLOCK, -+ HASH_END_BLOCK, -+ HASH_SINGLE_BLOCK, -+}; -+ - struct wd_digest_msg { - struct wd_digest_req req; - /* request identifier */ -@@ -51,6 +57,25 @@ struct wd_digest_msg { - __u64 long_data_len; - }; - -+static inline enum hash_block_type get_hash_block_type(struct wd_digest_msg *msg) -+{ -+ /* -+ * [has_next , iv_bytes] -+ * [ 1 , 0 ] = long hash(frist bd) -+ * [ 1 , 1 ] = long hash(middle bd) -+ * [ 0 , 1 ] = long hash(end bd) -+ * [ 0 , 0 ] = block hash(single bd) -+ */ -+ if (msg->has_next && !msg->iv_bytes) -+ return HASH_FRIST_BLOCK; -+ else if (msg->has_next && msg->iv_bytes) -+ return HASH_MIDDLE_BLOCK; -+ else if (!msg->has_next && msg->iv_bytes) -+ return HASH_END_BLOCK; -+ else -+ return HASH_SINGLE_BLOCK; -+} -+ - struct wd_digest_msg *wd_digest_get_msg(__u32 idx, __u32 tag); - - #ifdef __cplusplus --- -2.25.1 - diff --git a/0009-uadk_tools-add-segfault-locating-function.patch b/0009-uadk_tools-add-segfault-locating-function.patch new file mode 100644 index 0000000..1b94515 --- /dev/null +++ b/0009-uadk_tools-add-segfault-locating-function.patch @@ -0,0 +1,181 @@ +From 4beed871afcdd1d9f1a50f89bba960d91181f3b5 Mon Sep 17 00:00:00 2001 +From: Longfang Liu +Date: Tue, 23 Jul 2024 19:48:13 +0800 +Subject: [PATCH 09/16] uadk_tools: add segfault locating function + +When a segfault occurs within a test thread, it is generally +difficult to locate the problem. In order to improve the efficiency +of problem location, a segmentation fault capture entry is added +to each business thread entry. +And register a segfault callback handler function. As long as a +segfault occurs within the thread, the callback is triggered and +the segfault error message is output. + +Signed-off-by: Longfang Liu +Signed-off-by: Qi Tao +--- + uadk_tool/benchmark/hpre_uadk_benchmark.c | 1 + + uadk_tool/benchmark/hpre_wd_benchmark.c | 1 + + uadk_tool/benchmark/sec_soft_benchmark.c | 1 + + uadk_tool/benchmark/sec_uadk_benchmark.c | 1 + + uadk_tool/benchmark/sec_wd_benchmark.c | 1 + + uadk_tool/benchmark/trng_wd_benchmark.c | 1 + + uadk_tool/benchmark/uadk_benchmark.c | 15 +++++++++++++++ + uadk_tool/benchmark/uadk_benchmark.h | 3 +++ + uadk_tool/benchmark/zip_uadk_benchmark.c | 1 + + uadk_tool/benchmark/zip_wd_benchmark.c | 1 + + 10 files changed, 26 insertions(+) + +diff --git a/uadk_tool/benchmark/hpre_uadk_benchmark.c b/uadk_tool/benchmark/hpre_uadk_benchmark.c +index 0148e56..5dd6a39 100644 +--- a/uadk_tool/benchmark/hpre_uadk_benchmark.c ++++ b/uadk_tool/benchmark/hpre_uadk_benchmark.c +@@ -2706,6 +2706,7 @@ int hpre_uadk_benchmark(struct acc_option *options) + u32 ptime; + int ret; + ++ signal(SIGSEGV, segmentfault_handler); + g_thread_num = options->threads; + g_ctxnum = options->ctxnums; + +diff --git a/uadk_tool/benchmark/hpre_wd_benchmark.c b/uadk_tool/benchmark/hpre_wd_benchmark.c +index 5545ad8..0196e62 100644 +--- a/uadk_tool/benchmark/hpre_wd_benchmark.c ++++ b/uadk_tool/benchmark/hpre_wd_benchmark.c +@@ -2564,6 +2564,7 @@ int hpre_wd_benchmark(struct acc_option *options) + u32 ptime; + int ret; + ++ signal(SIGSEGV, segmentfault_handler); + g_thread_num = options->threads; + + if (options->optype >= (WCRYPTO_EC_OP_MAX - WCRYPTO_ECDSA_VERIFY)) { +diff --git a/uadk_tool/benchmark/sec_soft_benchmark.c b/uadk_tool/benchmark/sec_soft_benchmark.c +index 84dab63..8fa523c 100644 +--- a/uadk_tool/benchmark/sec_soft_benchmark.c ++++ b/uadk_tool/benchmark/sec_soft_benchmark.c +@@ -1277,6 +1277,7 @@ int sec_soft_benchmark(struct acc_option *options) + u32 ptime; + int ret; + ++ signal(SIGSEGV, segmentfault_handler); + g_thread_num = options->threads; + g_pktlen = options->pktlen; + g_jobsnum = options->ctxnums; +diff --git a/uadk_tool/benchmark/sec_uadk_benchmark.c b/uadk_tool/benchmark/sec_uadk_benchmark.c +index 56f4fa6..41b7416 100644 +--- a/uadk_tool/benchmark/sec_uadk_benchmark.c ++++ b/uadk_tool/benchmark/sec_uadk_benchmark.c +@@ -1777,6 +1777,7 @@ int sec_uadk_benchmark(struct acc_option *options) + u32 ptime; + int ret; + ++ signal(SIGSEGV, segmentfault_handler); + g_thread_num = options->threads; + g_pktlen = options->pktlen; + g_ctxnum = options->ctxnums; +diff --git a/uadk_tool/benchmark/sec_wd_benchmark.c b/uadk_tool/benchmark/sec_wd_benchmark.c +index bb47d61..e022dcb 100644 +--- a/uadk_tool/benchmark/sec_wd_benchmark.c ++++ b/uadk_tool/benchmark/sec_wd_benchmark.c +@@ -1630,6 +1630,7 @@ int sec_wd_benchmark(struct acc_option *options) + u32 ptime; + int ret; + ++ signal(SIGSEGV, segmentfault_handler); + g_alg = options->subtype; + g_algtype = options->algtype; + g_optype = options->optype; +diff --git a/uadk_tool/benchmark/trng_wd_benchmark.c b/uadk_tool/benchmark/trng_wd_benchmark.c +index 3ce329a..2f058d4 100644 +--- a/uadk_tool/benchmark/trng_wd_benchmark.c ++++ b/uadk_tool/benchmark/trng_wd_benchmark.c +@@ -312,6 +312,7 @@ int trng_wd_benchmark(struct acc_option *options) + u32 ptime; + int ret; + ++ signal(SIGSEGV, segmentfault_handler); + g_thread_num = options->threads; + + ret = init_trng_wd_queue(options); +diff --git a/uadk_tool/benchmark/uadk_benchmark.c b/uadk_tool/benchmark/uadk_benchmark.c +index 1bf9fee..0f01fdf 100644 +--- a/uadk_tool/benchmark/uadk_benchmark.c ++++ b/uadk_tool/benchmark/uadk_benchmark.c +@@ -331,6 +331,21 @@ void cal_avg_latency(u32 count) + ACC_TST_PRT("thread<%lu> avg latency: %.1fus\n", gettid(), latency); + } + ++void segmentfault_handler(int sig) ++{ ++#define BUF_SZ 64 ++ void *array[BUF_SZ]; ++ size_t size; ++ ++ /* Get void*'s for all entries on the stack */ ++ size = backtrace(array, BUF_SZ); ++ ++ /* Print out all the frames to stderr */ ++ fprintf(stderr, "Error: signal %d:\n", sig); ++ backtrace_symbols_fd(array, size, STDERR_FILENO); ++ exit(1); ++} ++ + /*-------------------------------------main code------------------------------------------------------*/ + static void parse_alg_param(struct acc_option *option) + { +diff --git a/uadk_tool/benchmark/uadk_benchmark.h b/uadk_tool/benchmark/uadk_benchmark.h +index c493ac3..0def4b9 100644 +--- a/uadk_tool/benchmark/uadk_benchmark.h ++++ b/uadk_tool/benchmark/uadk_benchmark.h +@@ -4,6 +4,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -15,6 +16,7 @@ + #include + #include + #include ++#include + #include + + #define ACC_TST_PRT printf +@@ -217,6 +219,7 @@ extern void add_send_complete(void); + extern u32 get_recv_time(void); + extern void cal_avg_latency(u32 count); + extern int get_alg_name(int alg, char *alg_name); ++extern void segmentfault_handler(int sig); + + int acc_cmd_parse(int argc, char *argv[], struct acc_option *option); + int acc_default_case(struct acc_option *option); +diff --git a/uadk_tool/benchmark/zip_uadk_benchmark.c b/uadk_tool/benchmark/zip_uadk_benchmark.c +index ecb688f..22aa916 100644 +--- a/uadk_tool/benchmark/zip_uadk_benchmark.c ++++ b/uadk_tool/benchmark/zip_uadk_benchmark.c +@@ -1331,6 +1331,7 @@ int zip_uadk_benchmark(struct acc_option *options) + u32 ptime; + int ret; + ++ signal(SIGSEGV, segmentfault_handler); + g_thread_num = options->threads; + g_pktlen = options->pktlen; + g_ctxnum = options->ctxnums; +diff --git a/uadk_tool/benchmark/zip_wd_benchmark.c b/uadk_tool/benchmark/zip_wd_benchmark.c +index cbe07fc..8ad3e96 100644 +--- a/uadk_tool/benchmark/zip_wd_benchmark.c ++++ b/uadk_tool/benchmark/zip_wd_benchmark.c +@@ -1162,6 +1162,7 @@ int zip_wd_benchmark(struct acc_option *options) + u32 ptime; + int ret; + ++ signal(SIGSEGV, segmentfault_handler); + g_thread_num = options->threads; + g_pktlen = options->pktlen; + +-- +2.25.1 + diff --git a/0010-uadk-bugfix-CE-driver-initialization-problem.patch b/0010-uadk-bugfix-CE-driver-initialization-problem.patch new file mode 100644 index 0000000..6d14513 --- /dev/null +++ b/0010-uadk-bugfix-CE-driver-initialization-problem.patch @@ -0,0 +1,71 @@ +From fe6638d807d10d94ebee234a80e07c498c129fbc Mon Sep 17 00:00:00 2001 +From: Longfang Liu +Date: Tue, 23 Jul 2024 19:49:15 +0800 +Subject: [PATCH 10/16] uadk: bugfix CE driver initialization problem + +When using UADK provider, using the default business type TASK_MIX +will cause driver initialization to fail. +Analysis found that the CE driver will be initialized by fallback, +and NULL will be passed to the input parameter during initialization. +This NULL parameter will cause a segmentation fault during CE driver +initialization. +Therefore, initialization is skipped for NULL parameters in the CE driver. + +Signed-off-by: Longfang Liu +Signed-off-by: Qi Tao +--- + drv/hash_mb/hash_mb.c | 4 ++++ + drv/isa_ce_sm3.c | 6 +++++- + drv/isa_ce_sm4.c | 4 ++++ + 3 files changed, 13 insertions(+), 1 deletion(-) + +diff --git a/drv/hash_mb/hash_mb.c b/drv/hash_mb/hash_mb.c +index a73c698..e4a9564 100644 +--- a/drv/hash_mb/hash_mb.c ++++ b/drv/hash_mb/hash_mb.c +@@ -192,6 +192,10 @@ static int hash_mb_init(struct wd_alg_driver *drv, void *conf) + struct hash_mb_ctx *priv; + int ret; + ++ /* Fallback init is NULL */ ++ if (!drv || !conf) ++ return 0; ++ + priv = malloc(sizeof(struct hash_mb_ctx)); + if (!priv) + return -WD_ENOMEM; +diff --git a/drv/isa_ce_sm3.c b/drv/isa_ce_sm3.c +index 0309861..59f3940 100644 +--- a/drv/isa_ce_sm3.c ++++ b/drv/isa_ce_sm3.c +@@ -375,7 +375,11 @@ static int sm3_ce_drv_init(struct wd_alg_driver *drv, void *conf) + struct wd_ctx_config_internal *config = (struct wd_ctx_config_internal *)conf; + struct sm3_ce_drv_ctx *sctx = (struct sm3_ce_drv_ctx *)drv->priv; + +- config->epoll_en = false; ++ /* Fallback init is NULL */ ++ if (!drv || !conf) ++ return 0; ++ ++ config->epoll_en = 0; + + /* return if already inited */ + if (sctx) +diff --git a/drv/isa_ce_sm4.c b/drv/isa_ce_sm4.c +index 6961471..e937893 100644 +--- a/drv/isa_ce_sm4.c ++++ b/drv/isa_ce_sm4.c +@@ -36,6 +36,10 @@ static int isa_ce_init(struct wd_alg_driver *drv, void *conf) + struct wd_ctx_config_internal *config = conf; + struct sm4_ce_drv_ctx *sctx = drv->priv; + ++ /* Fallback init is NULL */ ++ if (!drv || !conf) ++ return 0; ++ + config->epoll_en = 0; + memcpy(&sctx->config, config, sizeof(struct wd_ctx_config_internal)); + +-- +2.25.1 + diff --git a/0010-uadk-digest-add-partial_block-to-store-partial-data.patch b/0010-uadk-digest-add-partial_block-to-store-partial-data.patch deleted file mode 100644 index 70e5a46..0000000 --- a/0010-uadk-digest-add-partial_block-to-store-partial-data.patch +++ /dev/null @@ -1,149 +0,0 @@ -From 6ad149cab59176faf05e65233b4986916a1f7c8d Mon Sep 17 00:00:00 2001 -From: Weili Qian -Date: Mon, 5 Feb 2024 17:27:07 +0800 -Subject: [PATCH 10/44] uadk/digest: add partial_block to store partial data - -For the long hash first blcok and middle block, if the size of -the data is not aligned with the block size, the partial data is -stored in partial_block and combined with the next block to form -an aligned length for calculation. Currently, partial_block is -added to struct wd_digest_sess to store partial data. - -Signed-off-by: Weili Qian ---- - include/drv/wd_digest_drv.h | 4 +++ - wd_digest.c | 50 ++++++++++++++++++++++++------------- - 2 files changed, 36 insertions(+), 18 deletions(-) - -diff --git a/include/drv/wd_digest_drv.h b/include/drv/wd_digest_drv.h -index 304b506..8a4aa0b 100644 ---- a/include/drv/wd_digest_drv.h -+++ b/include/drv/wd_digest_drv.h -@@ -44,6 +44,8 @@ struct wd_digest_msg { - __u32 in_bytes; - /* out_bytes */ - __u32 out_bytes; -+ /* partial bytes for stream mode */ -+ __u32 partial_bytes; - - /* input key pointer */ - __u8 *key; -@@ -53,6 +55,8 @@ struct wd_digest_msg { - __u8 *in; - /* output data pointer */ - __u8 *out; -+ /* partial pointer for stream mode */ -+ __u8 *partial_block; - /* total of data for stream mode */ - __u64 long_data_len; - }; -diff --git a/wd_digest.c b/wd_digest.c -index acf341a..dba2f95 100644 ---- a/wd_digest.c -+++ b/wd_digest.c -@@ -11,6 +11,7 @@ - #include "wd_digest.h" - - #define GMAC_IV_LEN 16 -+#define MAX_BLOCK_SIZE 128 - - static __u32 g_digest_mac_len[WD_DIGEST_TYPE_MAX] = { - WD_DIGEST_SM3_LEN, WD_DIGEST_MD5_LEN, WD_DIGEST_SHA1_LEN, -@@ -45,6 +46,19 @@ struct wd_digest_setting { - void *dlh_list; - } wd_digest_setting; - -+struct wd_digest_stream_data { -+ /* Long hash mode, first and middle block misaligned data */ -+ unsigned char partial_block[MAX_BLOCK_SIZE]; -+ __u32 partial_bytes; -+ /* Total data length for stream mode */ -+ __u64 long_data_len; -+ /* -+ * Notify the stream message state, zero is frist message, -+ * non-zero is middle or final message. -+ */ -+ int msg_state; -+}; -+ - struct wd_digest_sess { - char *alg_name; - enum wd_digest_type alg; -@@ -53,14 +67,7 @@ struct wd_digest_sess { - unsigned char key[MAX_HMAC_KEY_SIZE]; - __u32 key_bytes; - void *sched_key; -- /* -- * Notify the stream message state, zero is frist message, -- * non-zero is middle or final message. -- */ -- int msg_state; -- -- /* Total data length for stream mode */ -- __u64 long_data_len; -+ struct wd_digest_stream_data stream_data; - }; - - struct wd_env_config wd_digest_env_config; -@@ -536,12 +543,12 @@ static void fill_request_msg(struct wd_digest_msg *msg, - memcpy(&msg->req, req, sizeof(struct wd_digest_req)); - - if (unlikely(req->has_next == WD_DIGEST_STREAM_END)) { -- sess->long_data_len = req->long_data_len; -- sess->msg_state = WD_DIGEST_DOING; -+ sess->stream_data.long_data_len = req->long_data_len; -+ sess->stream_data.msg_state = WD_DIGEST_DOING; - req->has_next = WD_DIGEST_END; - } else if (unlikely(req->has_next == WD_DIGEST_STREAM_DOING)) { -- sess->long_data_len = req->long_data_len; -- sess->msg_state = WD_DIGEST_DOING; -+ sess->stream_data.long_data_len = req->long_data_len; -+ sess->stream_data.msg_state = WD_DIGEST_DOING; - req->has_next = WD_DIGEST_DOING; - } - -@@ -557,10 +564,12 @@ static void fill_request_msg(struct wd_digest_msg *msg, - msg->out_bytes = req->out_bytes; - msg->data_fmt = req->data_fmt; - msg->has_next = req->has_next; -- msg->long_data_len = sess->long_data_len + req->in_bytes; -+ msg->long_data_len = sess->stream_data.long_data_len + req->in_bytes; -+ msg->partial_block = sess->stream_data.partial_block; -+ msg->partial_bytes = sess->stream_data.partial_bytes; - - /* Use iv_bytes to store the stream message state */ -- msg->iv_bytes = sess->msg_state; -+ msg->iv_bytes = sess->stream_data.msg_state; - } - - static int send_recv_sync(struct wd_ctx_internal *ctx, struct wd_digest_sess *dsess, -@@ -579,17 +588,22 @@ static int send_recv_sync(struct wd_ctx_internal *ctx, struct wd_digest_sess *ds - if (unlikely(ret)) - return ret; - -- /* After a stream mode job was done, update session long_data_len */ -+ /* -+ * After a stream mode job was done, update session -+ * long_data_len and partial_bytes. -+ */ - if (msg->has_next) { - /* Long hash(first and middle message) */ -- dsess->long_data_len += msg->in_bytes; -+ dsess->stream_data.long_data_len += msg->in_bytes; -+ dsess->stream_data.partial_bytes = msg->partial_bytes; - } else if (msg->iv_bytes) { - /* Long hash(final message) */ -- dsess->long_data_len = 0; -+ dsess->stream_data.long_data_len = 0; -+ dsess->stream_data.partial_bytes = 0; - } - - /* Update session message state */ -- dsess->msg_state = msg->has_next; -+ dsess->stream_data.msg_state = msg->has_next; - - return 0; - } --- -2.25.1 - diff --git a/0011-uadk-digest-add-wd_ctx_spin_lock-function.patch b/0011-uadk-digest-add-wd_ctx_spin_lock-function.patch deleted file mode 100644 index 6af2e7e..0000000 --- a/0011-uadk-digest-add-wd_ctx_spin_lock-function.patch +++ /dev/null @@ -1,77 +0,0 @@ -From b06161de909136e59ecd7f148ef7e8ba72652e34 Mon Sep 17 00:00:00 2001 -From: Weili Qian -Date: Mon, 5 Feb 2024 17:27:17 +0800 -Subject: [PATCH 11/44] uadk/digest: add wd_ctx_spin_lock function - -In synchronous mode, to protect hardware queue resources and -prevent multiple threads from sending packets to the same queue -at the same time, lock is added before packets are sent in function -send_recv_sync(). - -In non-hard computing scenarios, the resources are independent, -and multiple synchronization threads can process at the same time. -If lock is added before packets are sent, the multi-thread performance -deteriorates. Therefore, the wd_ctx_spin_lock and wd_ctx_spin_unlock -interfaces are added. In non-hard computing scenarios, the lock -is not added. - -Signed-off-by: Weili Qian ---- - include/wd_util.h | 23 +++++++++++++++++++++++ - wd_digest.c | 4 ++-- - 2 files changed, 25 insertions(+), 2 deletions(-) - -diff --git a/include/wd_util.h b/include/wd_util.h -index 3059ac1..f217f0f 100644 ---- a/include/wd_util.h -+++ b/include/wd_util.h -@@ -527,6 +527,29 @@ static inline void wd_dfx_msg_cnt(struct wd_ctx_config_internal *config, - config->msg_cnt[sqn]++; - } - -+/** -+ * wd_ctx_spin_lock() - Lock interface, which is used in the synchronization process. -+ * @ctx: queue context. -+ * @type: the type of the driver. -+ * -+ * If the drvier type is not UADK_ALG_HW, the lock is not required. -+ */ -+static inline void wd_ctx_spin_lock(struct wd_ctx_internal *ctx, int type) -+{ -+ if (type != UADK_ALG_HW) -+ return; -+ -+ pthread_spin_lock(&ctx->lock); -+} -+ -+static inline void wd_ctx_spin_unlock(struct wd_ctx_internal *ctx, int type) -+{ -+ if (type != UADK_ALG_HW) -+ return; -+ -+ pthread_spin_unlock(&ctx->lock); -+} -+ - #ifdef __cplusplus - } - #endif -diff --git a/wd_digest.c b/wd_digest.c -index dba2f95..c59184d 100644 ---- a/wd_digest.c -+++ b/wd_digest.c -@@ -581,10 +581,10 @@ static int send_recv_sync(struct wd_ctx_internal *ctx, struct wd_digest_sess *ds - msg_handle.send = wd_digest_setting.driver->send; - msg_handle.recv = wd_digest_setting.driver->recv; - -- pthread_spin_lock(&ctx->lock); -+ wd_ctx_spin_lock(ctx, wd_digest_setting.driver->calc_type); - ret = wd_handle_msg_sync(wd_digest_setting.driver, &msg_handle, ctx->ctx, - msg, NULL, wd_digest_setting.config.epoll_en); -- pthread_spin_unlock(&ctx->lock); -+ wd_ctx_spin_unlock(ctx, wd_digest_setting.driver->calc_type); - if (unlikely(ret)) - return ret; - --- -2.25.1 - diff --git a/0011-uadk-v1-fix-for-sec_dump_bd.patch b/0011-uadk-v1-fix-for-sec_dump_bd.patch new file mode 100644 index 0000000..aad73fc --- /dev/null +++ b/0011-uadk-v1-fix-for-sec_dump_bd.patch @@ -0,0 +1,68 @@ +From ae15a43b77e69b87e464bc350a6768ae51d253f3 Mon Sep 17 00:00:00 2001 +From: Wenkai Lin +Date: Tue, 20 Aug 2024 10:46:50 +0800 +Subject: [PATCH 11/16] uadk/v1: fix for sec_dump_bd + +Fix for uninit parameters and wrong data type. + +Signed-off-by: Wenkai Lin +Signed-off-by: Qi Tao +--- + v1/drv/hisi_sec_udrv.c | 13 +++++-------- + 1 file changed, 5 insertions(+), 8 deletions(-) + +diff --git a/v1/drv/hisi_sec_udrv.c b/v1/drv/hisi_sec_udrv.c +index 36b93e6..ac6df5f 100644 +--- a/v1/drv/hisi_sec_udrv.c ++++ b/v1/drv/hisi_sec_udrv.c +@@ -1738,7 +1738,7 @@ int qm_fill_digest_bd3_sqe(void *message, struct qm_queue_info *info, __u16 i) + info->req_cache[i] = msg; + + #ifdef DEBUG_LOG +- sec_dump_bd((unsigned int *)sqe, SQE_BYTES_NUMS); ++ sec_dump_bd((unsigned char *)temp, SQE_BYTES_NUMS); + #endif + + return WD_SUCCESS; +@@ -1961,10 +1961,7 @@ int qm_parse_cipher_bd3_sqe(void *msg, const struct qm_queue_info *info, + } + + #ifdef DEBUG_LOG +- if (sqe3->type == BD_TYPE3) +- sec_dump_bd((unsigned char *)sqe3, SQE_BYTES_NUMS); +- else +- sec_dump_bd((unsigned char *)sqe, SQE_BYTES_NUMS); ++ sec_dump_bd((unsigned char *)msg, SQE_BYTES_NUMS); + #endif + + return 1; +@@ -2515,7 +2512,7 @@ int qm_fill_aead_bd3_sqe(void *message, struct qm_queue_info *info, __u16 i) + info->req_cache[i] = msg; + + #ifdef DEBUG_LOG +- sec_dump_bd((unsigned char *)sqe, SQE_BYTES_NUMS); ++ sec_dump_bd((unsigned char *)temp, SQE_BYTES_NUMS); + #endif + + return ret; +@@ -2602,7 +2599,7 @@ int qm_parse_aead_bd3_sqe(void *msg, const struct qm_queue_info *info, + } + + #ifdef DEBUG_LOG +- sec_dump_bd((unsigned char *)sqe, SQE_BYTES_NUMS); ++ sec_dump_bd((unsigned char *)msg, SQE_BYTES_NUMS); + #endif + + return 1; +@@ -2669,7 +2666,7 @@ int qm_parse_digest_bd3_sqe(void *msg, const struct qm_queue_info *info, + } + + #ifdef DEBUG_LOG +- sec_dump_bd((unsigned int *)sqe, SQE_BYTES_NUMS); ++ sec_dump_bd((unsigned char *)msg, SQE_BYTES_NUMS); + #endif + + return 1; +-- +2.25.1 + diff --git a/0012-uadk-remove-redundant-header-file-in-makefile.patch b/0012-uadk-remove-redundant-header-file-in-makefile.patch deleted file mode 100644 index e07651b..0000000 --- a/0012-uadk-remove-redundant-header-file-in-makefile.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 415b2d379fd74e1e115c9f15b86e976f5c5addb7 Mon Sep 17 00:00:00 2001 -From: Zhiqi Song -Date: Tue, 12 Mar 2024 11:38:46 +0800 -Subject: [PATCH 12/44] uadk: remove redundant header file in makefile - -Remove wrong 'wd_hpre_udrv.h' of hpre. - -Signed-off-by: Zhiqi Song ---- - Makefile.am | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Makefile.am b/Makefile.am -index 64cfa44..25853eb 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -86,7 +86,7 @@ libhisi_sec_la_SOURCES=drv/hisi_sec.c drv/hisi_qm_udrv.c \ - hisi_qm_udrv.h wd_cipher_drv.h wd_aead_drv.h aes.h galois.h - - libhisi_hpre_la_SOURCES=drv/hisi_hpre.c drv/hisi_qm_udrv.c \ -- hisi_qm_udrv.h wd_hpre_drv.h -+ hisi_qm_udrv.h - if WD_STATIC_DRV - AM_CFLAGS += -DWD_STATIC_DRV -fPIC - AM_CFLAGS += -DWD_NO_LOG --- -2.25.1 - diff --git a/0012-uadk-v1-fix-for-wd_recv_sync-print.patch b/0012-uadk-v1-fix-for-wd_recv_sync-print.patch new file mode 100644 index 0000000..4c277b2 --- /dev/null +++ b/0012-uadk-v1-fix-for-wd_recv_sync-print.patch @@ -0,0 +1,46 @@ +From 31e9ab6950e4b4f68f528120e500f83a8150b7e0 Mon Sep 17 00:00:00 2001 +From: Wenkai Lin +Date: Tue, 20 Aug 2024 10:47:59 +0800 +Subject: [PATCH 12/16] uadk/v1: fix for wd_recv_sync print + +wd_recv_sync should print more information when return. + +Signed-off-by: Wenkai Lin +Signed-off-by: Qi Tao +--- + v1/wd.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/v1/wd.c b/v1/wd.c +index 4286bbe..02bc49c 100644 +--- a/v1/wd.c ++++ b/v1/wd.c +@@ -688,8 +688,10 @@ int wd_wait(struct wd_queue *q, __u16 ms) + fds[0].events = POLLIN; + + ret = poll(fds, 1, ms); +- if (unlikely(ret < 0)) ++ if (unlikely(ret < 0)) { ++ WD_ERR("failed to poll a queue!\n"); + return -WD_ENODEV; ++ } + + /* return 0 for no data, 1 for new message */ + return ret; +@@ -700,8 +702,11 @@ int wd_recv_sync(struct wd_queue *q, void **resp, __u16 ms) + int ret; + + ret = wd_wait(q, ms); +- if (likely(ret > 0)) +- return wd_recv(q, resp); ++ if (likely(ret > 0)) { ++ ret = wd_recv(q, resp); ++ if (unlikely(!ret)) ++ WD_ERR("failed to recv data after poll!\n"); ++ } + + return ret; + } +-- +2.25.1 + diff --git a/0013-uadk-isa-ce-support-sm3-ce-instruction.patch b/0013-uadk-isa-ce-support-sm3-ce-instruction.patch deleted file mode 100644 index 4705b71..0000000 --- a/0013-uadk-isa-ce-support-sm3-ce-instruction.patch +++ /dev/null @@ -1,1888 +0,0 @@ -From da5f058d30f6d7eb28b4afbe27633d7664ba0961 Mon Sep 17 00:00:00 2001 -From: Zhiqi Song -Date: Mon, 11 Mar 2024 18:07:22 +0800 -Subject: [PATCH 13/44] uadk/isa-ce: support sm3 ce instruction - -Support sync sm3 ce instruction, users can use ce -instruction to accelerate sm3 sync task through init2 -related functions. - -This patch also includes: -1. Add compile parameter and related file to support -isa-ce library. -2. Check whether the platform supports the CE instruction -in alg driver register process. -3. Make HW driver and INSTR driver of the same alg can -be requested at the same time. -4. Support sm3 ce block mode and stream mode for sm3-normal -and hmac-sm3. - -Signed-off-by: Zhiqi Song ---- - Makefile.am | 15 +- - configure.ac | 3 + - drv/isa_ce_sm3.c | 401 ++++++++++++++++++++ - drv/isa_ce_sm3.h | 86 +++++ - drv/isa_ce_sm3_armv8.S | 765 ++++++++++++++++++++++++++++++++++++++ - include/drv/arm_arch_ce.h | 199 ++++++++++ - include/wd_alg.h | 43 +++ - wd_alg.c | 32 +- - wd_digest.c | 2 +- - wd_sched.c | 2 +- - wd_util.c | 87 ++++- - 11 files changed, 1616 insertions(+), 19 deletions(-) - create mode 100644 drv/isa_ce_sm3.c - create mode 100644 drv/isa_ce_sm3.h - create mode 100644 drv/isa_ce_sm3_armv8.S - create mode 100644 include/drv/arm_arch_ce.h - -diff --git a/Makefile.am b/Makefile.am -index 25853eb..19eab30 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -43,7 +43,8 @@ nobase_pkginclude_HEADERS = v1/wd.h v1/wd_cipher.h v1/wd_aead.h v1/uacce.h v1/wd - lib_LTLIBRARIES=libwd.la libwd_comp.la libwd_crypto.la - - uadk_driversdir=$(libdir)/uadk --uadk_drivers_LTLIBRARIES=libhisi_sec.la libhisi_hpre.la libhisi_zip.la -+uadk_drivers_LTLIBRARIES=libhisi_sec.la libhisi_hpre.la libhisi_zip.la \ -+ libisa_ce.la - - libwd_la_SOURCES=wd.c wd_mempool.c wd.h wd_alg.c wd_alg.h \ - v1/wd.c v1/wd.h v1/wd_adapter.c v1/wd_adapter.h \ -@@ -87,6 +88,10 @@ libhisi_sec_la_SOURCES=drv/hisi_sec.c drv/hisi_qm_udrv.c \ - - libhisi_hpre_la_SOURCES=drv/hisi_hpre.c drv/hisi_qm_udrv.c \ - hisi_qm_udrv.h -+ -+libisa_ce_la_SOURCES=drv/isa_ce_sm3.c drv/isa_ce_sm3_armv8.S arm_arch_ce.h \ -+ drv/isa_ce_sm3.h -+ - if WD_STATIC_DRV - AM_CFLAGS += -DWD_STATIC_DRV -fPIC - AM_CFLAGS += -DWD_NO_LOG -@@ -106,6 +111,10 @@ libhisi_sec_la_DEPENDENCIES = libwd.la libwd_crypto.la - - libhisi_hpre_la_LIBADD = $(libwd_la_OBJECTS) $(libwd_crypto_la_OBJECTS) - libhisi_hpre_la_DEPENDENCIES = libwd.la libwd_crypto.la -+ -+libisa_ce_la_LIBADD = $(libwd_la_OBJECTS) $(libwd_crypto_la_OBJECTS) -+libisa_ce_la_DEPENDENCIES = libwd.la libwd_crypto.la -+ - else - UADK_WD_SYMBOL= -Wl,--version-script,$(top_srcdir)/libwd.map - UADK_CRYPTO_SYMBOL= -Wl,--version-script,$(top_srcdir)/libwd_crypto.map -@@ -134,6 +143,10 @@ libhisi_sec_la_DEPENDENCIES= libwd.la libwd_crypto.la - libhisi_hpre_la_LIBADD= -lwd -lwd_crypto - libhisi_hpre_la_LDFLAGS=$(UADK_VERSION) - libhisi_hpre_la_DEPENDENCIES= libwd.la libwd_crypto.la -+ -+libisa_ce_la_LIBADD= -lwd -lwd_crypto -+libisa_ce_la_LDFLAGS=$(UADK_VERSION) -+libisa_ce_la_DEPENDENCIES= libwd.la libwd_crypto.la - endif # WD_STATIC_DRV - - pkgconfigdir = $(libdir)/pkgconfig -diff --git a/configure.ac b/configure.ac -index b198417..4ed111e 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -21,6 +21,9 @@ LT_INIT - AC_SUBST([hardcode_into_libs], [no]) - AM_PROG_CC_C_O - -+# Support assembler -+AM_PROG_AS -+ - AC_ARG_ENABLE([debug-log], - AS_HELP_STRING([--enable-debug-log], [enable debug logging globally]), - [ AS_IF([test "x$enable_debug_log" = "xyes"], -diff --git a/drv/isa_ce_sm3.c b/drv/isa_ce_sm3.c -new file mode 100644 -index 0000000..f16bdd3 ---- /dev/null -+++ b/drv/isa_ce_sm3.c -@@ -0,0 +1,401 @@ -+// SPDX-License-Identifier: Apache-2.0 -+/* -+ * Copyright 2011-2022 The OpenSSL Project Authors. All Rights Reserved. -+ * -+ * Licensed under the Apache License 2.0 (the "License"). You may not use -+ * this file except in compliance with the License. You can obtain a copy -+ * in the file LICENSE in the source distribution or at -+ * https://www.openssl.org/source/license.html -+ */ -+/* -+ * Copyright 2023 Huawei Technologies Co.,Ltd. All rights reserved. -+ */ -+ -+#include -+#include -+#include -+#include "drv/isa_ce_sm3.h" -+#include "drv/wd_digest_drv.h" -+#include "wd_digest.h" -+#include "wd_util.h" -+ -+typedef void (sm3_ce_block_fn)(__u32 word_reg[SM3_STATE_WORDS], -+ const unsigned char *src, size_t blocks); -+ -+static int sm3_ce_drv_init(struct wd_alg_driver *drv, void *conf); -+static void sm3_ce_drv_exit(struct wd_alg_driver *drv); -+static int sm3_ce_drv_send(struct wd_alg_driver *drv, handle_t ctx, void *digest_msg); -+static int sm3_ce_drv_recv(struct wd_alg_driver *drv, handle_t ctx, void *digest_msg); -+static int sm3_ce_get_usage(void *param); -+ -+static struct wd_alg_driver sm3_ce_alg_driver = { -+ .drv_name = "isa_ce_sm3", -+ .alg_name = "sm3", -+ .calc_type = UADK_ALG_CE_INSTR, -+ .priority = 200, -+ .queue_num = 1, -+ .op_type_num = 1, -+ .fallback = 0, -+ .init = sm3_ce_drv_init, -+ .exit = sm3_ce_drv_exit, -+ .send = sm3_ce_drv_send, -+ .recv = sm3_ce_drv_recv, -+ .get_usage = sm3_ce_get_usage, -+}; -+ -+static void __attribute__((constructor)) sm3_ce_probe(void) -+{ -+ int ret; -+ -+ WD_INFO("Info: register SM3 CE alg driver!\n"); -+ ret = wd_alg_driver_register(&sm3_ce_alg_driver); -+ if (ret && ret != -WD_ENODEV) -+ WD_ERR("Error: register SM3 CE failed!\n"); -+} -+ -+static void __attribute__((destructor)) sm3_ce_remove(void) -+{ -+ wd_alg_driver_unregister(&sm3_ce_alg_driver); -+} -+ -+static int sm3_ce_get_usage(void *param) -+{ -+ return WD_SUCCESS; -+} -+ -+static inline void sm3_ce_init(struct sm3_ce_ctx *sctx) -+{ -+ sctx->word_reg[0] = SM3_IVA; -+ sctx->word_reg[1] = SM3_IVB; -+ sctx->word_reg[2] = SM3_IVC; -+ sctx->word_reg[3] = SM3_IVD; -+ sctx->word_reg[4] = SM3_IVE; -+ sctx->word_reg[5] = SM3_IVF; -+ sctx->word_reg[6] = SM3_IVG; -+ sctx->word_reg[7] = SM3_IVH; -+} -+ -+static void trans_output_result(__u8 *out_digest, __u32 *word_reg) -+{ -+ size_t i; -+ -+ for (i = 0; i < SM3_STATE_WORDS; i++) -+ PUTU32_TO_U8(out_digest + i * WORD_TO_CHAR_OFFSET, word_reg[i]); -+} -+ -+static void sm3_ce_init_ex(struct sm3_ce_ctx *sctx, __u8 *iv, __u16 iv_bytes) -+{ -+ size_t i; -+ -+ if (iv_bytes != SM3_DIGEST_SIZE) { -+ WD_ERR("invalid iv size: %u\n", iv_bytes); -+ return; -+ } -+ -+ for (i = 0; i < SM3_STATE_WORDS; i++) -+ PUTU8_TO_U32(sctx->word_reg[i], iv + i * WORD_TO_CHAR_OFFSET); -+} -+ -+static void sm3_ce_update(struct sm3_ce_ctx *sctx, const __u8 *data, -+ size_t data_len, sm3_ce_block_fn *block_fn) -+{ -+ size_t remain_data_len, blk_num; -+ -+ /* Get the data num that need compute currently */ -+ sctx->num &= (SM3_BLOCK_SIZE - 1); -+ -+ if (sctx->num) { -+ remain_data_len = SM3_BLOCK_SIZE - sctx->num; -+ /* If data_len does not enough a block size, then leave it to final */ -+ if (data_len < remain_data_len) { -+ memcpy(sctx->block + sctx->num, data, data_len); -+ sctx->num += data_len; -+ return; -+ } -+ -+ memcpy(sctx->block + sctx->num, data, remain_data_len); -+ block_fn(sctx->word_reg, sctx->block, 1); -+ sctx->nblocks++; -+ data += remain_data_len; -+ data_len -= remain_data_len; -+ } -+ -+ /* Group the filled msg by 512-bits (64-bytes) */ -+ blk_num = data_len / SM3_BLOCK_SIZE; -+ if (blk_num) { -+ block_fn(sctx->word_reg, data, blk_num); -+ sctx->nblocks += blk_num; -+ data += SM3_BLOCK_SIZE * blk_num; -+ data_len -= SM3_BLOCK_SIZE * blk_num; -+ } -+ -+ sctx->num = data_len; -+ if (data_len) -+ memcpy(sctx->block, data, data_len); -+} -+ -+static void sm3_ce_final(struct sm3_ce_ctx *sctx, __u8 *md, -+ sm3_ce_block_fn *block_fn) -+{ -+ size_t i, offset1, offset2; -+ __u64 nh, nl; -+ -+ sctx->num &= (SM3_BLOCK_SIZE - 1); -+ sctx->block[sctx->num] = SM3_PADDING_BYTE; -+ -+ if (sctx->num <= SM3_BLOCK_SIZE - BIT_TO_BLOCK_OFFSET) { -+ memset(sctx->block + sctx->num + 1, 0, SM3_BLOCK_SIZE - sctx->num - 9); -+ } else { -+ memset(sctx->block + sctx->num + 1, 0, SM3_BLOCK_SIZE - sctx->num - 1); -+ block_fn(sctx->word_reg, sctx->block, 1); -+ memset(sctx->block, 0, SM3_BLOCK_SIZE - 8); -+ } -+ -+ /* -+ * Put the length of the message in bits into the last -+ * 64-bits (penultimate two words). -+ */ -+ offset2 = SM3_BLOCK_SIZE - WORD_TO_CHAR_OFFSET * 2; -+ offset1 = SM3_BLOCK_SIZE - WORD_TO_CHAR_OFFSET; -+ nh = sctx->nblocks >> NH_OFFSET; -+ nl = (sctx->nblocks << BIT_TO_BLOCK_OFFSET) + (sctx->num << BIT_TO_BYTE_OFFSET); -+ PUTU32_TO_U8(sctx->block + offset2 , nh); -+ PUTU32_TO_U8(sctx->block + offset1, nl); -+ -+ block_fn(sctx->word_reg, sctx->block, 1); -+ for (i = 0; i < SM3_STATE_WORDS; i++) -+ PUTU32_TO_U8(md + i * WORD_TO_CHAR_OFFSET, sctx->word_reg[i]); -+} -+ -+static int do_sm3_ce(struct wd_digest_msg *msg, __u8 *out_digest) -+{ -+ enum hash_block_type block_type; -+ struct sm3_ce_ctx sctx = {0}; -+ size_t data_len, iv_len; -+ __u8 *data, *iv; -+ -+ block_type = get_hash_block_type(msg); -+ data_len = msg->in_bytes; -+ data = msg->in; -+ iv_len = SM3_DIGEST_SIZE; -+ /* Use last output as the iv in current cycle */ -+ iv = msg->out; -+ -+ switch(block_type) { -+ case HASH_SINGLE_BLOCK: -+ sm3_ce_init(&sctx); -+ sm3_ce_update(&sctx, data, data_len, sm3_ce_block_compress); -+ sm3_ce_final(&sctx, out_digest, sm3_ce_block_compress); -+ break; -+ case HASH_FRIST_BLOCK: -+ sm3_ce_init(&sctx); -+ sm3_ce_update(&sctx, data, data_len, sm3_ce_block_compress); -+ trans_output_result(out_digest, sctx.word_reg); -+ break; -+ case HASH_MIDDLE_BLOCK: -+ sm3_ce_init_ex(&sctx, iv, iv_len); -+ sm3_ce_update(&sctx, data, data_len, sm3_ce_block_compress); -+ /* Transform the middle result without final padding */ -+ trans_output_result(out_digest, sctx.word_reg); -+ break; -+ case HASH_END_BLOCK: -+ sm3_ce_init_ex(&sctx, iv, iv_len); -+ sm3_ce_update(&sctx, data, data_len, sm3_ce_block_compress); -+ /* Put the whole message length in last 64-bits */ -+ sctx.nblocks = msg->long_data_len / SM3_BLOCK_SIZE; -+ sm3_ce_final(&sctx, out_digest, sm3_ce_block_compress); -+ break; -+ default: -+ WD_ERR("Invalid block type!\n"); -+ return -WD_EINVAL; -+ } -+ -+ if (msg->out_bytes < SM3_DIGEST_SIZE) -+ memcpy(msg->out, out_digest, msg->out_bytes); -+ else -+ memcpy(msg->out, out_digest, SM3_DIGEST_SIZE); -+ -+ memset(&sctx, 0, sizeof(struct sm3_ce_ctx)); -+ -+ return WD_SUCCESS; -+} -+ -+static void sm3_hmac_key_padding(struct hmac_sm3_ctx *hctx, -+ const __u8 *key, size_t key_len) -+{ -+ size_t i; -+ -+ if (key_len <= SM3_BLOCK_SIZE) { -+ memcpy(hctx->key, key, key_len); -+ memset(hctx->key + key_len, 0, SM3_BLOCK_SIZE - key_len); -+ } else { -+ sm3_ce_init(&hctx->sctx); -+ sm3_ce_update(&hctx->sctx, key, key_len, sm3_ce_block_compress); -+ sm3_ce_final(&hctx->sctx, hctx->key, sm3_ce_block_compress); -+ /* Pad key to SM3_BLOCK_SIZE after hash */ -+ memset(hctx->key + SM3_DIGEST_SIZE, 0, -+ SM3_BLOCK_SIZE - SM3_DIGEST_SIZE); -+ } -+ -+ for (i = 0; i < SM3_BLOCK_SIZE; i++) { -+ hctx->key[i] ^= IPAD_DATA; -+ } -+} -+ -+static void sm3_ce_hmac_init(struct hmac_sm3_ctx *hctx, const __u8 *key, size_t key_len) -+{ -+ sm3_hmac_key_padding(hctx, key, key_len); -+ -+ /* Ipadded key is the first block to hash in first cycle */ -+ sm3_ce_init(&hctx->sctx); -+ sm3_ce_update(&hctx->sctx, hctx->key, SM3_BLOCK_SIZE, sm3_ce_block_compress); -+} -+ -+static void sm3_ce_hmac_update(struct hmac_sm3_ctx *hctx, const __u8 *data, size_t data_len) -+{ -+ sm3_ce_update(&hctx->sctx, data, data_len, sm3_ce_block_compress); -+} -+ -+static void sm3_ce_hmac_final(struct hmac_sm3_ctx *hctx, __u8 *out_hmac) -+{ -+ __u8 digest[SM3_DIGEST_SIZE] = {0}; -+ size_t i; -+ -+ for (i = 0; i < SM3_BLOCK_SIZE; i++) { -+ hctx->key[i] ^= (IPAD_DATA ^ OPAD_DATA); -+ } -+ -+ /* Compute the last data from update process */ -+ sm3_ce_final(&hctx->sctx, digest, sm3_ce_block_compress); -+ -+ /* Opadded key is the first block to hash in second cycle */ -+ memset(&hctx->sctx, 0, sizeof(struct sm3_ce_ctx)); -+ sm3_ce_init(&hctx->sctx); -+ sm3_ce_update(&hctx->sctx, hctx->key, SM3_BLOCK_SIZE, sm3_ce_block_compress); -+ -+ /* Compute the the first cycle result */ -+ sm3_ce_update(&hctx->sctx, digest, SM3_DIGEST_SIZE, sm3_ce_block_compress); -+ sm3_ce_final(&hctx->sctx, out_hmac, sm3_ce_block_compress); -+} -+ -+static int do_hmac_sm3_ce(struct wd_digest_msg *msg, __u8 *out_hmac) -+{ -+ size_t data_len, key_len, iv_len; -+ enum hash_block_type block_type; -+ struct hmac_sm3_ctx hctx = {0}; -+ __u8 *data, *key, *iv; -+ -+ data_len = msg->in_bytes; -+ data = msg->in; -+ key = msg->key; -+ key_len = msg->key_bytes; -+ iv_len = SM3_DIGEST_SIZE; -+ /* Use last output as the iv in current cycle */ -+ iv = msg->out; -+ -+ if (!key_len) { -+ WD_ERR("invalid hmac key_len is 0!\n"); -+ return -WD_EINVAL; -+ } -+ -+ block_type = get_hash_block_type(msg); -+ switch(block_type) { -+ case HASH_SINGLE_BLOCK: -+ sm3_ce_hmac_init(&hctx, key, key_len); -+ sm3_ce_hmac_update(&hctx, data, data_len); -+ sm3_ce_hmac_final(&hctx, out_hmac); -+ break; -+ case HASH_FRIST_BLOCK: -+ sm3_ce_hmac_init(&hctx, key, key_len); -+ sm3_ce_hmac_update(&hctx, data, data_len); -+ trans_output_result(out_hmac, hctx.sctx.word_reg); -+ break; -+ case HASH_MIDDLE_BLOCK: -+ sm3_ce_init_ex(&(hctx.sctx), iv, iv_len); -+ sm3_ce_hmac_update(&hctx, data, data_len); -+ trans_output_result(out_hmac, hctx.sctx.word_reg); -+ break; -+ case HASH_END_BLOCK: -+ sm3_hmac_key_padding(&hctx, key, key_len); -+ sm3_ce_init_ex(&(hctx.sctx), iv, iv_len); -+ sm3_ce_hmac_update(&hctx, data, data_len); -+ hctx.sctx.nblocks = msg->long_data_len / SM3_BLOCK_SIZE + KEY_BLOCK_NUM; -+ sm3_ce_hmac_final(&hctx, out_hmac); -+ break; -+ default: -+ WD_ERR("Invalid block type!\n"); -+ return -WD_EINVAL; -+ } -+ -+ if (msg->out_bytes < SM3_DIGEST_SIZE) -+ memcpy(msg->out, out_hmac, msg->out_bytes); -+ else -+ memcpy(msg->out, out_hmac, SM3_DIGEST_SIZE); -+ -+ memset(&hctx, 0, sizeof(struct hmac_sm3_ctx)); -+ -+ return WD_SUCCESS; -+} -+ -+static int sm3_ce_drv_send(struct wd_alg_driver *drv, handle_t ctx, void *digest_msg) -+{ -+ struct wd_digest_msg *msg = (struct wd_digest_msg *)digest_msg; -+ __u8 digest[SM3_DIGEST_SIZE] = {0}; -+ int ret; -+ -+ if (!msg) { -+ WD_ERR("invalid: digest_msg is NULL!\n"); -+ return -WD_EINVAL; -+ } -+ -+ if (msg->data_fmt == WD_SGL_BUF) { -+ WD_ERR("invalid: SM3 CE driver do not support sgl data format!\n"); -+ return -WD_EINVAL; -+ } -+ -+ if (msg->mode == WD_DIGEST_NORMAL) { -+ ret = do_sm3_ce(msg, digest); -+ } else if (msg->mode == WD_DIGEST_HMAC) { -+ ret = do_hmac_sm3_ce(msg, digest); -+ } else { -+ WD_ERR("invalid digest mode!\n"); -+ ret = -WD_EINVAL; -+ } -+ -+ return ret; -+} -+ -+static int sm3_ce_drv_recv(struct wd_alg_driver *drv, handle_t ctx, void *digest_msg) -+{ -+ return WD_SUCCESS; -+} -+ -+static int sm3_ce_drv_init(struct wd_alg_driver *drv, void *conf) -+{ -+ struct wd_ctx_config_internal *config = (struct wd_ctx_config_internal *)conf; -+ struct sm3_ce_drv_ctx *sctx = (struct sm3_ce_drv_ctx *)drv->priv; -+ -+ config->epoll_en = false; -+ -+ /* return if already inited */ -+ if (sctx) -+ return WD_SUCCESS; -+ sctx = malloc(sizeof(struct sm3_ce_drv_ctx)); -+ if (!sctx) -+ return -WD_EINVAL; -+ -+ memcpy(&sctx->config, config, sizeof(struct wd_ctx_config_internal)); -+ -+ return WD_SUCCESS; -+} -+ -+static void sm3_ce_drv_exit(struct wd_alg_driver *drv) -+{ -+ struct sm3_ce_drv_ctx *sctx = (struct sm3_ce_drv_ctx *)drv->priv; -+ -+ if (!sctx) -+ return; -+ -+ free(sctx); -+ drv->priv = NULL; -+} -diff --git a/drv/isa_ce_sm3.h b/drv/isa_ce_sm3.h -new file mode 100644 -index 0000000..13edb0a ---- /dev/null -+++ b/drv/isa_ce_sm3.h -@@ -0,0 +1,86 @@ -+/* SPDX-License-Identifier: Apache-2.0 */ -+/* Copyright 2020-2021 Huawei Technologies Co.,Ltd. All rights reserved. */ -+#ifndef __ISA_CE_SM3_H -+#define __ISA_CE_SM3_H -+ -+#include "wd_alg_common.h" -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+#define SM3_DIGEST_SIZE 32 -+#define SM3_BLOCK_SIZE 64 -+#define SM3_STATE_WORDS 8 -+#define HMAC_BLOCK_SIZE 64 -+#define WORD_TO_CHAR_OFFSET 4 -+#define SM3_PADDING_BYTE 0x80 -+#define NH_OFFSET 23 -+#define BIT_TO_BLOCK_OFFSET 9 -+#define BIT_TO_BYTE_OFFSET 3 -+#define IPAD_DATA 0x36 -+#define OPAD_DATA 0x5c -+#define KEY_BLOCK_NUM 1 -+ -+#define SM3_IVA 0x7380166f -+#define SM3_IVB 0x4914b2b9 -+#define SM3_IVC 0x172442d7 -+#define SM3_IVD 0xda8a0600 -+#define SM3_IVE 0xa96f30bc -+#define SM3_IVF 0x163138aa -+#define SM3_IVG 0xe38dee4d -+#define SM3_IVH 0xb0fb0e4e -+ -+#define PUTU32_TO_U8(dst, src) \ -+ ((dst)[0] = (__u8)((src) >> 24), \ -+ (dst)[1] = (__u8)((src) >> 16), \ -+ (dst)[2] = (__u8)((src) >> 8), \ -+ (dst)[3] = (__u8)(src)) -+ -+#define PUTU8_TO_U32(dst, src) \ -+ ((dst) = (((__u32)(src)[0]) << 24) + \ -+ (((__u32)(src)[1]) << 16) + \ -+ (((__u32)(src)[2]) << 8) + \ -+ ((__u32)(src)[3])) -+ -+struct sm3_ce_ctx { -+ /* -+ * Use an array to represent the eight 32-bits word registers, -+ * SM3_IVA, SM3_IVB, ..., SM3_IVH, save IV and the final digest. -+ */ -+ __u32 word_reg[SM3_STATE_WORDS]; -+ /* -+ * The length (in bits) of all the msg fragments, the length of the -+ * whole msg should less than 2^64 bit, a msg block is 512-bits, -+ * make a 64-bits number in two parts, low 32-bits - 'Nl' and -+ * high 32-bits - 'Nh'. -+ */ -+ __u64 nblocks; -+ /* -+ * Message block, a msg block is 512-bits, use sixteen __u32 type -+ * element to store it, used in B(i) = W0||W1||W2||...||W15. -+ * Use a __u8 array to replace the 32-bit array. -+ */ -+ __u8 block[SM3_BLOCK_SIZE]; -+ /* The number of msg that need to compute in current cycle or turn. */ -+ size_t num; -+}; -+ -+struct hmac_sm3_ctx { -+ struct sm3_ce_ctx sctx; -+ /* Save user key */ -+ __u8 key[SM3_BLOCK_SIZE]; -+}; -+ -+struct sm3_ce_drv_ctx { -+ struct wd_ctx_config_internal config; -+}; -+ -+void sm3_ce_block_compress(__u32 word_reg[SM3_STATE_WORDS], -+ const __u8 *src, size_t blocks); -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif /* __ISA_CE_SM3_H */ -diff --git a/drv/isa_ce_sm3_armv8.S b/drv/isa_ce_sm3_armv8.S -new file mode 100644 -index 0000000..3d08e2d ---- /dev/null -+++ b/drv/isa_ce_sm3_armv8.S -@@ -0,0 +1,765 @@ -+/* SPDX-License-Identifier: Apache-2.0 */ -+/* -+ * Copyright 2011-2022 The OpenSSL Project Authors. All Rights Reserved. -+ * -+ * Licensed under the Apache License 2.0 (the "License"). You may not use -+ * this file except in compliance with the License. You can obtain a copy -+ * in the file LICENSE in the source distribution or at -+ * https://www.openssl.org/source/license.html -+ */ -+ -+#include "../include/drv/arm_arch_ce.h" -+ -+.arch armv8.2-a -+.text -+.globl sm3_ce_block_compress -+.type sm3_ce_block_compress,%function -+.align 5 -+sm3_ce_block_compress: -+ AARCH64_VALID_CALL_TARGET -+/* Loads state */ -+ /* -+ * Loads multiple single-element structures from memory(X0 register) and -+ * writes result to two SIMD&FP registers(v5.4s and v6.4s). -+ */ -+ ld1 {v5.4s,v6.4s}, [x0] /* 4s -- 4 * 32bit */ -+ /* -+ * Reverses the order of 32-bit(type:s) elements in each doubleword of the -+ * vector in the src SIMD&FP register(v5), places the result into a vector -+ * and writes the vector to the dst SIDM&FP register(v5). -+ */ -+ rev64 v5.4s, v5.4s -+ rev64 v6.4s, v6.4s -+ /* -+ * Extracts the lowest vector elements from the second src SIMD&FP register, -+ * and highest vector elements from the first source SIMD&FP register, -+ * concatenates the result into a vector, and writes the vector to the -+ * dst SIMD&FP register vector. #8 means the numbered byte element to be extracted. -+ * Format: ext , , , -+ * #imm: immediate data. -+ */ -+ ext v5.16b, v5.16b, v5.16b, #8 /* 16b -- 16 * 8bit */ -+ ext v6.16b, v6.16b, v6.16b, #8 -+ /* From PC-relative address adds an immediate value to form a PC-relative -+ * address, and writes the result to the dst register. -+ */ -+ adr x8, .Tj /* 'Tj' is the constant defined in SM3 protocol */ -+ /* Loads pair of register calculates an address from a base register value -+ * and an immediate offset, loads two 32-bit words from memory, and writes -+ * them to two registers. */ -+ ldp s16, s17, [x8] /* 'sn' is the scalar register, 'vn' is the vector register */ -+ -+.Loop: -+/* Loads input */ -+ /* -+ * Loads multipule single-element structrue to four registers. -+ * #64 is the immediate offset variant, it is the post-index immediate offset. -+ * Loads the input src data, msg to be hashed. -+ */ -+ ld1 {v0.16b,v1.16b,v2.16b,v3.16b}, [x1], #64 -+ /* -+ * Substracts an optionally-shifted immediate value from a register value, -+ * and writes the result to the dst register. -+ */ -+ sub w2, w2, #1 -+ -+ /* Copies the value in a src register to the dst register. */ -+ mov v18.16b, v5.16b -+ mov v19.16b, v6.16b -+ -+#ifndef __ARMEB__ -+ rev32 v0.16b, v0.16b -+ rev32 v1.16b, v1.16b -+ rev32 v2.16b, v2.16b -+ rev32 v3.16b, v3.16b -+#endif -+ -+ ext v20.16b, v16.16b, v16.16b, #4 -+ /* s4 = w7 | w8 | w9 | w10 */ -+ ext v4.16b, v1.16b, v2.16b, #12 -+ /* vtmp1 = w3 | w4 | w5 | w6 */ -+ ext v22.16b, v0.16b, v1.16b, #12 -+ /* vtmp2 = w10 | w11 | w12 | w13 */ -+ ext v23.16b, v2.16b, v3.16b, #8 -+ /* sm3partw1 v4.4s, v0.4s, v3.4s */ -+.inst 0xce63c004 -+ /* sm3partw2 v4.4s, v23.4s, v22.4s */ -+.inst 0xce76c6e4 -+ eor v22.16b, v0.16b, v1.16b -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1a v5.4s, v23.4s, v22.4s[0] */ -+.inst 0xce5682e5 -+ /* sm3tt2a v6.4s, v23.4s, v0.4s[0] */ -+.inst 0xce408ae6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1a v5.4s, v23.4s, v22.4s[1] */ -+.inst 0xce5692e5 -+ /* sm3tt2a v6.4s, v23.4s, v0.4s[1] */ -+.inst 0xce409ae6 -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1a v5.4s, v23.4s, v22.4s[2] */ -+.inst 0xce56a2e5 -+ /* sm3tt2a v6.4s, v23.4s, v0.4s[2] */ -+.inst 0xce40aae6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1a v5.4s, v23.4s, v22.4s[3] */ -+.inst 0xce56b2e5 -+ /* sm3tt2a v6.4s, v23.4s, v0.4s[3] */ -+.inst 0xce40bae6 -+ /* s4 = w7 | w8 | w9 | w10 */ -+ ext v0.16b, v2.16b, v3.16b, #12 -+ /* vtmp1 = w3 | w4 | w5 | w6 */ -+ ext v22.16b, v1.16b, v2.16b, #12 -+ /* vtmp2 = w10 | w11 | w12 | w13 */ -+ ext v23.16b, v3.16b, v4.16b, #8 -+ /* sm3partw1 v0.4s, v1.4s, v4.4s */ -+.inst 0xce64c020 -+ /* sm3partw2 v0.4s, v23.4s, v22.4s */ -+.inst 0xce76c6e0 -+ eor v22.16b, v1.16b, v2.16b -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1a v5.4s, v23.4s, v22.4s[0] */ -+.inst 0xce5682e5 -+ /* sm3tt2a v6.4s, v23.4s, v1.4s[0] */ -+.inst 0xce418ae6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1a v5.4s, v23.4s, v22.4s[1] */ -+.inst 0xce5692e5 -+ /* sm3tt2a v6.4s, v23.4s, v1.4s[1] */ -+.inst 0xce419ae6 -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1a v5.4s, v23.4s, v22.4s[2] */ -+.inst 0xce56a2e5 -+ /* sm3tt2a v6.4s, v23.4s, v1.4s[2] */ -+.inst 0xce41aae6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1a v5.4s, v23.4s, v22.4s[3] */ -+.inst 0xce56b2e5 -+ /* sm3tt2a v6.4s, v23.4s, v1.4s[3] */ -+.inst 0xce41bae6 -+ /* s4 = w7 | w8 | w9 | w10 */ -+ ext v1.16b, v3.16b, v4.16b, #12 -+ /* vtmp1 = w3 | w4 | w5 | w6 */ -+ ext v22.16b, v2.16b, v3.16b, #12 -+ /* vtmp2 = w10 | w11 | w12 | w13 */ -+ ext v23.16b, v4.16b, v0.16b, #8 -+ /* sm3partw1 v1.4s, v2.4s, v0.4s */ -+.inst 0xce60c041 -+ /* sm3partw2 v1.4s, v23.4s, v22.4s */ -+.inst 0xce76c6e1 -+ eor v22.16b, v2.16b, v3.16b -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1a v5.4s, v23.4s, v22.4s[0] */ -+.inst 0xce5682e5 -+ /* sm3tt2a v6.4s, v23.4s, v2.4s[0] */ -+.inst 0xce428ae6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1a v5.4s, v23.4s, v22.4s[1] */ -+.inst 0xce5692e5 -+ /* sm3tt2a v6.4s, v23.4s, v2.4s[1] */ -+.inst 0xce429ae6 -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1a v5.4s, v23.4s, v22.4s[2] */ -+.inst 0xce56a2e5 -+ /* sm3tt2a v6.4s, v23.4s, v2.4s[2] */ -+.inst 0xce42aae6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1a v5.4s, v23.4s, v22.4s[3] */ -+.inst 0xce56b2e5 -+ /* sm3tt2a v6.4s, v23.4s, v2.4s[3] */ -+.inst 0xce42bae6 -+ /* s4 = w7 | w8 | w9 | w10 */ -+ ext v2.16b, v4.16b, v0.16b, #12 -+ /* vtmp1 = w3 | w4 | w5 | w6 */ -+ ext v22.16b, v3.16b, v4.16b, #12 -+ /* vtmp2 = w10 | w11 | w12 | w13 */ -+ ext v23.16b, v0.16b, v1.16b, #8 -+ /* sm3partw1 v2.4s, v3.4s, v1.4s */ -+.inst 0xce61c062 -+ /* sm3partw2 v2.4s, v23.4s, v22.4s */ -+.inst 0xce76c6e2 -+ eor v22.16b, v3.16b, v4.16b -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1a v5.4s, v23.4s, v22.4s[0] */ -+.inst 0xce5682e5 -+ /* sm3tt2a v6.4s, v23.4s, v3.4s[0] */ -+.inst 0xce438ae6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1a v5.4s, v23.4s, v22.4s[1] */ -+.inst 0xce5692e5 -+ /* sm3tt2a v6.4s, v23.4s, v3.4s[1] */ -+.inst 0xce439ae6 -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1a v5.4s, v23.4s, v22.4s[2] */ -+.inst 0xce56a2e5 -+ /* sm3tt2a v6.4s, v23.4s, v3.4s[2] */ -+.inst 0xce43aae6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1a v5.4s, v23.4s, v22.4s[3] */ -+.inst 0xce56b2e5 -+ /* sm3tt2a v6.4s, v23.4s, v3.4s[3] */ -+.inst 0xce43bae6 -+ ext v20.16b, v17.16b, v17.16b, #4 -+ /* s4 = w7 | w8 | w9 | w10 */ -+ ext v3.16b, v0.16b, v1.16b, #12 -+ /* vtmp1 = w3 | w4 | w5 | w6 */ -+ ext v22.16b, v4.16b, v0.16b, #12 -+ /* vtmp2 = w10 | w11 | w12 | w13 */ -+ ext v23.16b, v1.16b, v2.16b, #8 -+ /* sm3partw1 v3.4s, v4.4s, v2.4s */ -+.inst 0xce62c083 -+ /* sm3partw2 v3.4s, v23.4s, v22.4s */ -+.inst 0xce76c6e3 -+ eor v22.16b, v4.16b, v0.16b -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[0] */ -+.inst 0xce5686e5 -+ /* sm3tt2b v6.4s, v23.4s, v4.4s[0] */ -+.inst 0xce448ee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[1] */ -+.inst 0xce5696e5 -+ /* sm3tt2b v6.4s, v23.4s, v4.4s[1] */ -+.inst 0xce449ee6 -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[2] */ -+.inst 0xce56a6e5 -+ /* sm3tt2b v6.4s, v23.4s, v4.4s[2] */ -+.inst 0xce44aee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[3] */ -+.inst 0xce56b6e5 -+ /* sm3tt2b v6.4s, v23.4s, v4.4s[3] */ -+.inst 0xce44bee6 -+ /* s4 = w7 | w8 | w9 | w10 */ -+ ext v4.16b, v1.16b, v2.16b, #12 -+ /* vtmp1 = w3 | w4 | w5 | w6 */ -+ ext v22.16b, v0.16b, v1.16b, #12 -+ /* vtmp2 = w10 | w11 | w12 | w13 */ -+ ext v23.16b, v2.16b, v3.16b, #8 -+ /* sm3partw1 v4.4s, v0.4s, v3.4s */ -+.inst 0xce63c004 -+ /* sm3partw2 v4.4s, v23.4s, v22.4s */ -+.inst 0xce76c6e4 -+ eor v22.16b, v0.16b, v1.16b -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[0] */ -+.inst 0xce5686e5 -+ /* sm3tt2b v6.4s, v23.4s, v0.4s[0] */ -+.inst 0xce408ee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[1] */ -+.inst 0xce5696e5 -+ /* sm3tt2b v6.4s, v23.4s, v0.4s[1] */ -+.inst 0xce409ee6 -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[2] */ -+.inst 0xce56a6e5 -+ /* sm3tt2b v6.4s, v23.4s, v0.4s[2] */ -+.inst 0xce40aee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[3] */ -+.inst 0xce56b6e5 -+ /* sm3tt2b v6.4s, v23.4s, v0.4s[3] */ -+.inst 0xce40bee6 -+ /* s4 = w7 | w8 | w9 | w10 */ -+ ext v0.16b, v2.16b, v3.16b, #12 -+ /* vtmp1 = w3 | w4 | w5 | w6 */ -+ ext v22.16b, v1.16b, v2.16b, #12 -+ /* vtmp2 = w10 | w11 | w12 | w13 */ -+ ext v23.16b, v3.16b, v4.16b, #8 -+ /* sm3partw1 v0.4s, v1.4s, v4.4s */ -+.inst 0xce64c020 -+ /* sm3partw2 v0.4s, v23.4s, v22.4s */ -+.inst 0xce76c6e0 -+ eor v22.16b, v1.16b, v2.16b -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[0] */ -+.inst 0xce5686e5 -+ /* sm3tt2b v6.4s, v23.4s, v1.4s[0] */ -+.inst 0xce418ee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[1] */ -+.inst 0xce5696e5 -+ /* sm3tt2b v6.4s, v23.4s, v1.4s[1] */ -+.inst 0xce419ee6 -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[2] */ -+.inst 0xce56a6e5 -+ /* sm3tt2b v6.4s, v23.4s, v1.4s[2] */ -+.inst 0xce41aee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[3] */ -+.inst 0xce56b6e5 -+ /* sm3tt2b v6.4s, v23.4s, v1.4s[3] */ -+.inst 0xce41bee6 -+ /* s4 = w7 | w8 | w9 | w10 */ -+ ext v1.16b, v3.16b, v4.16b, #12 -+ /* vtmp1 = w3 | w4 | w5 | w6 */ -+ ext v22.16b, v2.16b, v3.16b, #12 -+ /* vtmp2 = w10 | w11 | w12 | w13 */ -+ ext v23.16b, v4.16b, v0.16b, #8 -+ /* sm3partw1 v1.4s, v2.4s, v0.4s */ -+.inst 0xce60c041 -+ /* sm3partw2 v1.4s, v23.4s, v22.4s */ -+.inst 0xce76c6e1 -+ eor v22.16b, v2.16b, v3.16b -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[0] */ -+.inst 0xce5686e5 -+ /* sm3tt2b v6.4s, v23.4s, v2.4s[0] */ -+.inst 0xce428ee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[1] */ -+.inst 0xce5696e5 -+ /* sm3tt2b v6.4s, v23.4s, v2.4s[1] */ -+.inst 0xce429ee6 -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[2] */ -+.inst 0xce56a6e5 -+ /* sm3tt2b v6.4s, v23.4s, v2.4s[2] */ -+.inst 0xce42aee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[3] */ -+.inst 0xce56b6e5 -+ /* sm3tt2b v6.4s, v23.4s, v2.4s[3] */ -+.inst 0xce42bee6 -+ /* s4 = w7 | w8 | w9 | w10 */ -+ ext v2.16b, v4.16b, v0.16b, #12 -+ /* vtmp1 = w3 | w4 | w5 | w6 */ -+ ext v22.16b, v3.16b, v4.16b, #12 -+ /* vtmp2 = w10 | w11 | w12 | w13 */ -+ ext v23.16b, v0.16b, v1.16b, #8 -+ /* sm3partw1 v2.4s, v3.4s, v1.4s */ -+.inst 0xce61c062 -+ /* sm3partw2 v2.4s, v23.4s, v22.4s */ -+.inst 0xce76c6e2 -+ eor v22.16b, v3.16b, v4.16b -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[0] */ -+.inst 0xce5686e5 -+ /* sm3tt2b v6.4s, v23.4s, v3.4s[0] */ -+.inst 0xce438ee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[1] */ -+.inst 0xce5696e5 -+ /* sm3tt2b v6.4s, v23.4s, v3.4s[1] */ -+.inst 0xce439ee6 -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[2] */ -+.inst 0xce56a6e5 -+ /* sm3tt2b v6.4s, v23.4s, v3.4s[2] */ -+.inst 0xce43aee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[3] */ -+.inst 0xce56b6e5 -+ /* sm3tt2b v6.4s, v23.4s, v3.4s[3] */ -+.inst 0xce43bee6 -+ /* s4 = w7 | w8 | w9 | w10 */ -+ ext v3.16b, v0.16b, v1.16b, #12 -+ /* vtmp1 = w3 | w4 | w5 | w6 */ -+ ext v22.16b, v4.16b, v0.16b, #12 -+ /* vtmp2 = w10 | w11 | w12 | w13 */ -+ ext v23.16b, v1.16b, v2.16b, #8 -+ /* sm3partw1 v3.4s, v4.4s, v2.4s */ -+.inst 0xce62c083 -+ /* sm3partw2 v3.4s, v23.4s, v22.4s */ -+.inst 0xce76c6e3 -+ eor v22.16b, v4.16b, v0.16b -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[0] */ -+.inst 0xce5686e5 -+ /* sm3tt2b v6.4s, v23.4s, v4.4s[0] */ -+.inst 0xce448ee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[1] */ -+.inst 0xce5696e5 -+ /* sm3tt2b v6.4s, v23.4s, v4.4s[1] */ -+.inst 0xce449ee6 -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[2] */ -+.inst 0xce56a6e5 -+ /* sm3tt2b v6.4s, v23.4s, v4.4s[2] */ -+.inst 0xce44aee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[3] */ -+.inst 0xce56b6e5 -+ /* sm3tt2b v6.4s, v23.4s, v4.4s[3] */ -+.inst 0xce44bee6 -+ /* s4 = w7 | w8 | w9 | w10 */ -+ ext v4.16b, v1.16b, v2.16b, #12 -+ /* vtmp1 = w3 | w4 | w5 | w6 */ -+ ext v22.16b, v0.16b, v1.16b, #12 -+ /* vtmp2 = w10 | w11 | w12 | w13 */ -+ ext v23.16b, v2.16b, v3.16b, #8 -+ /* sm3partw1 v4.4s, v0.4s, v3.4s */ -+.inst 0xce63c004 -+ /* sm3partw2 v4.4s, v23.4s, v22.4s */ -+.inst 0xce76c6e4 -+ eor v22.16b, v0.16b, v1.16b -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[0] */ -+.inst 0xce5686e5 -+ /* sm3tt2b v6.4s, v23.4s, v0.4s[0] */ -+.inst 0xce408ee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[1] */ -+.inst 0xce5696e5 -+ /* sm3tt2b v6.4s, v23.4s, v0.4s[1] */ -+.inst 0xce409ee6 -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[2] */ -+.inst 0xce56a6e5 -+ /* sm3tt2b v6.4s, v23.4s, v0.4s[2] */ -+.inst 0xce40aee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[3] */ -+.inst 0xce56b6e5 -+ /* sm3tt2b v6.4s, v23.4s, v0.4s[3] */ -+.inst 0xce40bee6 -+ /* s4 = w7 | w8 | w9 | w10 */ -+ ext v0.16b, v2.16b, v3.16b, #12 -+ /* vtmp1 = w3 | w4 | w5 | w6 */ -+ ext v22.16b, v1.16b, v2.16b, #12 -+ /* vtmp2 = w10 | w11 | w12 | w13 */ -+ ext v23.16b, v3.16b, v4.16b, #8 -+ /* sm3partw1 v0.4s, v1.4s, v4.4s */ -+.inst 0xce64c020 -+ /* sm3partw2 v0.4s, v23.4s, v22.4s */ -+.inst 0xce76c6e0 -+ eor v22.16b, v1.16b, v2.16b -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[0] */ -+.inst 0xce5686e5 -+ /* sm3tt2b v6.4s, v23.4s, v1.4s[0] */ -+.inst 0xce418ee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[1] */ -+.inst 0xce5696e5 -+ /* sm3tt2b v6.4s, v23.4s, v1.4s[1] */ -+.inst 0xce419ee6 -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[2] */ -+.inst 0xce56a6e5 -+ /* sm3tt2b v6.4s, v23.4s, v1.4s[2] */ -+.inst 0xce41aee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[3] */ -+.inst 0xce56b6e5 -+ /* sm3tt2b v6.4s, v23.4s, v1.4s[3] */ -+.inst 0xce41bee6 -+ /* s4 = w7 | w8 | w9 | w10 */ -+ ext v1.16b, v3.16b, v4.16b, #12 -+ /* vtmp1 = w3 | w4 | w5 | w6 */ -+ ext v22.16b, v2.16b, v3.16b, #12 -+ /* vtmp2 = w10 | w11 | w12 | w13 */ -+ ext v23.16b, v4.16b, v0.16b, #8 -+ /* sm3partw1 v1.4s, v2.4s, v0.4s */ -+.inst 0xce60c041 -+ /* sm3partw2 v1.4s, v23.4s, v22.4s */ -+.inst 0xce76c6e1 -+ eor v22.16b, v2.16b, v3.16b -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[0] */ -+.inst 0xce5686e5 -+ /* sm3tt2b v6.4s, v23.4s, v2.4s[0] */ -+.inst 0xce428ee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[1] */ -+.inst 0xce5696e5 -+ /* sm3tt2b v6.4s, v23.4s, v2.4s[1] */ -+.inst 0xce429ee6 -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[2] */ -+.inst 0xce56a6e5 -+ /* sm3tt2b v6.4s, v23.4s, v2.4s[2] */ -+.inst 0xce42aee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[3] */ -+.inst 0xce56b6e5 -+ /* sm3tt2b v6.4s, v23.4s, v2.4s[3] */ -+.inst 0xce42bee6 -+ eor v22.16b, v3.16b, v4.16b -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[0] */ -+.inst 0xce5686e5 -+ /* sm3tt2b v6.4s, v23.4s, v3.4s[0] */ -+.inst 0xce438ee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[1] */ -+.inst 0xce5696e5 -+ /* sm3tt2b v6.4s, v23.4s, v3.4s[1] */ -+.inst 0xce439ee6 -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[2] */ -+.inst 0xce56a6e5 -+ /* sm3tt2b v6.4s, v23.4s, v3.4s[2] */ -+.inst 0xce43aee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[3] */ -+.inst 0xce56b6e5 -+ /* sm3tt2b v6.4s, v23.4s, v3.4s[3] */ -+.inst 0xce43bee6 -+ eor v22.16b, v4.16b, v0.16b -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[0] */ -+.inst 0xce5686e5 -+ /* sm3tt2b v6.4s, v23.4s, v4.4s[0] */ -+.inst 0xce448ee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[1] */ -+.inst 0xce5696e5 -+ /* sm3tt2b v6.4s, v23.4s, v4.4s[1] */ -+.inst 0xce449ee6 -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[2] */ -+.inst 0xce56a6e5 -+ /* sm3tt2b v6.4s, v23.4s, v4.4s[2] */ -+.inst 0xce44aee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[3] */ -+.inst 0xce56b6e5 -+ /* sm3tt2b v6.4s, v23.4s, v4.4s[3] */ -+.inst 0xce44bee6 -+ eor v22.16b, v0.16b, v1.16b -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[0] */ -+.inst 0xce5686e5 -+ /* sm3tt2b v6.4s, v23.4s, v0.4s[0] */ -+.inst 0xce408ee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[1] */ -+.inst 0xce5696e5 -+ /* sm3tt2b v6.4s, v23.4s, v0.4s[1] */ -+.inst 0xce409ee6 -+ /* sm3ss1 v23.4s, v5.4s, v20.4s, v6.4s */ -+.inst 0xce5418b7 -+ shl v21.4s, v20.4s, #1 -+ sri v21.4s, v20.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[2] */ -+.inst 0xce56a6e5 -+ /* sm3tt2b v6.4s, v23.4s, v0.4s[2] */ -+.inst 0xce40aee6 -+ /* sm3ss1 v23.4s, v5.4s, v21.4s, v6.4s */ -+.inst 0xce5518b7 -+ shl v20.4s, v21.4s, #1 -+ sri v20.4s, v21.4s, #31 -+ /* sm3tt1b v5.4s, v23.4s, v22.4s[3] */ -+.inst 0xce56b6e5 -+ /* sm3tt2b v6.4s, v23.4s, v0.4s[3] */ -+.inst 0xce40bee6 -+ eor v5.16b, v5.16b, v18.16b -+ eor v6.16b, v6.16b, v19.16b -+ /* -+ * cbnz: compare and branch on Nonzero, compares the value in a register -+ * with zero, and conditionally branches to a label at a PC-relative offset -+ * if the comparison is not equal. -+ * 'w2' is the 32-bit name of the general-purpose register to be tested. -+ * '.Loop' is the program label to be conditionally branched to. -+ */ -+ cbnz w2, .Loop -+ -+ /* save state, it is the result of one cycle */ -+ rev64 v5.4s, v5.4s -+ rev64 v6.4s, v6.4s -+ ext v5.16b, v5.16b, v5.16b, #8 -+ ext v6.16b, v6.16b, v6.16b, #8 -+ st1 {v5.4s,v6.4s}, [x0] -+ ret -+.size sm3_ce_block_compress,.-sm3_ce_block_compress -+ -+.align 3 -+.Tj: -+/* -+ * Inserts a list of 32-bit values as data into the assembly. -+ * In SM3 protocol: -+ * when 0 <= j <= 15, Tj = 0x79cc4519, -+ * when 16 <= j <= 63, Tj = 0x9d8a7a87. -+ */ -+.word 0x79cc4519, 0x9d8a7a87 -diff --git a/include/drv/arm_arch_ce.h b/include/drv/arm_arch_ce.h -new file mode 100644 -index 0000000..3ea81a4 ---- /dev/null -+++ b/include/drv/arm_arch_ce.h -@@ -0,0 +1,199 @@ -+/* SPDX-License-Identifier: Apache-2.0 */ -+/* -+ * Copyright 2011-2022 The OpenSSL Project Authors. All Rights Reserved. -+ * -+ * Licensed under the Apache License 2.0 (the "License"). You may not use -+ * this file except in compliance with the License. You can obtain a copy -+ * in the file LICENSE in the source distribution or at -+ * https://www.openssl.org/source/license.html -+ */ -+ -+#ifndef __ARM_ARCH_CE_H -+#define __ARM_ARCH_CE_H -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+#if !defined(__ARM_ARCH__) -+# if defined(__CC_ARM) -+# define __ARM_ARCH__ __TARGET_ARCH_ARM -+# if defined(__BIG_ENDIAN) -+# define __ARMEB__ -+# else -+# define __ARMEL__ -+# endif -+# elif defined(__GNUC__) -+# if defined(__aarch64__) -+# define __ARM_ARCH__ 8 -+ /* -+ * GCC does not define __ARM_ARCH__, instead it defines -+ * bunch of below macros. See all_architectures[] table in -+ * gcc/config/arm/arm.c. -+ */ -+# elif defined(__ARM_ARCH) -+# define __ARM_ARCH__ __ARM_ARCH -+# elif defined(__ARM_ARCH_8A__) -+# define __ARM_ARCH__ 8 -+# elif defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \ -+ defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || \ -+ defined(__ARM_ARCH_7EM__) -+# define __ARM_ARCH__ 7 -+# elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || \ -+ defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6M__) || \ -+ defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || \ -+ defined(__ARM_ARCH_6T2__) -+# define __ARM_ARCH__ 6 -+# elif defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || \ -+ defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) || \ -+ defined(__ARM_ARCH_5TEJ__) -+# define __ARM_ARCH__ 5 -+# elif defined(__ARM_ARCH_4__) || defined(__ARM_ARCH_4T__) -+# define __ARM_ARCH__ 4 -+# else -+# error "unsupported ARM architecture" -+# endif -+# endif -+#endif -+ -+#if !defined(__ARM_MAX_ARCH__) -+# define __ARM_MAX_ARCH__ __ARM_ARCH__ -+#endif -+ -+#if __ARM_MAX_ARCH__ < __ARM_ARCH__ -+# error "__ARM_MAX_ARCH__ can't be less than __ARM_ARCH__" -+#elif __ARM_MAX_ARCH__ != __ARM_ARCH__ -+# if __ARM_ARCH__ < 7 && __ARM_MAX_ARCH__ >= 7 && defined(__ARMEB__) -+# error "can't build universal big-endian binary" -+# endif -+#endif -+ -+#ifndef __ASSEMBLER__ -+extern unsigned int ARMCAP_P; -+extern unsigned int ARM_MIDR; -+#endif -+ -+#define ARMV7_NEON (1<<0) -+#define ARMV7_TICK (1<<1) -+#define ARMV8_AES (1<<2) -+#define ARMV8_SHA1 (1<<3) -+#define ARMV8_SHA256 (1<<4) -+#define ARMV8_PMULL (1<<5) -+#define ARMV8_SHA512 (1<<6) -+#define ARMV8_CPUID (1<<7) -+#define ARMV8_RNG (1<<8) -+#define ARMV8_SM3 (1<<9) -+#define ARMV8_SM4 (1<<10) -+#define ARMV8_SHA3 (1<<11) -+#define ARMV8_UNROLL8_EOR3 (1<<12) -+#define ARMV8_SVE (1<<13) -+#define ARMV8_SVE2 (1<<14) -+ -+/* -+ * MIDR_EL1 system register -+ * -+ * 63___ _ ___32_31___ _ ___24_23_____20_19_____16_15__ _ __4_3_______0 -+ * | | | | | | | -+ * |RES0 | Implementer | Variant | Arch | PartNum |Revision| -+ * |____ _ _____|_____ _ _____|_________|_______ _|____ _ ___|________| -+ * -+ */ -+ -+#define ARM_CPU_IMP_ARM 0x41 -+#define HISI_CPU_IMP 0x48 -+ -+#define ARM_CPU_PART_CORTEX_A72 0xD08 -+#define ARM_CPU_PART_N1 0xD0C -+#define ARM_CPU_PART_V1 0xD40 -+#define ARM_CPU_PART_N2 0xD49 -+#define HISI_CPU_PART_KP920 0xD01 -+ -+#define MIDR_PARTNUM_SHIFT 4 -+#define MIDR_PARTNUM_MASK (0xfffU << MIDR_PARTNUM_SHIFT) -+#define MIDR_PARTNUM(midr) \ -+ (((midr) & MIDR_PARTNUM_MASK) >> MIDR_PARTNUM_SHIFT) -+ -+#define MIDR_IMPLEMENTER_SHIFT 24 -+#define MIDR_IMPLEMENTER_MASK (0xffU << MIDR_IMPLEMENTER_SHIFT) -+#define MIDR_IMPLEMENTER(midr) \ -+ (((midr) & MIDR_IMPLEMENTER_MASK) >> MIDR_IMPLEMENTER_SHIFT) -+ -+#define MIDR_ARCHITECTURE_SHIFT 16 -+#define MIDR_ARCHITECTURE_MASK (0xfU << MIDR_ARCHITECTURE_SHIFT) -+#define MIDR_ARCHITECTURE(midr) \ -+ (((midr) & MIDR_ARCHITECTURE_MASK) >> MIDR_ARCHITECTURE_SHIFT) -+ -+#define MIDR_CPU_MODEL_MASK \ -+ (MIDR_IMPLEMENTER_MASK | \ -+ MIDR_PARTNUM_MASK | \ -+ MIDR_ARCHITECTURE_MASK) -+ -+#define MIDR_CPU_MODEL(imp, partnum) \ -+ (((imp) << MIDR_IMPLEMENTER_SHIFT) | \ -+ (0xfU << MIDR_ARCHITECTURE_SHIFT) | \ -+ ((partnum) << MIDR_PARTNUM_SHIFT)) -+ -+#define MIDR_IS_CPU_MODEL(midr, imp, partnum) \ -+ (((midr) & MIDR_CPU_MODEL_MASK) == MIDR_CPU_MODEL(imp, partnum)) -+ -+#if defined(__ASSEMBLER__) -+ /* -+ * Support macros for -+ * - Armv8.3-A Pointer Authentication and -+ * - Armv8.5-A Branch Target Identification -+ * features which require emitting a .note.gnu.property section with the -+ * appropriate architecture-dependent feature bits set. -+ * Read more: "ELF for the Arm?? 64-bit Architecture" -+ */ -+# if defined(__ARM_FEATURE_BTI_DEFAULT) && __ARM_FEATURE_BTI_DEFAULT == 1 -+# define GNU_PROPERTY_AARCH64_BTI (1 << 0) /* Has Branch Target Identification */ -+# define AARCH64_VALID_CALL_TARGET hint #34 /* BTI 'c' */ -+# else -+# define GNU_PROPERTY_AARCH64_BTI 0 /* No Branch Target Identification */ -+# define AARCH64_VALID_CALL_TARGET -+# endif -+ -+# if defined(__ARM_FEATURE_PAC_DEFAULT) && \ -+ (__ARM_FEATURE_PAC_DEFAULT & 1) == 1 /* Signed with A-key */ -+# define GNU_PROPERTY_AARCH64_POINTER_AUTH (1 << 1) /* Has Pointer Authentication */ -+# define AARCH64_SIGN_LINK_REGISTER hint #25 /* PACIASP */ -+# define AARCH64_VALIDATE_LINK_REGISTER hint #29 /* AUTIASP */ -+# elif defined(__ARM_FEATURE_PAC_DEFAULT) && \ -+ (__ARM_FEATURE_PAC_DEFAULT & 2) == 2 /* Signed with B-key */ -+# define GNU_PROPERTY_AARCH64_POINTER_AUTH (1 << 1) /* Has Pointer Authentication */ -+# define AARCH64_SIGN_LINK_REGISTER hint #27 /* PACIBSP */ -+# define AARCH64_VALIDATE_LINK_REGISTER hint #31 /* AUTIBSP */ -+# else -+# define GNU_PROPERTY_AARCH64_POINTER_AUTH 0 /* No Pointer Authentication */ -+# if GNU_PROPERTY_AARCH64_BTI != 0 -+# define AARCH64_SIGN_LINK_REGISTER AARCH64_VALID_CALL_TARGET -+# else -+# define AARCH64_SIGN_LINK_REGISTER -+# endif -+# define AARCH64_VALIDATE_LINK_REGISTER -+# endif -+ -+# if GNU_PROPERTY_AARCH64_POINTER_AUTH != 0 || GNU_PROPERTY_AARCH64_BTI != 0 -+ .pushsection .note.gnu.property, "a"; -+ .balign 8; -+ .long 4; -+ .long 0x10; -+ .long 0x5; -+ .asciz "GNU"; -+ .long 0xc0000000; /* GNU_PROPERTY_AARCH64_FEATURE_1_AND */ -+ .long 4; -+ .long (GNU_PROPERTY_AARCH64_POINTER_AUTH | GNU_PROPERTY_AARCH64_BTI); -+ .long 0; -+ .popsection; -+# endif -+ -+#endif /* defined __ASSEMBLER__ */ -+ -+#define IS_CPU_SUPPORT_UNROLL8_EOR3() \ -+ (ARMCAP_P & ARMV8_UNROLL8_EOR3) -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif /* __ARM_ARCH_CE_H */ -diff --git a/include/wd_alg.h b/include/wd_alg.h -index f8b136e..861b7d9 100644 ---- a/include/wd_alg.h -+++ b/include/wd_alg.h -@@ -19,6 +19,49 @@ extern "C" { - #define ALG_NAME_SIZE 128 - #define DEV_NAME_LEN 128 - -+/* -+ * Macros related to arm platform: -+ * ARM puts the feature bits for Crypto Extensions in AT_HWCAP2, whereas -+ * AArch64 used AT_HWCAP. -+ */ -+#ifndef AT_HWCAP -+# define AT_HWCAP 16 -+#endif -+ -+#ifndef AT_HWCAP2 -+# define AT_HWCAP2 26 -+#endif -+ -+#if defined(__arm__) || defined(__arm) -+# define HWCAP AT_HWCAP -+# define HWCAP_NEON (1 << 12) -+ -+# define HWCAP_CE AT_HWCAP2 -+# define HWCAP_CE_AES (1 << 0) -+# define HWCAP_CE_PMULL (1 << 1) -+# define HWCAP_CE_SHA1 (1 << 2) -+# define HWCAP_CE_SHA256 (1 << 3) -+#elif defined(__aarch64__) -+# define HWCAP AT_HWCAP -+# define HWCAP_NEON (1 << 1) -+ -+# define HWCAP_CE HWCAP -+# define HWCAP_CE_AES (1 << 3) -+# define HWCAP_CE_PMULL (1 << 4) -+# define HWCAP_CE_SHA1 (1 << 5) -+# define HWCAP_CE_SHA256 (1 << 6) -+# define HWCAP_CPUID (1 << 11) -+# define HWCAP_SHA3 (1 << 17) -+# define HWCAP_CE_SM3 (1 << 18) -+# define HWCAP_CE_SM4 (1 << 19) -+# define HWCAP_CE_SHA512 (1 << 21) -+# define HWCAP_SVE (1 << 22) -+/* AT_HWCAP2 */ -+# define HWCAP2 26 -+# define HWCAP2_SVE2 (1 << 1) -+# define HWCAP2_RNG (1 << 16) -+#endif -+ - enum alg_dev_type { - UADK_ALG_SOFT = 0x0, - UADK_ALG_CE_INSTR = 0x1, -diff --git a/wd_alg.c b/wd_alg.c -index 3b111c8..f34a407 100644 ---- a/wd_alg.c -+++ b/wd_alg.c -@@ -9,6 +9,7 @@ - #include - #include - #include -+#include - - #include "wd.h" - #include "wd_alg.h" -@@ -90,6 +91,24 @@ static bool wd_check_accel_dev(const char *dev_name) - return false; - } - -+static bool wd_check_ce_support(const char *dev_name) -+{ -+ unsigned long hwcaps = 0; -+ -+ #if defined(__arm__) || defined(__arm) -+ hwcaps = getauxval(AT_HWCAP2); -+ #elif defined(__aarch64__) -+ hwcaps = getauxval(AT_HWCAP); -+ #endif -+ if (!strcmp("isa_ce_sm3", dev_name) && (hwcaps & HWCAP_CE_SM3)) -+ return true; -+ -+ if (!strcmp("isa_ce_sm4", dev_name) && (hwcaps & HWCAP_CE_SM4)) -+ return true; -+ -+ return false; -+} -+ - static bool wd_alg_check_available(int calc_type, const char *dev_name) - { - bool ret = false; -@@ -99,6 +118,7 @@ static bool wd_alg_check_available(int calc_type, const char *dev_name) - break; - /* Should find the CPU if not support CE */ - case UADK_ALG_CE_INSTR: -+ ret = wd_check_ce_support(dev_name); - break; - /* Should find the CPU if not support SVE */ - case UADK_ALG_SVE_INSTR: -@@ -280,8 +300,13 @@ struct wd_alg_driver *wd_request_drv(const char *alg_name, bool hw_mask) - struct wd_alg_driver *drv = NULL; - int tmp_priority = -1; - -- if (!pnext || !alg_name) { -- WD_ERR("invalid: request alg param is error!\n"); -+ if (!pnext) { -+ WD_ERR("invalid: requset drv pnext is NULL!\n"); -+ return NULL; -+ } -+ -+ if (!alg_name) { -+ WD_ERR("invalid: alg_name is NULL!\n"); - return NULL; - } - -@@ -289,7 +314,8 @@ struct wd_alg_driver *wd_request_drv(const char *alg_name, bool hw_mask) - pthread_mutex_lock(&mutex); - while (pnext) { - /* hw_mask true mean not to used hardware dev */ -- if (hw_mask && pnext->drv->calc_type == UADK_ALG_HW) { -+ if ((hw_mask && pnext->drv->calc_type == UADK_ALG_HW) || -+ (!hw_mask && pnext->drv->calc_type != UADK_ALG_HW)) { - pnext = pnext->next; - continue; - } -diff --git a/wd_digest.c b/wd_digest.c -index c59184d..491502a 100644 ---- a/wd_digest.c -+++ b/wd_digest.c -@@ -222,7 +222,7 @@ static void wd_digest_clear_status(void) - } - - static int wd_digest_init_nolock(struct wd_ctx_config *config, -- struct wd_sched *sched) -+ struct wd_sched *sched) - { - int ret; - -diff --git a/wd_sched.c b/wd_sched.c -index 419280e..b43834d 100644 ---- a/wd_sched.c -+++ b/wd_sched.c -@@ -453,7 +453,7 @@ static struct wd_sched sched_table[SCHED_POLICY_BUTT] = { - .poll_policy = session_sched_poll_policy, - }, { - .name = "None scheduler", -- .sched_policy = SCHED_POLICY_SINGLE, -+ .sched_policy = SCHED_POLICY_NONE, - .sched_init = sched_none_init, - .pick_next_ctx = sched_none_pick_next_ctx, - .poll_policy = sched_none_poll_policy, -diff --git a/wd_util.c b/wd_util.c -index 6134239..39909ca 100644 ---- a/wd_util.c -+++ b/wd_util.c -@@ -91,6 +91,11 @@ struct acc_alg_item { - char *algtype; - }; - -+struct wd_ce_ctx { -+ char *drv_name; -+ void *priv; -+}; -+ - static struct acc_alg_item alg_options[] = { - {"zlib", "zlib"}, - {"gzip", "gzip"}, -@@ -229,7 +234,6 @@ int wd_init_ctx_config(struct wd_ctx_config_internal *in, - ret = -WD_EINVAL; - goto err_out; - } -- - clone_ctx_to_internal(cfg->ctxs + i, ctxs + i); - ret = pthread_spin_init(&ctxs[i].lock, PTHREAD_PROCESS_SHARED); - if (ret) { -@@ -2612,14 +2616,44 @@ out_freelist: - return ret; - } - -+static int wd_alg_ce_ctx_init(struct wd_init_attrs *attrs) -+{ -+ struct wd_ctx_config *ctx_config = attrs->ctx_config; -+ -+ ctx_config->ctx_num = 1; -+ ctx_config->ctxs = calloc(ctx_config->ctx_num, sizeof(struct wd_ctx)); -+ if (!ctx_config->ctxs) { -+ return -WD_ENOMEM; -+ WD_ERR("failed to alloc ctxs!\n"); -+ } -+ ctx_config->ctxs[0].ctx = (handle_t)calloc(1, sizeof(struct wd_ce_ctx)); -+ -+ return WD_SUCCESS; -+} -+ -+static void wd_alg_ce_ctx_uninit(struct wd_ctx_config *ctx_config) -+{ -+ __u32 i; -+ -+ for (i = 0; i < ctx_config->ctx_num; i++) { -+ if (ctx_config->ctxs[i].ctx) { -+ free((struct wd_ce_ctx *)ctx_config->ctxs[i].ctx); -+ ctx_config->ctxs[i].ctx = 0; -+ } -+ } -+ -+ free(ctx_config->ctxs); -+} -+ - static void wd_alg_ctx_uninit(struct wd_ctx_config *ctx_config) - { - __u32 i; - -- for (i = 0; i < ctx_config->ctx_num; i++) -+ for (i = 0; i < ctx_config->ctx_num; i++) { - if (ctx_config->ctxs[i].ctx) { - wd_release_ctx(ctx_config->ctxs[i].ctx); - ctx_config->ctxs[i].ctx = 0; -+ } - } - - free(ctx_config->ctxs); -@@ -2633,9 +2667,9 @@ int wd_alg_attrs_init(struct wd_init_attrs *attrs) - struct wd_ctx_config *ctx_config = NULL; - struct wd_sched *alg_sched = NULL; - char alg_type[CRYPTO_MAX_ALG_NAME]; -- char *alg = attrs->alg; - int driver_type = UADK_ALG_HW; -- int ret; -+ char *alg = attrs->alg; -+ int ret = 0; - - if (!attrs->ctx_params) - return -WD_EINVAL; -@@ -2646,22 +2680,37 @@ int wd_alg_attrs_init(struct wd_init_attrs *attrs) - switch (driver_type) { - case UADK_ALG_SOFT: - case UADK_ALG_CE_INSTR: -- /* No need to alloc resource */ -- if (sched_type != SCHED_POLICY_NONE) -+ /* No need to alloc resource */ -+ if (sched_type != SCHED_POLICY_NONE) { -+ WD_ERR("invalid sched_type\n"); - return -WD_EINVAL; -+ } -+ -+ ctx_config = calloc(1, sizeof(*ctx_config)); -+ if (!ctx_config) { -+ WD_ERR("fail to alloc ctx config\n"); -+ return -WD_ENOMEM; -+ } -+ attrs->ctx_config = ctx_config; - - alg_sched = wd_sched_rr_alloc(SCHED_POLICY_NONE, 1, 1, alg_poll_func); - if (!alg_sched) { - WD_ERR("fail to alloc scheduler\n"); -- return -WD_EINVAL; -+ goto out_ctx_config; - } -+ - attrs->sched = alg_sched; - -- ret = wd_sched_rr_instance(alg_sched, NULL); -+ ret = wd_alg_ce_ctx_init(attrs); - if (ret) { -- WD_ERR("fail to instance scheduler\n"); -+ WD_ERR("fail to init ce ctx\n"); - goto out_freesched; - } -+ -+ ret = alg_init_func(ctx_config, alg_sched); -+ if (ret) -+ goto out_pre_init; -+ - break; - case UADK_ALG_SVE_INSTR: - /* Todo lock cpu core */ -@@ -2720,7 +2769,10 @@ int wd_alg_attrs_init(struct wd_init_attrs *attrs) - return 0; - - out_pre_init: -- wd_alg_ctx_uninit(ctx_config); -+ if (driver_type == UADK_ALG_CE_INSTR || driver_type == UADK_ALG_SOFT) -+ wd_alg_ce_ctx_uninit(ctx_config); -+ else -+ wd_alg_ctx_uninit(ctx_config); - out_freesched: - wd_sched_rr_release(alg_sched); - out_ctx_config: -@@ -2733,10 +2785,19 @@ void wd_alg_attrs_uninit(struct wd_init_attrs *attrs) - { - struct wd_ctx_config *ctx_config = attrs->ctx_config; - struct wd_sched *alg_sched = attrs->sched; -+ int driver_type = attrs->driver->calc_type; - -- if (ctx_config) { -- wd_alg_ctx_uninit(ctx_config); -- free(ctx_config); -+ if (driver_type == UADK_ALG_CE_INSTR || driver_type == UADK_ALG_SOFT) { -+ if (ctx_config) { -+ wd_alg_ce_ctx_uninit(ctx_config); -+ free(ctx_config); -+ } -+ } else { -+ if (ctx_config) { -+ wd_alg_ctx_uninit(ctx_config); -+ free(ctx_config); -+ } - } -+ - wd_sched_rr_release(alg_sched); - } --- -2.25.1 - diff --git a/0013-uadk-v1-update-the-symbol-table-for-libraries.patch b/0013-uadk-v1-update-the-symbol-table-for-libraries.patch new file mode 100644 index 0000000..c4dc66d --- /dev/null +++ b/0013-uadk-v1-update-the-symbol-table-for-libraries.patch @@ -0,0 +1,29 @@ +From 4e19126cc3cb4795fc9b3bb65e76bd05ab68377a Mon Sep 17 00:00:00 2001 +From: Wenkai Lin +Date: Tue, 20 Aug 2024 10:49:21 +0800 +Subject: [PATCH 13/16] uadk/v1: update the symbol table for libraries + +hisi_qm_inject_op_register should be visible to the +outside APP, fix it now. + +Signed-off-by: Wenkai Lin +Signed-off-by: Qi Tao +--- + v1/libwd.map | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/v1/libwd.map b/v1/libwd.map +index 4e6b639..d53201b 100644 +--- a/v1/libwd.map ++++ b/v1/libwd.map +@@ -160,6 +160,7 @@ global: + wd_get_sgl_datalen; + wd_get_sge_datalen; + wd_get_sgl_bufsize; ++ hisi_qm_inject_op_register; + + local: *; + }; +-- +2.25.1 + diff --git a/0014-uadk-fix-control-range-of-environmemt-variable.patch b/0014-uadk-fix-control-range-of-environmemt-variable.patch deleted file mode 100644 index 4b90bba..0000000 --- a/0014-uadk-fix-control-range-of-environmemt-variable.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 7869d42227f03754e4117a17751e6959b3f93bca Mon Sep 17 00:00:00 2001 -From: Zhiqi Song -Date: Mon, 11 Mar 2024 18:07:23 +0800 -Subject: [PATCH 14/44] uadk: fix control range of environmemt variable - -Environment variable will not be used in non-hardware -situation to config the ctx num. So add an interception -condition to avoid the impact of environment variables -on the initialization of non-hardware situations. - -Signed-off-by: Zhiqi Song ---- - wd_util.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/wd_util.c b/wd_util.c -index 39909ca..b8e755c 100644 ---- a/wd_util.c -+++ b/wd_util.c -@@ -2111,8 +2111,9 @@ int wd_ctx_param_init(struct wd_ctx_params *ctx_params, - return -WD_ENOMEM; - } - -+ /* Only hw driver support environment variable */ - var_s = secure_getenv(env_name); -- if (var_s && strlen(var_s)) { -+ if (var_s && strlen(var_s) && driver->calc_type == UADK_ALG_HW) { - /* environment variable has the highest priority */ - ret = wd_env_set_ctx_nums(driver->alg_name, env_name, var_s, - ctx_params, max_op_type); --- -2.25.1 - diff --git a/0014-uadk-modify-address-check.patch b/0014-uadk-modify-address-check.patch new file mode 100644 index 0000000..78b416b --- /dev/null +++ b/0014-uadk-modify-address-check.patch @@ -0,0 +1,174 @@ +From a98d790c195cd41b839c5058c96eb8e10733783a Mon Sep 17 00:00:00 2001 +From: Weili Qian +Date: Tue, 20 Aug 2024 11:37:47 +0800 +Subject: [PATCH 14/16] uadk: modify address check + +When the memory is in SGL format, both wd_check_src_dst and +wd_check_datalist are called for address check. Actually, +only wd_check_datalist needs to be called. + +Signed-off-by: Weili Qian +Signed-off-by: Qi Tao +--- + include/wd_util.h | 2 +- + wd_aead.c | 19 +++++++++---------- + wd_cipher.c | 14 +++++++------- + wd_digest.c | 18 ++++++++++++------ + wd_util.c | 4 ++-- + 5 files changed, 31 insertions(+), 26 deletions(-) + +diff --git a/include/wd_util.h b/include/wd_util.h +index f217f0f..1c4af0b 100644 +--- a/include/wd_util.h ++++ b/include/wd_util.h +@@ -254,7 +254,7 @@ int wd_check_src_dst(void *src, __u32 in_bytes, void *dst, __u32 out_bytes); + * + * Return 0 if the datalist is not less than expected size. + */ +-int wd_check_datalist(struct wd_datalist *head, __u32 size); ++int wd_check_datalist(struct wd_datalist *head, __u64 size); + + + /* +diff --git a/wd_aead.c b/wd_aead.c +index 9c3f1ab..65949f7 100644 +--- a/wd_aead.c ++++ b/wd_aead.c +@@ -374,7 +374,7 @@ void wd_aead_free_sess(handle_t h_sess) + static int wd_aead_param_check(struct wd_aead_sess *sess, + struct wd_aead_req *req) + { +- __u32 len; ++ __u64 len; + int ret; + + if (unlikely(!sess || !req)) { +@@ -410,18 +410,11 @@ static int wd_aead_param_check(struct wd_aead_sess *sess, + return -WD_EINVAL; + } + +- ret = wd_check_src_dst(req->src, req->in_bytes, req->dst, req->out_bytes); +- if (unlikely(ret)) { +- WD_ERR("invalid: src/dst addr is NULL when src/dst size is non-zero!\n"); +- return -WD_EINVAL; +- } +- + if (req->data_fmt == WD_SGL_BUF) { +- len = req->in_bytes + req->assoc_bytes; ++ len = (__u64)req->in_bytes + req->assoc_bytes; + ret = wd_check_datalist(req->list_src, len); + if (unlikely(ret)) { +- WD_ERR("failed to check the src datalist, size = %u\n", +- len); ++ WD_ERR("failed to check the src datalist, size = %llu\n", len); + return -WD_EINVAL; + } + +@@ -431,6 +424,12 @@ static int wd_aead_param_check(struct wd_aead_sess *sess, + req->out_bytes); + return -WD_EINVAL; + } ++ } else { ++ ret = wd_check_src_dst(req->src, req->in_bytes, req->dst, req->out_bytes); ++ if (unlikely(ret)) { ++ WD_ERR("invalid: src/dst addr is NULL when src/dst size is non-zero!\n"); ++ return -WD_EINVAL; ++ } + } + + return 0; +diff --git a/wd_cipher.c b/wd_cipher.c +index 4799213..646aa89 100644 +--- a/wd_cipher.c ++++ b/wd_cipher.c +@@ -560,7 +560,7 @@ static int cipher_iv_len_check(struct wd_cipher_req *req, + + if (!req->iv) { + WD_ERR("invalid: cipher input iv is NULL!\n"); +- ret = -WD_EINVAL; ++ return -WD_EINVAL; + } + + switch (sess->alg) { +@@ -636,12 +636,6 @@ static int wd_cipher_check_params(handle_t h_sess, + if (unlikely(ret)) + return ret; + +- ret = wd_check_src_dst(req->src, req->in_bytes, req->dst, req->out_bytes); +- if (unlikely(ret)) { +- WD_ERR("invalid: src/dst addr is NULL when src/dst size is non-zero!\n"); +- return -WD_EINVAL; +- } +- + if (req->data_fmt == WD_SGL_BUF) { + ret = wd_check_datalist(req->list_src, req->in_bytes); + if (unlikely(ret)) { +@@ -657,6 +651,12 @@ static int wd_cipher_check_params(handle_t h_sess, + req->in_bytes); + return -WD_EINVAL; + } ++ } else { ++ ret = wd_check_src_dst(req->src, req->in_bytes, req->dst, req->out_bytes); ++ if (unlikely(ret)) { ++ WD_ERR("invalid: src/dst addr is NULL when src/dst size is non-zero!\n"); ++ return -WD_EINVAL; ++ } + } + + return cipher_iv_len_check(req, sess); +diff --git a/wd_digest.c b/wd_digest.c +index f116aec..943fd8c 100644 +--- a/wd_digest.c ++++ b/wd_digest.c +@@ -548,12 +548,6 @@ static int wd_digest_param_check(struct wd_digest_sess *sess, + return -WD_EINVAL; + } + +- ret = wd_check_src_dst(req->in, req->in_bytes, req->out, req->out_bytes); +- if (unlikely(ret)) { +- WD_ERR("invalid: in/out addr is NULL when in/out size is non-zero!\n"); +- return -WD_EINVAL; +- } +- + if (req->data_fmt == WD_SGL_BUF) { + ret = wd_check_datalist(req->list_in, req->in_bytes); + if (unlikely(ret)) { +@@ -561,6 +555,18 @@ static int wd_digest_param_check(struct wd_digest_sess *sess, + req->in_bytes); + return -WD_EINVAL; + } ++ ++ ret = wd_check_src_dst(NULL, 0, req->out, req->out_bytes); ++ if (unlikely(ret)) { ++ WD_ERR("invalid: out addr is NULL when out size is non-zero!\n"); ++ return -WD_EINVAL; ++ } ++ } else { ++ ret = wd_check_src_dst(req->in, req->in_bytes, req->out, req->out_bytes); ++ if (unlikely(ret)) { ++ WD_ERR("invalid: in/out addr is NULL when in/out size is non-zero!\n"); ++ return -WD_EINVAL; ++ } + } + + return wd_aes_hmac_length_check(sess, req); +diff --git a/wd_util.c b/wd_util.c +index 76548c9..5350f84 100644 +--- a/wd_util.c ++++ b/wd_util.c +@@ -475,10 +475,10 @@ int wd_check_src_dst(void *src, __u32 in_bytes, void *dst, __u32 out_bytes) + return 0; + } + +-int wd_check_datalist(struct wd_datalist *head, __u32 size) ++int wd_check_datalist(struct wd_datalist *head, __u64 size) + { + struct wd_datalist *tmp = head; +- __u32 list_size = 0; ++ __u64 list_size = 0; + + while (tmp) { + if (tmp->data) +-- +2.25.1 + diff --git a/0015-uadk-check-calloc-return-value.patch b/0015-uadk-check-calloc-return-value.patch new file mode 100644 index 0000000..8b43220 --- /dev/null +++ b/0015-uadk-check-calloc-return-value.patch @@ -0,0 +1,54 @@ +From a30caaa94e0cc806a4ee64031c300c630f758cd6 Mon Sep 17 00:00:00 2001 +From: Weili Qian +Date: Tue, 20 Aug 2024 11:39:27 +0800 +Subject: [PATCH 15/16] uadk: check calloc return value + +Added the check of the return value of calloc. + +Signed-off-by: Weili Qian +Signed-off-by: Qi Tao +--- + wd_util.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/wd_util.c b/wd_util.c +index 5350f84..8d362d7 100644 +--- a/wd_util.c ++++ b/wd_util.c +@@ -2632,10 +2632,15 @@ static int wd_alg_ce_ctx_init(struct wd_init_attrs *attrs) + ctx_config->ctx_num = 1; + ctx_config->ctxs = calloc(ctx_config->ctx_num, sizeof(struct wd_ctx)); + if (!ctx_config->ctxs) { +- return -WD_ENOMEM; + WD_ERR("failed to alloc ctxs!\n"); ++ return -WD_ENOMEM; + } ++ + ctx_config->ctxs[0].ctx = (handle_t)calloc(1, sizeof(struct wd_ce_ctx)); ++ if (!ctx_config->ctxs[0].ctx) { ++ free(ctx_config->ctxs); ++ return -WD_ENOMEM; ++ } + + return WD_SUCCESS; + } +@@ -2719,7 +2724,7 @@ int wd_alg_attrs_init(struct wd_init_attrs *attrs) + char alg_type[CRYPTO_MAX_ALG_NAME]; + int driver_type = UADK_ALG_HW; + char *alg = attrs->alg; +- int ret = 0; ++ int ret = -WD_EINVAL; + + if (!attrs->ctx_params) + return -WD_EINVAL; +@@ -2801,7 +2806,6 @@ int wd_alg_attrs_init(struct wd_init_attrs *attrs) + numa_max_node() + 1, alg_poll_func); + if (!alg_sched) { + WD_ERR("fail to instance scheduler\n"); +- ret = -WD_EINVAL; + goto out_ctx_config; + } + attrs->sched = alg_sched; +-- +2.25.1 + diff --git a/0015-uadk-util-use-default-sched_type-for-instruction-tas.patch b/0015-uadk-util-use-default-sched_type-for-instruction-tas.patch deleted file mode 100644 index c22b859..0000000 --- a/0015-uadk-util-use-default-sched_type-for-instruction-tas.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 1839b896bbb7cfaddbd8b19d322465c7ef7e185c Mon Sep 17 00:00:00 2001 -From: Zhiqi Song -Date: Mon, 11 Mar 2024 18:07:24 +0800 -Subject: [PATCH 15/44] uadk/util: use default sched_type for instruction task - -To prevent users from perceiving the difference in instruction -acceleration task, no longer check the specific sched_type, just -accept sched_type within the valid range from user, and use -default sched_type inside. - -As sched_type is checked before init2 calls wd_alg_attrs_init(). -Redundancy check is not needed. - -Signed-off-by: Zhiqi Song ---- - include/wd_sched.h | 2 +- - wd_util.c | 12 ++---------- - 2 files changed, 3 insertions(+), 11 deletions(-) - -diff --git a/include/wd_sched.h b/include/wd_sched.h -index b145172..be541c6 100644 ---- a/include/wd_sched.h -+++ b/include/wd_sched.h -@@ -21,7 +21,7 @@ enum sched_policy_type { - SCHED_POLICY_RR = 0, - /* requests will no need ctxs */ - SCHED_POLICY_NONE, -- /* requests will need a fixed ctx */ -+ /* requests will need a fixed ctx */ - SCHED_POLICY_SINGLE, - SCHED_POLICY_BUTT, - }; -diff --git a/wd_util.c b/wd_util.c -index b8e755c..fb58167 100644 ---- a/wd_util.c -+++ b/wd_util.c -@@ -2681,12 +2681,6 @@ int wd_alg_attrs_init(struct wd_init_attrs *attrs) - switch (driver_type) { - case UADK_ALG_SOFT: - case UADK_ALG_CE_INSTR: -- /* No need to alloc resource */ -- if (sched_type != SCHED_POLICY_NONE) { -- WD_ERR("invalid sched_type\n"); -- return -WD_EINVAL; -- } -- - ctx_config = calloc(1, sizeof(*ctx_config)); - if (!ctx_config) { - WD_ERR("fail to alloc ctx config\n"); -@@ -2694,6 +2688,7 @@ int wd_alg_attrs_init(struct wd_init_attrs *attrs) - } - attrs->ctx_config = ctx_config; - -+ /* Use default sched_type to alloc scheduler */ - alg_sched = wd_sched_rr_alloc(SCHED_POLICY_NONE, 1, 1, alg_poll_func); - if (!alg_sched) { - WD_ERR("fail to alloc scheduler\n"); -@@ -2714,10 +2709,7 @@ int wd_alg_attrs_init(struct wd_init_attrs *attrs) - - break; - case UADK_ALG_SVE_INSTR: -- /* Todo lock cpu core */ -- if (sched_type != SCHED_POLICY_SINGLE) -- return -WD_EINVAL; -- -+ /* Use default sched_type to alloc scheduler */ - alg_sched = wd_sched_rr_alloc(SCHED_POLICY_SINGLE, 1, 1, alg_poll_func); - if (!alg_sched) { - WD_ERR("fail to alloc scheduler\n"); --- -2.25.1 - diff --git a/0016-drv-hisi-sec-modify-minor-errors-in-hisi_sec.c.patch b/0016-drv-hisi-sec-modify-minor-errors-in-hisi_sec.c.patch new file mode 100644 index 0000000..5b1adee --- /dev/null +++ b/0016-drv-hisi-sec-modify-minor-errors-in-hisi_sec.c.patch @@ -0,0 +1,148 @@ +From 72e907fdf5914a3d157311431858355bd30b573f Mon Sep 17 00:00:00 2001 +From: Weili Qian +Date: Tue, 20 Aug 2024 11:40:26 +0800 +Subject: [PATCH 16/16] drv/hisi/sec: modify minor errors in hisi_sec.c + +1. In AEAD stream mode, iv is update used recv_msg. However, +the iv pointer in recv_msg is a random value in the +asynchronous mode, which may cause address exceptions. +Therefore, temp_msg is used. +2. The AEAD stream mode does not support the SGL format. +The SGL memory soft calculation may fail. +3. The data type is converted to __u64 during addition calculation +to avoid calculation result overflow. + +Signed-off-by: Weili Qian +Signed-off-by: Qi Tao +--- + drv/hisi_sec.c | 59 ++++++++++++++++++++++++++++++-------------------- + 1 file changed, 36 insertions(+), 23 deletions(-) + +diff --git a/drv/hisi_sec.c b/drv/hisi_sec.c +index d9bb7e4..0a1bcc1 100644 +--- a/drv/hisi_sec.c ++++ b/drv/hisi_sec.c +@@ -2255,9 +2255,9 @@ static int aead_len_check(struct wd_aead_msg *msg, enum sec_bd_type type) + } + } + +- if (unlikely(msg->in_bytes + msg->assoc_bytes > MAX_INPUT_DATA_LEN)) { +- WD_ERR("aead input data length is too long, size = %u\n", +- msg->in_bytes + msg->assoc_bytes); ++ if (unlikely((__u64)msg->in_bytes + msg->assoc_bytes > MAX_INPUT_DATA_LEN)) { ++ WD_ERR("aead input data length is too long, size = %llu\n", ++ (__u64)msg->in_bytes + msg->assoc_bytes); + return -WD_EINVAL; + } + +@@ -2516,6 +2516,11 @@ int aead_msg_state_check(struct wd_aead_msg *msg) + } + } + ++ if (unlikely(msg->msg_state != AEAD_MSG_BLOCK && msg->data_fmt == WD_SGL_BUF)) { ++ WD_ERR("invalid: sgl mode not supports stream mode!\n"); ++ return -WD_EINVAL; ++ } ++ + return 0; + } + +@@ -2555,10 +2560,12 @@ static int hisi_sec_aead_send(struct wd_alg_driver *drv, handle_t ctx, void *wd_ + fill_aead_bd2_addr(msg, &sqe); + + ret = fill_stream_bd2(msg, &sqe); +- if (ret == WD_SOFT_COMPUTING) +- return 0; +- else if (unlikely(ret)) +- return ret; ++ if (ret == WD_SOFT_COMPUTING) { ++ ret = 0; ++ goto put_sgl; ++ } else if (unlikely(ret)) { ++ goto put_sgl; ++ } + + hisi_set_msg_id(h_qp, &msg->tag); + sqe.type2.tag = (__u16)msg->tag; +@@ -2568,14 +2575,16 @@ static int hisi_sec_aead_send(struct wd_alg_driver *drv, handle_t ctx, void *wd_ + if (ret != -WD_EBUSY) + WD_ERR("aead send sqe is err(%d)!\n", ret); + +- if (msg->data_fmt == WD_SGL_BUF) +- hisi_sec_put_sgl(h_qp, msg->alg_type, msg->in, +- msg->out); +- +- return ret; ++ goto put_sgl; + } + + return 0; ++ ++put_sgl: ++ if (msg->data_fmt == WD_SGL_BUF) ++ hisi_sec_put_sgl(h_qp, msg->alg_type, msg->in, msg->out); ++ ++ return ret; + } + + static void update_stream_counter(struct wd_aead_msg *recv_msg) +@@ -2629,7 +2638,7 @@ static void parse_aead_bd2(struct hisi_qp *qp, struct hisi_sec_sqe *sqe, + temp_msg = recv_msg; + } + +- update_stream_counter(recv_msg); ++ update_stream_counter(temp_msg); + + if (unlikely(recv_msg->result != WD_SUCCESS)) + dump_sec_msg(temp_msg, "aead"); +@@ -2946,10 +2955,12 @@ static int hisi_sec_aead_send_v3(struct wd_alg_driver *drv, handle_t ctx, void * + + fill_aead_bd3_addr(msg, &sqe); + ret = fill_stream_bd3(h_qp, msg, &sqe); +- if (ret == WD_SOFT_COMPUTING) +- return 0; +- else if (unlikely(ret)) +- return ret; ++ if (ret == WD_SOFT_COMPUTING) { ++ ret = 0; ++ goto put_sgl; ++ } else if (unlikely(ret)) { ++ goto put_sgl; ++ } + + hisi_set_msg_id(h_qp, &msg->tag); + sqe.tag = msg->tag; +@@ -2958,14 +2969,16 @@ static int hisi_sec_aead_send_v3(struct wd_alg_driver *drv, handle_t ctx, void * + if (ret != -WD_EBUSY) + WD_ERR("aead send sqe is err(%d)!\n", ret); + +- if (msg->data_fmt == WD_SGL_BUF) +- hisi_sec_put_sgl(h_qp, msg->alg_type, msg->in, +- msg->out); +- +- return ret; ++ goto put_sgl; + } + + return 0; ++ ++put_sgl: ++ if (msg->data_fmt == WD_SGL_BUF) ++ hisi_sec_put_sgl(h_qp, msg->alg_type, msg->in, msg->out); ++ ++ return ret; + } + + static void parse_aead_bd3(struct hisi_qp *qp, struct hisi_sec_sqe3 *sqe, +@@ -3005,7 +3018,7 @@ static void parse_aead_bd3(struct hisi_qp *qp, struct hisi_sec_sqe3 *sqe, + temp_msg = recv_msg; + } + +- update_stream_counter(recv_msg); ++ update_stream_counter(temp_msg); + + if (unlikely(recv_msg->result != WD_SUCCESS)) + dump_sec_msg(temp_msg, "aead"); +-- +2.25.1 + diff --git a/0016-uadk-digest-modify-spelling-errors.patch b/0016-uadk-digest-modify-spelling-errors.patch deleted file mode 100644 index 665f6f1..0000000 --- a/0016-uadk-digest-modify-spelling-errors.patch +++ /dev/null @@ -1,184 +0,0 @@ -From f7d1cbe8850ceae6de4aed1fd5fa81f029da753f Mon Sep 17 00:00:00 2001 -From: Zhiqi Song -Date: Fri, 15 Mar 2024 15:22:06 +0800 -Subject: [PATCH 16/44] uadk/digest: modify spelling errors - -Modify spelling errors related to digest stream mode. - -Signed-off-by: Zhiqi Song ---- - drv/hisi_sec.c | 8 ++++---- - drv/isa_ce_sm3.c | 4 ++-- - include/drv/wd_digest_drv.h | 6 +++--- - v1/test/hisi_sec_test/test_hisi_sec.c | 5 ++--- - v1/test/hisi_sec_test_sgl/test_hisi_sec_sgl.c | 5 ++--- - wd_digest.c | 2 +- - 6 files changed, 14 insertions(+), 16 deletions(-) - -diff --git a/drv/hisi_sec.c b/drv/hisi_sec.c -index 9da21a8..ac62109 100644 ---- a/drv/hisi_sec.c -+++ b/drv/hisi_sec.c -@@ -1553,7 +1553,7 @@ static int fill_digest_long_hash(handle_t h_qp, struct wd_digest_msg *msg, - if (ret) - return ret; - -- if (block_type == HASH_FRIST_BLOCK) { -+ if (block_type == HASH_FIRST_BLOCK) { - /* Long hash first */ - sqe->ai_apd_cs = AI_GEN_INNER; - sqe->ai_apd_cs |= AUTHPAD_NOPAD << AUTHPAD_OFFSET; -@@ -1635,7 +1635,7 @@ static int digest_bd2_type_check(struct wd_digest_msg *msg) - enum hash_block_type type = get_hash_block_type(msg); - - /* Long hash first and middle bd */ -- if (type == HASH_FRIST_BLOCK || type == HASH_MIDDLE_BLOCK) { -+ if (type == HASH_FIRST_BLOCK || type == HASH_MIDDLE_BLOCK) { - WD_ERR("hardware v2 not supports 0 size in long hash!\n"); - return -WD_EINVAL; - } -@@ -1653,7 +1653,7 @@ static int digest_bd3_type_check(struct wd_digest_msg *msg) - { - enum hash_block_type type = get_hash_block_type(msg); - /* Long hash first and middle bd */ -- if (type == HASH_FRIST_BLOCK || type == HASH_MIDDLE_BLOCK) { -+ if (type == HASH_FIRST_BLOCK || type == HASH_MIDDLE_BLOCK) { - WD_ERR("invalid: hardware v3 not supports 0 size in long hash!\n"); - return -WD_EINVAL; - } -@@ -1906,7 +1906,7 @@ static int fill_digest_long_hash3(handle_t h_qp, struct wd_digest_msg *msg, - if (ret) - return ret; - -- if (block_type == HASH_FRIST_BLOCK) { -+ if (block_type == HASH_FIRST_BLOCK) { - /* Long hash first */ - sqe->auth_mac_key |= AI_GEN_INNER << SEC_AI_GEN_OFFSET_V3; - sqe->stream_scene.stream_auth_pad = AUTHPAD_NOPAD; -diff --git a/drv/isa_ce_sm3.c b/drv/isa_ce_sm3.c -index f16bdd3..0309861 100644 ---- a/drv/isa_ce_sm3.c -+++ b/drv/isa_ce_sm3.c -@@ -187,7 +187,7 @@ static int do_sm3_ce(struct wd_digest_msg *msg, __u8 *out_digest) - sm3_ce_update(&sctx, data, data_len, sm3_ce_block_compress); - sm3_ce_final(&sctx, out_digest, sm3_ce_block_compress); - break; -- case HASH_FRIST_BLOCK: -+ case HASH_FIRST_BLOCK: - sm3_ce_init(&sctx); - sm3_ce_update(&sctx, data, data_len, sm3_ce_block_compress); - trans_output_result(out_digest, sctx.word_reg); -@@ -305,7 +305,7 @@ static int do_hmac_sm3_ce(struct wd_digest_msg *msg, __u8 *out_hmac) - sm3_ce_hmac_update(&hctx, data, data_len); - sm3_ce_hmac_final(&hctx, out_hmac); - break; -- case HASH_FRIST_BLOCK: -+ case HASH_FIRST_BLOCK: - sm3_ce_hmac_init(&hctx, key, key_len); - sm3_ce_hmac_update(&hctx, data, data_len); - trans_output_result(out_hmac, hctx.sctx.word_reg); -diff --git a/include/drv/wd_digest_drv.h b/include/drv/wd_digest_drv.h -index 8a4aa0b..a55ef5b 100644 ---- a/include/drv/wd_digest_drv.h -+++ b/include/drv/wd_digest_drv.h -@@ -11,7 +11,7 @@ extern "C" { - #endif - - enum hash_block_type { -- HASH_FRIST_BLOCK, -+ HASH_FIRST_BLOCK, - HASH_MIDDLE_BLOCK, - HASH_END_BLOCK, - HASH_SINGLE_BLOCK, -@@ -65,13 +65,13 @@ static inline enum hash_block_type get_hash_block_type(struct wd_digest_msg *msg - { - /* - * [has_next , iv_bytes] -- * [ 1 , 0 ] = long hash(frist bd) -+ * [ 1 , 0 ] = long hash(first bd) - * [ 1 , 1 ] = long hash(middle bd) - * [ 0 , 1 ] = long hash(end bd) - * [ 0 , 0 ] = block hash(single bd) - */ - if (msg->has_next && !msg->iv_bytes) -- return HASH_FRIST_BLOCK; -+ return HASH_FIRST_BLOCK; - else if (msg->has_next && msg->iv_bytes) - return HASH_MIDDLE_BLOCK; - else if (!msg->has_next && msg->iv_bytes) -diff --git a/v1/test/hisi_sec_test/test_hisi_sec.c b/v1/test/hisi_sec_test/test_hisi_sec.c -index 824fe9e..7d94332 100644 ---- a/v1/test/hisi_sec_test/test_hisi_sec.c -+++ b/v1/test/hisi_sec_test/test_hisi_sec.c -@@ -1462,7 +1462,7 @@ static int sec_cipher_async_test(int thread_num, __u64 lcore_mask, - SEC_TST_PRT("%s(): create pool fail!\n", __func__); - return -ENOMEM; - } -- /* frist create the async poll thread! */ -+ /* first create the async poll thread! */ - test_thrds_data[0].pool = pool; - test_thrds_data[0].q = &q; - test_thrds_data[0].thread_num = 1; -@@ -2069,7 +2069,7 @@ static int sec_aead_async_test(int thd_num, __u64 lcore_mask, - SEC_TST_PRT("%s(): create pool fail!\n", __func__); - return -ENOMEM; - } -- /* frist create the async poll thread! */ -+ /* first create the async poll thread! */ - test_thrds_data[0].pool = pool; - test_thrds_data[0].q = &q; - test_thrds_data[0].thread_num = 1; -@@ -2082,7 +2082,6 @@ static int sec_aead_async_test(int thd_num, __u64 lcore_mask, - return ret; - } - -- //Ïß³ÌÊý Óë°óºË - if (_get_one_bits(lcore_mask) == 0 && - _get_one_bits(hcore_mask) == 0) - cnt = thd_num; -diff --git a/v1/test/hisi_sec_test_sgl/test_hisi_sec_sgl.c b/v1/test/hisi_sec_test_sgl/test_hisi_sec_sgl.c -index b7513d1..b13915f 100644 ---- a/v1/test/hisi_sec_test_sgl/test_hisi_sec_sgl.c -+++ b/v1/test/hisi_sec_test_sgl/test_hisi_sec_sgl.c -@@ -1733,7 +1733,7 @@ static int sec_cipher_async_test(int thread_num, __u64 lcore_mask, - SEC_TST_PRT("%s(): create pool fail!\n", __func__); - return -ENOMEM; - } -- /* frist create the async poll thread! */ -+ /* first create the async poll thread! */ - test_thrds_data[0].pool = pool; - test_thrds_data[0].q = &q; - test_thrds_data[0].thread_num = 1; -@@ -2640,7 +2640,7 @@ static int sec_aead_async_test(int thd_num, __u64 lcore_mask, - return -ENOMEM; - } - -- /* frist create the async poll thread! */ -+ /* first create the async poll thread! */ - test_thrds_data[0].pool = pool; - test_thrds_data[0].q = &q; - test_thrds_data[0].thread_num = 1; -@@ -2654,7 +2654,6 @@ static int sec_aead_async_test(int thd_num, __u64 lcore_mask, - return ret; - } - -- //Ïß³ÌÊý Óë°óºË - if (_get_one_bits(lcore_mask) == 0 && - _get_one_bits(hcore_mask) == 0) - cnt = thd_num; -diff --git a/wd_digest.c b/wd_digest.c -index 491502a..10ac080 100644 ---- a/wd_digest.c -+++ b/wd_digest.c -@@ -53,7 +53,7 @@ struct wd_digest_stream_data { - /* Total data length for stream mode */ - __u64 long_data_len; - /* -- * Notify the stream message state, zero is frist message, -+ * Notify the stream message state, zero is first message, - * non-zero is middle or final message. - */ - int msg_state; --- -2.25.1 - diff --git a/0017-uadk-drv-hisi-fix-failed-to-init-drv-after-fork.patch b/0017-uadk-drv-hisi-fix-failed-to-init-drv-after-fork.patch deleted file mode 100644 index 992f1a7..0000000 --- a/0017-uadk-drv-hisi-fix-failed-to-init-drv-after-fork.patch +++ /dev/null @@ -1,152 +0,0 @@ -From 6a6831101e99323fc5e9b63baa7e86ae8ac244ee Mon Sep 17 00:00:00 2001 -From: Yang Shen -Date: Thu, 22 Feb 2024 15:23:33 +0800 -Subject: [PATCH 17/44] uadk: drv/hisi - fix failed to init drv after fork - -The drivers initialization function use 'drv.priv' to forbid reinit. -But if the child process is forked after the parent process has -initialized, it can't work due to the drivers go to wrong branch on -initialization. - -And the algorithms initialization function is already protected -against re-entry. So it is unnecessary to check 'drv.priv' in driver. - -Signed-off-by: Yang Shen ---- - drv/hisi_comp.c | 7 +------ - drv/hisi_hpre.c | 34 ++++++++++++++-------------------- - drv/hisi_sec.c | 7 +------ - 3 files changed, 16 insertions(+), 32 deletions(-) - -diff --git a/drv/hisi_comp.c b/drv/hisi_comp.c -index 2cb9a6b..a1af567 100644 ---- a/drv/hisi_comp.c -+++ b/drv/hisi_comp.c -@@ -787,18 +787,13 @@ static void hisi_zip_sqe_ops_adapt(handle_t h_qp) - - static int hisi_zip_init(struct wd_alg_driver *drv, void *conf) - { -- struct hisi_zip_ctx *priv = (struct hisi_zip_ctx *)drv->priv; - struct wd_ctx_config_internal *config = conf; - struct hisi_qm_priv qm_priv; -+ struct hisi_zip_ctx *priv; - handle_t h_qp = 0; - handle_t h_ctx; - __u32 i, j; - -- if (priv) { -- /* return if already inited */ -- return 0; -- } -- - if (!config->ctx_num) { - WD_ERR("invalid: zip init config ctx num is 0!\n"); - return -WD_EINVAL; -diff --git a/drv/hisi_hpre.c b/drv/hisi_hpre.c -index 049e60e..babc795 100644 ---- a/drv/hisi_hpre.c -+++ b/drv/hisi_hpre.c -@@ -527,62 +527,56 @@ out: - static int hpre_rsa_dh_init(struct wd_alg_driver *drv, void *conf) - { - struct wd_ctx_config_internal *config = (struct wd_ctx_config_internal *)conf; -- struct hisi_hpre_ctx *priv = (struct hisi_hpre_ctx *)drv->priv; - struct hisi_qm_priv qm_priv; -+ struct hisi_hpre_ctx *priv; - int ret; - -- if (priv) { -- /* return if already inited */ -- return WD_SUCCESS; -- } -- - if (!config->ctx_num) { - WD_ERR("invalid: hpre rsa/dh init config ctx num is 0!\n"); - return -WD_EINVAL; - } - -- drv->priv = malloc(sizeof(struct hisi_hpre_ctx)); -- if (!drv->priv) -+ priv = malloc(sizeof(struct hisi_hpre_ctx)); -+ if (!priv) - return -WD_EINVAL; - - qm_priv.op_type = HPRE_HW_V2_ALG_TYPE; -- ret = hpre_init_qm_priv(config, drv->priv, &qm_priv); -+ ret = hpre_init_qm_priv(config, priv, &qm_priv); - if (ret) { -- free(drv->priv); -+ free(priv); - return ret; - } - -+ drv->priv = priv; -+ - return WD_SUCCESS; - } - - static int hpre_ecc_init(struct wd_alg_driver *drv, void *conf) - { - struct wd_ctx_config_internal *config = (struct wd_ctx_config_internal *)conf; -- struct hisi_hpre_ctx *priv = (struct hisi_hpre_ctx *)drv->priv; - struct hisi_qm_priv qm_priv; -+ struct hisi_hpre_ctx *priv; - int ret; - -- if (priv) { -- /* return if already inited */ -- return WD_SUCCESS; -- } -- - if (!config->ctx_num) { - WD_ERR("invalid: hpre ecc init config ctx num is 0!\n"); - return -WD_EINVAL; - } - -- drv->priv = malloc(sizeof(struct hisi_hpre_ctx)); -- if (!drv->priv) -+ priv = malloc(sizeof(struct hisi_hpre_ctx)); -+ if (!priv) - return -WD_EINVAL; - - qm_priv.op_type = HPRE_HW_V3_ECC_ALG_TYPE; -- ret = hpre_init_qm_priv(config, drv->priv, &qm_priv); -+ ret = hpre_init_qm_priv(config, priv, &qm_priv); - if (ret) { -- free(drv->priv); -+ free(priv); - return ret; - } - -+ drv->priv = priv; -+ - return WD_SUCCESS; - } - -diff --git a/drv/hisi_sec.c b/drv/hisi_sec.c -index ac62109..852340d 100644 ---- a/drv/hisi_sec.c -+++ b/drv/hisi_sec.c -@@ -3041,18 +3041,13 @@ static int hisi_sec_aead_recv_v3(struct wd_alg_driver *drv, handle_t ctx, void * - - static int hisi_sec_init(struct wd_alg_driver *drv, void *conf) - { -- struct hisi_sec_ctx *priv = (struct hisi_sec_ctx *)drv->priv; - struct wd_ctx_config_internal *config = conf; - struct hisi_qm_priv qm_priv; -+ struct hisi_sec_ctx *priv; - handle_t h_qp = 0; - handle_t h_ctx; - __u32 i, j; - -- if (priv) { -- /* return if already inited */ -- return 0; -- } -- - if (!config->ctx_num) { - WD_ERR("invalid: sec init config ctx num is 0!\n"); - return -WD_EINVAL; --- -2.25.1 - diff --git a/0018-wd_rsa-fix-wd_rsa_common_uninit-re-entry.patch b/0018-wd_rsa-fix-wd_rsa_common_uninit-re-entry.patch deleted file mode 100644 index c1a6a98..0000000 --- a/0018-wd_rsa-fix-wd_rsa_common_uninit-re-entry.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 2366ff7e765c5c451ab761cd0f9f9f6fbde4add3 Mon Sep 17 00:00:00 2001 -From: Zhangfei Gao -Date: Thu, 1 Feb 2024 14:25:14 +0000 -Subject: [PATCH 18/44] wd_rsa: fix wd_rsa_common_uninit re-entry - -Fix wd_rsa_common_uninit re-entry - -Fixs: 3fc344a drivers alloc and free resources by themself -Signed-off-by: Zhangfei Gao ---- - wd_rsa.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/wd_rsa.c b/wd_rsa.c -index de0b796..8e51177 100644 ---- a/wd_rsa.c -+++ b/wd_rsa.c -@@ -167,6 +167,12 @@ out_clear_ctx_config: - - static int wd_rsa_common_uninit(void) - { -+ enum wd_status status; -+ -+ wd_alg_get_init(&wd_rsa_setting.status, &status); -+ if (status == WD_UNINIT) -+ return -WD_EINVAL; -+ - /* uninit async request pool */ - wd_uninit_async_request_pool(&wd_rsa_setting.pool); - --- -2.25.1 - diff --git a/0019-wd_dh-Fix-wd_aead_uninit-re-entry.patch b/0019-wd_dh-Fix-wd_aead_uninit-re-entry.patch deleted file mode 100644 index 5f547ed..0000000 --- a/0019-wd_dh-Fix-wd_aead_uninit-re-entry.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 72d2f8d98ee7322463f66be3aa8dea7a9e0b0811 Mon Sep 17 00:00:00 2001 -From: Zhangfei Gao -Date: Tue, 19 Mar 2024 02:37:51 +0000 -Subject: [PATCH 19/44] wd_dh: Fix wd_aead_uninit re-entry - -Check status for the re-entry - -Signed-off-by: Zhangfei Gao ---- - wd_dh.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/wd_dh.c b/wd_dh.c -index d23bb61..4d08de6 100644 ---- a/wd_dh.c -+++ b/wd_dh.c -@@ -127,6 +127,12 @@ out_clear_ctx_config: - - static int wd_dh_common_uninit(void) - { -+ enum wd_status status; -+ -+ wd_alg_get_init(&wd_dh_setting.status, &status); -+ if (status == WD_UNINIT) -+ return -WD_EINVAL; -+ - /* uninit async request pool */ - wd_uninit_async_request_pool(&wd_dh_setting.pool); - --- -2.25.1 - diff --git a/0020-wd_ecc-Fix-wd_ecc_uninit-re-entry.patch b/0020-wd_ecc-Fix-wd_ecc_uninit-re-entry.patch deleted file mode 100644 index 6d0e453..0000000 --- a/0020-wd_ecc-Fix-wd_ecc_uninit-re-entry.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 105fec19d2f5008009504e9e051dc2aec42bd113 Mon Sep 17 00:00:00 2001 -From: Zhangfei Gao -Date: Tue, 19 Mar 2024 02:40:09 +0000 -Subject: [PATCH 20/44] wd_ecc: Fix wd_ecc_uninit re-entry - -Check status for the re-entry - -Signed-off-by: Zhangfei Gao ---- - wd_ecc.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/wd_ecc.c b/wd_ecc.c -index 9aa1519..e75bca0 100644 ---- a/wd_ecc.c -+++ b/wd_ecc.c -@@ -190,6 +190,12 @@ out_clear_ctx_config: - - static int wd_ecc_common_uninit(void) - { -+ enum wd_status status; -+ -+ wd_alg_get_init(&wd_ecc_setting.status, &status); -+ if (status == WD_UNINIT) -+ return -WD_EINVAL; -+ - /* uninit async request pool */ - wd_uninit_async_request_pool(&wd_ecc_setting.pool); - --- -2.25.1 - diff --git a/0021-wd_digest-uninit-check-status-in-one-func.patch b/0021-wd_digest-uninit-check-status-in-one-func.patch deleted file mode 100644 index 23bf5b6..0000000 --- a/0021-wd_digest-uninit-check-status-in-one-func.patch +++ /dev/null @@ -1,71 +0,0 @@ -From f690d2e248be5270b9cdda6f2b8af18af580ab49 Mon Sep 17 00:00:00 2001 -From: Zhangfei Gao -Date: Tue, 19 Mar 2024 02:42:39 +0000 -Subject: [PATCH 21/44] wd_digest: uninit check status in one func - -To simplify code, checking status in one func - -Signed-off-by: Zhangfei Gao ---- - wd_digest.c | 23 ++++++++++++++--------- - 1 file changed, 14 insertions(+), 9 deletions(-) - -diff --git a/wd_digest.c b/wd_digest.c -index 10ac080..0df7204 100644 ---- a/wd_digest.c -+++ b/wd_digest.c -@@ -296,23 +296,29 @@ out_clear_init: - return ret; - } - --static void wd_digest_uninit_nolock(void) -+static int wd_digest_uninit_nolock(void) - { -+ enum wd_status status; -+ -+ wd_alg_get_init(&wd_digest_setting.status, &status); -+ if (status == WD_UNINIT) -+ return -WD_EINVAL; -+ - wd_uninit_async_request_pool(&wd_digest_setting.pool); - wd_clear_sched(&wd_digest_setting.sched); - wd_alg_uninit_driver(&wd_digest_setting.config, - wd_digest_setting.driver); -+ return 0; - } - - void wd_digest_uninit(void) - { -- enum wd_status status; -+ int ret; - -- wd_alg_get_init(&wd_digest_setting.status, &status); -- if (status == WD_UNINIT) -+ ret = wd_digest_uninit_nolock(); -+ if (ret) - return; - -- wd_digest_uninit_nolock(); - wd_digest_close_driver(); - wd_alg_clear_init(&wd_digest_setting.status); - } -@@ -419,13 +425,12 @@ out_uninit: - - void wd_digest_uninit2(void) - { -- enum wd_status status; -+ int ret; - -- wd_alg_get_init(&wd_digest_setting.status, &status); -- if (status == WD_UNINIT) -+ ret = wd_digest_uninit_nolock(); -+ if (ret) - return; - -- wd_digest_uninit_nolock(); - wd_alg_attrs_uninit(&wd_digest_init_attrs); - wd_alg_drv_unbind(wd_digest_setting.driver); - wd_dlclose_drv(wd_digest_setting.dlh_list); --- -2.25.1 - diff --git a/0022-wd_aead-uninit-check-status-in-one-func.patch b/0022-wd_aead-uninit-check-status-in-one-func.patch deleted file mode 100644 index e5e6a53..0000000 --- a/0022-wd_aead-uninit-check-status-in-one-func.patch +++ /dev/null @@ -1,72 +0,0 @@ -From e726680f9c8c9bfcf143d529be34d5b7ce2157be Mon Sep 17 00:00:00 2001 -From: Zhangfei Gao -Date: Tue, 19 Mar 2024 02:44:21 +0000 -Subject: [PATCH 22/44] wd_aead: uninit check status in one func - -To simplify code, checking status in one func - -Signed-off-by: Zhangfei Gao ---- - wd_aead.c | 24 +++++++++++++++--------- - 1 file changed, 15 insertions(+), 9 deletions(-) - -diff --git a/wd_aead.c b/wd_aead.c -index 34a3b86..57daa80 100644 ---- a/wd_aead.c -+++ b/wd_aead.c -@@ -485,23 +485,30 @@ out_clear_init: - return ret; - } - --static void wd_aead_uninit_nolock(void) -+static int wd_aead_uninit_nolock(void) - { -+ enum wd_status status; -+ -+ wd_alg_get_init(&wd_aead_setting.status, &status); -+ if (status == WD_UNINIT) -+ return -WD_EINVAL; -+ - wd_uninit_async_request_pool(&wd_aead_setting.pool); - wd_clear_sched(&wd_aead_setting.sched); - wd_alg_uninit_driver(&wd_aead_setting.config, - wd_aead_setting.driver); -+ -+ return 0; - } - - void wd_aead_uninit(void) - { -- enum wd_status status; -+ int ret; - -- wd_alg_get_init(&wd_aead_setting.status, &status); -- if (status == WD_UNINIT) -+ ret = wd_aead_uninit_nolock(); -+ if (ret) - return; - -- wd_aead_uninit_nolock(); - wd_aead_close_driver(); - wd_alg_clear_init(&wd_aead_setting.status); - } -@@ -614,13 +621,12 @@ out_uninit: - - void wd_aead_uninit2(void) - { -- enum wd_status status; -+ int ret; - -- wd_alg_get_init(&wd_aead_setting.status, &status); -- if (status == WD_UNINIT) -+ ret = wd_aead_uninit_nolock(); -+ if (ret) - return; - -- wd_aead_uninit_nolock(); - wd_alg_attrs_uninit(&wd_aead_init_attrs); - wd_alg_drv_unbind(wd_aead_setting.driver); - wd_dlclose_drv(wd_aead_setting.dlh_list); --- -2.25.1 - diff --git a/0023-makefile-install-wd_zlibwrapper.h-to-system.patch b/0023-makefile-install-wd_zlibwrapper.h-to-system.patch deleted file mode 100644 index 7f29306..0000000 --- a/0023-makefile-install-wd_zlibwrapper.h-to-system.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 9d4a68db517d42ac3cb9ae66aabfb2ea73303344 Mon Sep 17 00:00:00 2001 -From: Zhangfei Gao -Date: Sun, 10 Mar 2024 13:57:53 +0000 -Subject: [PATCH 23/44] makefile: install wd_zlibwrapper.h to system - -wd_zlibwrapper.h is requird by other sub-system, so move -it to system header folder like /usr/local/include/uadk/ - -Signed-off-by: Zhangfei Gao ---- - Makefile.am | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/Makefile.am b/Makefile.am -index 19eab30..cd3d7e5 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -35,7 +35,8 @@ AM_CFLAGS+= -DUADK_RELEASED_TIME="\"Released ${MONTH} ${DAY}, ${YEAR}\"" - pkginclude_HEADERS = include/wd.h include/wd_cipher.h include/wd_aead.h \ - include/wd_comp.h include/wd_dh.h include/wd_digest.h \ - include/wd_rsa.h include/uacce.h include/wd_alg_common.h \ -- include/wd_ecc.h include/wd_sched.h include/wd_alg.h -+ include/wd_ecc.h include/wd_sched.h include/wd_alg.h \ -+ include/wd_zlibwrapper.h - - nobase_pkginclude_HEADERS = v1/wd.h v1/wd_cipher.h v1/wd_aead.h v1/uacce.h v1/wd_dh.h \ - v1/wd_digest.h v1/wd_rsa.h v1/wd_bmm.h -@@ -67,7 +68,7 @@ libwd_la_SOURCES=wd.c wd_mempool.c wd.h wd_alg.c wd_alg.h \ - v1/drv/hisi_rng_udrv.c v1/drv/hisi_rng_udrv.h - - libwd_comp_la_SOURCES=wd_comp.c wd_comp.h wd_comp_drv.h wd_util.c wd_util.h \ -- wd_sched.c wd_sched.h wd.c wd.h wd_zlibwrapper.c wd_zlibwrapper.h -+ wd_sched.c wd_sched.h wd.c wd.h wd_zlibwrapper.c - - libhisi_zip_la_SOURCES=drv/hisi_comp.c hisi_comp.h drv/hisi_qm_udrv.c \ - hisi_qm_udrv.h wd_comp_drv.h --- -2.25.1 - diff --git a/0024-conf-fix-includedir.patch b/0024-conf-fix-includedir.patch deleted file mode 100644 index 002989d..0000000 --- a/0024-conf-fix-includedir.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 9590cd2df74a0bf82fa4d3420e851792195f782a Mon Sep 17 00:00:00 2001 -From: Zhangfei Gao -Date: Sun, 10 Mar 2024 14:02:03 +0000 -Subject: [PATCH 24/44] conf: fix includedir - -pkgincludedir already appended $(PACKAGE) [1], so no need -adding "uadk". Otherwise, header files will be installed to -"/usr/local/include/uadk/uadk/" - -[1] https://www.sourceware.org/autobook/autobook/autobook_76.html -pkgincludedir -This is a convenience variable whose value is -"$(includedir)/$(PACKAGE)". - -Signed-off-by: Zhangfei Gao ---- - conf.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/conf.sh b/conf.sh -index 59af821..c361fbc 100755 ---- a/conf.sh -+++ b/conf.sh -@@ -16,5 +16,5 @@ ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes ./configure \ - --enable-perf=yes \ - --host aarch64-linux-gnu \ - --target aarch64-linux-gnu \ -- --includedir=/usr/local/include/uadk \ -+ --includedir=/usr/local/include/ \ - $COMPILE_TYPE --- -2.25.1 - diff --git a/0025-cipher-add-support-for-SM4-CBC-and-CTR-modes-in-CE-i.patch b/0025-cipher-add-support-for-SM4-CBC-and-CTR-modes-in-CE-i.patch deleted file mode 100644 index 7fbb8f4..0000000 --- a/0025-cipher-add-support-for-SM4-CBC-and-CTR-modes-in-CE-i.patch +++ /dev/null @@ -1,1170 +0,0 @@ -From eec2accd50fffe1399151112f53f4061b0eef2f0 Mon Sep 17 00:00:00 2001 -From: Wenkai Lin -Date: Wed, 20 Mar 2024 16:11:22 +0800 -Subject: [PATCH 25/44] cipher: add support for SM4 CBC and CTR modes in CE - instruction - -This patch implements the CE instruction using SM4 CBC and CTR modes, -and includes the necessary logic for mode-specific operations, -such as generating initialization vectors (IV) and handling chaining -and counter values. - -Signed-off-by: Wenkai Lin -Signed-off-by: Qi Tao ---- - Makefile.am | 5 +- - drv/isa_ce_sm4.c | 235 +++++++++++++ - drv/isa_ce_sm4.h | 38 ++ - drv/isa_ce_sm4_armv8.S | 774 +++++++++++++++++++++++++++++++++++++++++ - v1/wd.c | 3 +- - v1/wd_rng.c | 4 +- - wd_cipher.c | 4 +- - 7 files changed, 1056 insertions(+), 7 deletions(-) - create mode 100644 drv/isa_ce_sm4.c - create mode 100644 drv/isa_ce_sm4.h - create mode 100644 drv/isa_ce_sm4_armv8.S - -diff --git a/Makefile.am b/Makefile.am -index cd3d7e5..f78ad14 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -78,6 +78,7 @@ libwd_crypto_la_SOURCES=wd_cipher.c wd_cipher.h wd_cipher_drv.h \ - wd_rsa.c wd_rsa.h wd_rsa_drv.h \ - wd_dh.c wd_dh.h wd_dh_drv.h \ - wd_ecc.c wd_ecc.h wd_ecc_drv.h \ -+ arm_arch_ce.h isa_ce_sm3.h isa_ce_sm4.h \ - wd_digest.c wd_digest.h wd_digest_drv.h \ - wd_util.c wd_util.h \ - wd_sched.c wd_sched.h \ -@@ -90,8 +91,8 @@ libhisi_sec_la_SOURCES=drv/hisi_sec.c drv/hisi_qm_udrv.c \ - libhisi_hpre_la_SOURCES=drv/hisi_hpre.c drv/hisi_qm_udrv.c \ - hisi_qm_udrv.h - --libisa_ce_la_SOURCES=drv/isa_ce_sm3.c drv/isa_ce_sm3_armv8.S arm_arch_ce.h \ -- drv/isa_ce_sm3.h -+libisa_ce_la_SOURCES=arm_arch_ce.h drv/isa_ce_sm3.c drv/isa_ce_sm3_armv8.S isa_ce_sm3.h \ -+ drv/isa_ce_sm4.c drv/isa_ce_sm4_armv8.S drv/isa_ce_sm4.h - - if WD_STATIC_DRV - AM_CFLAGS += -DWD_STATIC_DRV -fPIC -diff --git a/drv/isa_ce_sm4.c b/drv/isa_ce_sm4.c -new file mode 100644 -index 0000000..e2d81de ---- /dev/null -+++ b/drv/isa_ce_sm4.c -@@ -0,0 +1,235 @@ -+// SPDX-License-Identifier: Apache-2.0 -+/* -+ * Copyright 2011-2022 The OpenSSL Project Authors. All Rights Reserved. -+ * -+ * Licensed under the Apache License 2.0 (the "License"). You may not use -+ * this file except in compliance with the License. You can obtain a copy -+ * in the file LICENSE in the source distribution or at -+ * https://www.openssl.org/source/license.html -+ */ -+/* -+ * Copyright 2024 Huawei Technologies Co.,Ltd. All rights reserved. -+ */ -+ -+#include "drv/wd_cipher_drv.h" -+#include "wd_cipher.h" -+#include "isa_ce_sm4.h" -+ -+#define SM4_ENCRYPT 1 -+#define SM4_DECRYPT 0 -+#define MSG_Q_DEPTH 1024 -+#define INCREASE_BYTES 12 -+#define SM4_BLOCK_SIZE 16 -+#define MAX_BLOCK_NUM (1U << 28) -+#define CTR96_SHIFT_BITS 8 -+ -+#define GETU32(p) \ -+ ((__u32)(p)[0] << 24 | (__u32)(p)[1] << 16 | (__u32)(p)[2] << 8 | (__u32)(p)[3]) -+#define PUTU32(p, v) \ -+ ((p)[0] = (__u8)((v) >> 24), (p)[1] = (__u8)((v) >> 16), \ -+ (p)[2] = (__u8)((v) >> 8), (p)[3] = (__u8)(v)) -+ -+static int isa_ce_init(struct wd_alg_driver *drv, void *conf) -+{ -+ struct wd_ctx_config_internal *config = conf; -+ struct sm4_ce_drv_ctx *sctx = drv->priv; -+ -+ config->epoll_en = 0; -+ memcpy(&sctx->config, config, sizeof(struct wd_ctx_config_internal)); -+ -+ return 0; -+} -+ -+static void isa_ce_exit(struct wd_alg_driver *drv) -+{ -+} -+ -+/* increment upper 96 bits of 128-bit counter by 1 */ -+static void ctr96_inc(__u8 *counter) -+{ -+ __u32 n = INCREASE_BYTES; -+ __u32 c = 1; -+ -+ do { -+ --n; -+ c += counter[n]; -+ counter[n] = (__u8)c; -+ c >>= CTR96_SHIFT_BITS; -+ } while (n); -+} -+ -+static void sm4_v8_ctr32_encrypt(__u8 *in, __u8 *out, -+ __u64 len, const struct SM4_KEY *key, __u8 *iv) -+{ -+ __u8 ecount_buf[SM4_BLOCK_SIZE] = {0}; -+ __u64 blocks, offset; -+ __u32 ctr32; -+ __u32 n = 0; -+ -+ ctr32 = GETU32(iv + INCREASE_BYTES); -+ while (len >= SM4_BLOCK_SIZE) { -+ blocks = len / SM4_BLOCK_SIZE; -+ /* -+ * 1<<28 is just a not-so-small yet not-so-large number... -+ * Below condition is practically never met, but it has to -+ * be checked for code correctness. -+ */ -+ if (blocks > MAX_BLOCK_NUM) -+ blocks = MAX_BLOCK_NUM; -+ /* -+ * As (*func) operates on 32-bit counter, caller -+ * has to handle overflow. 'if' below detects the -+ * overflow, which is then handled by limiting the -+ * amount of blocks to the exact overflow point... -+ */ -+ ctr32 += (__u32)blocks; -+ if (ctr32 < blocks) { -+ blocks -= ctr32; -+ ctr32 = 0; -+ } -+ sm4_v8_ctr32_encrypt_blocks(in, out, blocks, key, iv); -+ /* (*ctr) does not update iv, caller does: */ -+ PUTU32(iv + INCREASE_BYTES, ctr32); -+ /* ... overflow was detected, propagate carry. */ -+ if (ctr32 == 0) -+ ctr96_inc(iv); -+ offset = blocks * SM4_BLOCK_SIZE; -+ len -= offset; -+ out += offset; -+ in += offset; -+ } -+ if (len) { -+ sm4_v8_ctr32_encrypt_blocks(ecount_buf, ecount_buf, 1, key, iv); -+ ++ctr32; -+ PUTU32(iv + INCREASE_BYTES, ctr32); -+ if (ctr32 == 0) -+ ctr96_inc(iv); -+ while (len--) { -+ out[n] = in[n] ^ ecount_buf[n]; -+ ++n; -+ } -+ } -+} -+ -+static void sm4_ctr_encrypt(struct wd_cipher_msg *msg, const struct SM4_KEY *rkey_enc) -+{ -+ sm4_v8_ctr32_encrypt(msg->in, msg->out, msg->in_bytes, rkey_enc, msg->iv); -+} -+ -+static void sm4_cbc_encrypt(struct wd_cipher_msg *msg, const struct SM4_KEY *rkey_enc) -+{ -+ sm4_v8_cbc_encrypt(msg->in, msg->out, msg->in_bytes, rkey_enc, msg->iv, SM4_ENCRYPT); -+} -+ -+static void sm4_cbc_decrypt(struct wd_cipher_msg *msg, const struct SM4_KEY *rkey_dec) -+{ -+ sm4_v8_cbc_encrypt(msg->in, msg->out, msg->in_bytes, rkey_dec, msg->iv, SM4_DECRYPT); -+} -+ -+void sm4_set_encrypt_key(const __u8 *userKey, struct SM4_KEY *key) -+{ -+ sm4_v8_set_encrypt_key(userKey, key); -+} -+ -+void sm4_set_decrypt_key(const __u8 *userKey, struct SM4_KEY *key) -+{ -+ sm4_v8_set_decrypt_key(userKey, key); -+} -+ -+static int isa_ce_cipher_send(struct wd_alg_driver *drv, handle_t ctx, void *wd_msg) -+{ -+ struct wd_cipher_msg *msg = wd_msg; -+ struct SM4_KEY rkey; -+ -+ if (!msg) { -+ WD_ERR("invalid: input sm4 msg is NULL!\n"); -+ return -WD_EINVAL; -+ } -+ -+ if (msg->data_fmt == WD_SGL_BUF) { -+ WD_ERR("invalid: SM4 CE driver do not support sgl data format!\n"); -+ return -WD_EINVAL; -+ } -+ -+ if (msg->op_type == WD_CIPHER_ENCRYPTION || msg->mode == WD_CIPHER_CTR) -+ sm4_set_encrypt_key(msg->key, &rkey); -+ else -+ sm4_set_decrypt_key(msg->key, &rkey); -+ -+ switch (msg->mode) { -+ case WD_CIPHER_CBC: -+ if (msg->op_type == WD_CIPHER_ENCRYPTION) -+ sm4_cbc_encrypt(msg, &rkey); -+ else -+ sm4_cbc_decrypt(msg, &rkey); -+ break; -+ case WD_CIPHER_CTR: -+ sm4_ctr_encrypt(msg, &rkey); -+ break; -+ default: -+ WD_ERR("The current block cipher mode is not supported!\n"); -+ return -WD_EINVAL; -+ } -+ -+ return 0; -+} -+ -+static int isa_ce_cipher_recv(struct wd_alg_driver *drv, handle_t ctx, void *wd_msg) -+{ -+ return 0; -+} -+ -+static int cipher_send(struct wd_alg_driver *drv, handle_t ctx, void *msg) -+{ -+ return isa_ce_cipher_send(drv, ctx, msg); -+} -+ -+static int cipher_recv(struct wd_alg_driver *drv, handle_t ctx, void *msg) -+{ -+ return isa_ce_cipher_recv(drv, ctx, msg); -+} -+ -+#define GEN_CE_ALG_DRIVER(ce_alg_name, alg_type) \ -+{\ -+ .drv_name = "isa_ce_sm4",\ -+ .alg_name = (ce_alg_name),\ -+ .calc_type = UADK_ALG_CE_INSTR,\ -+ .priority = 200,\ -+ .op_type_num = 1,\ -+ .fallback = 0,\ -+ .init = isa_ce_init,\ -+ .exit = isa_ce_exit,\ -+ .send = alg_type##_send,\ -+ .recv = alg_type##_recv,\ -+} -+ -+static struct wd_alg_driver cipher_alg_driver[] = { -+ GEN_CE_ALG_DRIVER("cbc(sm4)", cipher), -+ GEN_CE_ALG_DRIVER("ctr(sm4)", cipher), -+}; -+ -+static void __attribute__((constructor)) isa_ce_probe(void) -+{ -+ __u32 alg_num, i; -+ int ret; -+ -+ WD_INFO("Info: register SM4 CE alg drivers!\n"); -+ -+ alg_num = ARRAY_SIZE(cipher_alg_driver); -+ for (i = 0; i < alg_num; i++) { -+ ret = wd_alg_driver_register(&cipher_alg_driver[i]); -+ if (ret && ret != -WD_ENODEV) -+ WD_ERR("Error: register SM4 CE %s failed!\n", -+ cipher_alg_driver[i].alg_name); -+ } -+} -+ -+static void __attribute__((destructor)) isa_ce_remove(void) -+{ -+ __u32 alg_num, i; -+ -+ WD_INFO("Info: unregister SM4 CE alg drivers!\n"); -+ alg_num = ARRAY_SIZE(cipher_alg_driver); -+ for (i = 0; i < alg_num; i++) -+ wd_alg_driver_unregister(&cipher_alg_driver[i]); -+} -diff --git a/drv/isa_ce_sm4.h b/drv/isa_ce_sm4.h -new file mode 100644 -index 0000000..0bc074d ---- /dev/null -+++ b/drv/isa_ce_sm4.h -@@ -0,0 +1,38 @@ -+/* SPDX-License-Identifier: Apache-2.0 */ -+/* Copyright 2024 Huawei Technologies Co.,Ltd. All rights reserved. */ -+ -+#ifndef __SM4_CE_DRV_H -+#define __SM4_CE_DRV_H -+ -+#pragma once -+#include -+#include "wd_alg_common.h" -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+#define SM4_KEY_SCHEDULE 32 -+ -+struct SM4_KEY { -+ __u32 rk[SM4_KEY_SCHEDULE]; -+}; -+ -+struct sm4_ce_drv_ctx { -+ struct wd_ctx_config_internal config; -+}; -+ -+ -+void sm4_v8_set_encrypt_key(const unsigned char *userKey, struct SM4_KEY *key); -+void sm4_v8_set_decrypt_key(const unsigned char *userKey, struct SM4_KEY *key); -+void sm4_v8_cbc_encrypt(const unsigned char *in, unsigned char *out, -+ size_t length, const struct SM4_KEY *key, -+ unsigned char *ivec, const int enc); -+void sm4_v8_ctr32_encrypt_blocks(const unsigned char *in, unsigned char *out, -+ size_t len, const void *key, const unsigned char ivec[16]); -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif /* __SM4_CE_DRV_H */ -diff --git a/drv/isa_ce_sm4_armv8.S b/drv/isa_ce_sm4_armv8.S -new file mode 100644 -index 0000000..d7d172a ---- /dev/null -+++ b/drv/isa_ce_sm4_armv8.S -@@ -0,0 +1,774 @@ -+/* SPDX-License-Identifier: Apache-2.0 */ -+/* -+ * Copyright 2011-2022 The OpenSSL Project Authors. All Rights Reserved. -+ * -+ * Licensed under the Apache License 2.0 (the "License"). You may not use -+ * this file except in compliance with the License. You can obtain a copy -+ * in the file LICENSE in the source distribution or at -+ * https://www.openssl.org/source/license.html -+ */ -+#include "../include/drv/arm_arch_ce.h" -+ -+.arch armv8-a+crypto -+ -+.irp b, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, \ -+ 16, 17, 18, 19, 20, 21, 22, 23 24, 25, 26, 27, 28, 29, 30, 31 -+ .set .Lv\b\().4s, \b -+.endr -+ -+.macro sm4e, vd, vn -+ .inst 0xcec08400 | (.L\vn << 5) | .L\vd -+.endm -+ -+.macro sm4ekey, vd, vn, vm -+ .inst 0xce60c800 | (.L\vm << 16) | (.L\vn << 5) | .L\vd -+.endm -+ -+.text -+.align 6 -+.Lck: -+.long 0x00070E15, 0x1C232A31, 0x383F464D, 0x545B6269 -+.long 0x70777E85, 0x8C939AA1, 0xA8AFB6BD, 0xC4CBD2D9 -+.long 0xE0E7EEF5, 0xFC030A11, 0x181F262D, 0x343B4249 -+.long 0x50575E65, 0x6C737A81, 0x888F969D, 0xA4ABB2B9 -+.long 0xC0C7CED5, 0xDCE3EAF1, 0xF8FF060D, 0x141B2229 -+.long 0x30373E45, 0x4C535A61, 0x686F767D, 0x848B9299 -+.long 0xA0A7AEB5, 0xBCC3CAD1, 0xD8DFE6ED, 0xF4FB0209 -+.long 0x10171E25, 0x2C333A41, 0x484F565D, 0x646B7279 -+.Lfk: -+.long 0xa3b1bac6, 0x56aa3350, 0x677d9197, 0xb27022dc -+.globl sm4_v8_set_encrypt_key -+.type sm4_v8_set_encrypt_key,%function -+.align 5 -+sm4_v8_set_encrypt_key: -+ AARCH64_VALID_CALL_TARGET -+ ld1 {v0.4s},[x0] -+ adr x2,.Lfk -+ ld1 {v24.4s},[x2] -+ adr x2,.Lck -+ ld1 {v16.4s,v17.4s,v18.4s,v19.4s},[x2],64 -+#ifndef __ARMEB__ -+ rev32 v0.16b,v0.16b -+#endif -+ ld1 {v20.4s,v21.4s,v22.4s,v23.4s},[x2] -+ eor v0.16b,v0.16b,v24.16b; -+ sm4ekey v0.4s,v0.4s,v16.4s; -+ sm4ekey v1.4s,v0.4s,v17.4s; -+ sm4ekey v2.4s,v1.4s,v18.4s; -+ sm4ekey v3.4s,v2.4s,v19.4s; -+ sm4ekey v4.4s,v3.4s,v20.4s; -+ st1 {v0.4s,v1.4s,v2.4s,v3.4s},[x1],64 -+ sm4ekey v5.4s,v4.4s,v21.4s; -+ sm4ekey v6.4s,v5.4s,v22.4s; -+ sm4ekey v7.4s,v6.4s,v23.4s; -+ st1 {v4.4s,v5.4s,v6.4s,v7.4s},[x1] -+ ret -+.size sm4_v8_set_encrypt_key,.-sm4_v8_set_encrypt_key -+.globl sm4_v8_set_decrypt_key -+.type sm4_v8_set_decrypt_key,%function -+.align 5 -+sm4_v8_set_decrypt_key: -+ AARCH64_VALID_CALL_TARGET -+ ld1 {v7.4s},[x0] -+ adr x2,.Lfk -+ ld1 {v24.4s},[x2] -+ adr x2, .Lck -+ ld1 {v16.4s,v17.4s,v18.4s,v19.4s},[x2],64 -+#ifndef __ARMEB__ -+ rev32 v7.16b,v7.16b -+#endif -+ ld1 {v20.4s,v21.4s,v22.4s,v23.4s},[x2] -+ eor v7.16b, v7.16b,v24.16b; -+ sm4ekey v7.4s,v7.4s,v16.4s; -+ sm4ekey v6.4s,v7.4s,v17.4s; -+ sm4ekey v5.4s,v6.4s,v18.4s; -+ rev64 v7.4s,v7.4s -+ rev64 v6.4s,v6.4s -+ ext v7.16b,v7.16b,v7.16b,#8 -+ ext v6.16b,v6.16b,v6.16b,#8 -+ sm4ekey v4.4s,v5.4s,v19.4s; -+ sm4ekey v3.4s,v4.4s,v20.4s; -+ rev64 v5.4s,v5.4s -+ rev64 v4.4s,v4.4s -+ ext v5.16b,v5.16b,v5.16b,#8 -+ ext v4.16b,v4.16b,v4.16b,#8 -+ sm4ekey v2.4s,v3.4s,v21.4s; -+ sm4ekey v1.4s,v2.4s,v22.4s; -+ rev64 v3.4s,v3.4s -+ rev64 v2.4s,v2.4s -+ ext v3.16b,v3.16b,v3.16b,#8 -+ ext v2.16b,v2.16b,v2.16b,#8 -+ sm4ekey v0.4s,v1.4s,v23.4s; -+ rev64 v1.4s, v1.4s -+ rev64 v0.4s, v0.4s -+ ext v1.16b,v1.16b,v1.16b,#8 -+ ext v0.16b,v0.16b,v0.16b,#8 -+ st1 {v0.4s,v1.4s,v2.4s,v3.4s},[x1],64 -+ st1 {v4.4s,v5.4s,v6.4s,v7.4s},[x1] -+ ret -+.size sm4_v8_set_decrypt_key,.-sm4_v8_set_decrypt_key -+.globl sm4_v8_cbc_encrypt -+.type sm4_v8_cbc_encrypt,%function -+.align 5 -+sm4_v8_cbc_encrypt: -+ AARCH64_VALID_CALL_TARGET -+ stp d8,d9,[sp, #-16]! -+ -+ ld1 {v0.4s,v1.4s,v2.4s,v3.4s},[x3],#64 -+ ld1 {v4.4s,v5.4s,v6.4s,v7.4s},[x3] -+ ld1 {v8.4s},[x4] -+ cmp w5,#0 -+ b.eq .Ldec -+1: -+ cmp x2, #64 -+ b.lt 1f -+ ld1 {v16.4s,v17.4s,v18.4s,v19.4s},[x0],#64 -+ eor v16.16b,v16.16b,v8.16b -+#ifndef __ARMEB__ -+ rev32 v17.16b,v17.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v16.16b,v16.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v18.16b,v18.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v19.16b,v19.16b -+#endif -+ sm4e v16.4s,v0.4s; -+ sm4e v16.4s,v1.4s; -+ sm4e v16.4s,v2.4s; -+ sm4e v16.4s,v3.4s; -+ sm4e v16.4s,v4.4s; -+ sm4e v16.4s,v5.4s; -+ sm4e v16.4s,v6.4s; -+ sm4e v16.4s,v7.4s; -+ rev64 v16.4s,v16.4s -+ ext v16.16b,v16.16b,v16.16b,#8 -+ eor v17.16b,v17.16b,v16.16b -+ sm4e v17.4s,v0.4s; -+ sm4e v17.4s,v1.4s; -+ sm4e v17.4s,v2.4s; -+ sm4e v17.4s,v3.4s; -+ sm4e v17.4s,v4.4s; -+ sm4e v17.4s,v5.4s; -+ sm4e v17.4s,v6.4s; -+ sm4e v17.4s,v7.4s; -+ rev64 v17.4s,v17.4s -+ ext v17.16b,v17.16b,v17.16b,#8 -+#ifndef __ARMEB__ -+ rev32 v16.16b,v16.16b -+#endif -+ eor v18.16b,v18.16b,v17.16b -+ sm4e v18.4s,v0.4s; -+ sm4e v18.4s,v1.4s; -+ sm4e v18.4s,v2.4s; -+ sm4e v18.4s,v3.4s; -+ sm4e v18.4s,v4.4s; -+ sm4e v18.4s,v5.4s; -+ sm4e v18.4s,v6.4s; -+ sm4e v18.4s,v7.4s; -+ rev64 v18.4s,v18.4s -+ ext v18.16b,v18.16b,v18.16b,#8 -+#ifndef __ARMEB__ -+ rev32 v17.16b,v17.16b -+#endif -+ eor v19.16b,v19.16b,v18.16b -+ sm4e v19.4s,v0.4s; -+ sm4e v19.4s,v1.4s; -+ sm4e v19.4s,v2.4s; -+ sm4e v19.4s,v3.4s; -+ sm4e v19.4s,v4.4s; -+ sm4e v19.4s,v5.4s; -+ sm4e v19.4s,v6.4s; -+ sm4e v19.4s,v7.4s; -+ rev64 v19.4s,v19.4s -+ ext v19.16b,v19.16b,v19.16b,#8 -+#ifndef __ARMEB__ -+ rev32 v18.16b,v18.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v19.16b,v19.16b -+#endif -+ mov v8.16b,v19.16b -+ st1 {v16.4s,v17.4s,v18.4s,v19.4s},[x1],#64 -+ subs x2,x2,#64 -+ b.ne 1b -+1: -+ subs x2,x2,#16 -+ b.lt 3f -+ ld1 {v16.4s},[x0],#16 -+ eor v8.16b,v8.16b,v16.16b -+#ifndef __ARMEB__ -+ rev32 v8.16b,v8.16b -+#endif -+ sm4e v8.4s,v0.4s; -+ sm4e v8.4s,v1.4s; -+ sm4e v8.4s,v2.4s; -+ sm4e v8.4s,v3.4s; -+ sm4e v8.4s,v4.4s; -+ sm4e v8.4s,v5.4s; -+ sm4e v8.4s,v6.4s; -+ sm4e v8.4s,v7.4s; -+ rev64 v8.4s,v8.4s -+ ext v8.16b,v8.16b,v8.16b,#8 -+#ifndef __ARMEB__ -+ rev32 v8.16b,v8.16b -+#endif -+ st1 {v8.16b},[x1],#16 -+ b.ne 1b -+ b 3f -+.Ldec: -+1: -+ cmp x2, #64 -+ b.lt 1f -+ ld1 {v16.4s,v17.4s,v18.4s,v19.4s},[x0] -+ ld1 {v24.4s,v25.4s,v26.4s,v27.4s},[x0],#64 -+ cmp x2,#128 -+ b.lt 2f -+ // 8 blocks mode -+ ld1 {v20.4s,v21.4s,v22.4s,v23.4s},[x0] -+ ld1 {v28.4s,v29.4s,v30.4s,v31.4s},[x0],#64 -+#ifndef __ARMEB__ -+ rev32 v16.16b,v16.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v17.16b,v17.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v18.16b,v18.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v19.16b,v19.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v20.16b,v20.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v21.16b,v21.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v22.16b,v22.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v23.16b,v23.16b -+#endif -+ sm4e v16.4s,v0.4s; -+ sm4e v17.4s,v0.4s; -+ sm4e v18.4s,v0.4s; -+ sm4e v19.4s,v0.4s; -+ -+ sm4e v16.4s,v1.4s; -+ sm4e v17.4s,v1.4s; -+ sm4e v18.4s,v1.4s; -+ sm4e v19.4s,v1.4s; -+ -+ sm4e v16.4s,v2.4s; -+ sm4e v17.4s,v2.4s; -+ sm4e v18.4s,v2.4s; -+ sm4e v19.4s,v2.4s; -+ -+ sm4e v16.4s,v3.4s; -+ sm4e v17.4s,v3.4s; -+ sm4e v18.4s,v3.4s; -+ sm4e v19.4s,v3.4s; -+ -+ sm4e v16.4s,v4.4s; -+ sm4e v17.4s,v4.4s; -+ sm4e v18.4s,v4.4s; -+ sm4e v19.4s,v4.4s; -+ -+ sm4e v16.4s,v5.4s; -+ sm4e v17.4s,v5.4s; -+ sm4e v18.4s,v5.4s; -+ sm4e v19.4s,v5.4s; -+ -+ sm4e v16.4s,v6.4s; -+ sm4e v17.4s,v6.4s; -+ sm4e v18.4s,v6.4s; -+ sm4e v19.4s,v6.4s; -+ -+ sm4e v16.4s,v7.4s; -+ rev64 v16.4s,v16.4s -+ sm4e v17.4s,v7.4s; -+ ext v16.16b,v16.16b,v16.16b,#8 -+ rev64 v17.4s,v17.4s -+ sm4e v18.4s,v7.4s; -+ ext v17.16b,v17.16b,v17.16b,#8 -+ rev64 v18.4s,v18.4s -+ sm4e v19.4s,v7.4s; -+ ext v18.16b,v18.16b,v18.16b,#8 -+ rev64 v19.4s,v19.4s -+ ext v19.16b,v19.16b,v19.16b,#8 -+ sm4e v20.4s,v0.4s; -+ sm4e v21.4s,v0.4s; -+ sm4e v22.4s,v0.4s; -+ sm4e v23.4s,v0.4s; -+ -+ sm4e v20.4s,v1.4s; -+ sm4e v21.4s,v1.4s; -+ sm4e v22.4s,v1.4s; -+ sm4e v23.4s,v1.4s; -+ -+ sm4e v20.4s,v2.4s; -+ sm4e v21.4s,v2.4s; -+ sm4e v22.4s,v2.4s; -+ sm4e v23.4s,v2.4s; -+ -+ sm4e v20.4s,v3.4s; -+ sm4e v21.4s,v3.4s; -+ sm4e v22.4s,v3.4s; -+ sm4e v23.4s,v3.4s; -+ -+ sm4e v20.4s,v4.4s; -+ sm4e v21.4s,v4.4s; -+ sm4e v22.4s,v4.4s; -+ sm4e v23.4s,v4.4s; -+ -+ sm4e v20.4s,v5.4s; -+ sm4e v21.4s,v5.4s; -+ sm4e v22.4s,v5.4s; -+ sm4e v23.4s,v5.4s; -+ -+ sm4e v20.4s,v6.4s; -+ sm4e v21.4s,v6.4s; -+ sm4e v22.4s,v6.4s; -+ sm4e v23.4s,v6.4s; -+ -+ sm4e v20.4s,v7.4s; -+ rev64 v20.4s,v20.4s -+ sm4e v21.4s,v7.4s; -+ ext v20.16b,v20.16b,v20.16b,#8 -+ rev64 v21.4s,v21.4s -+ sm4e v22.4s,v7.4s; -+ ext v21.16b,v21.16b,v21.16b,#8 -+ rev64 v22.4s,v22.4s -+ sm4e v23.4s,v7.4s; -+ ext v22.16b,v22.16b,v22.16b,#8 -+ rev64 v23.4s,v23.4s -+ ext v23.16b,v23.16b,v23.16b,#8 -+#ifndef __ARMEB__ -+ rev32 v16.16b,v16.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v17.16b,v17.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v18.16b,v18.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v19.16b,v19.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v20.16b,v20.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v21.16b,v21.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v22.16b,v22.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v23.16b,v23.16b -+#endif -+ eor v16.16b,v16.16b,v8.16b -+ eor v17.16b,v17.16b,v24.16b -+ eor v18.16b,v18.16b,v25.16b -+ mov v8.16b,v31.16b -+ eor v19.16b,v19.16b,v26.16b -+ eor v20.16b,v20.16b,v27.16b -+ eor v21.16b,v21.16b,v28.16b -+ eor v22.16b,v22.16b,v29.16b -+ eor v23.16b,v23.16b,v30.16b -+ st1 {v16.4s,v17.4s,v18.4s,v19.4s},[x1],#64 -+ st1 {v20.4s,v21.4s,v22.4s,v23.4s},[x1],#64 -+ subs x2,x2,128 -+ b.gt 1b -+ b 3f -+ // 4 blocks mode -+2: -+#ifndef __ARMEB__ -+ rev32 v16.16b,v16.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v17.16b,v17.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v18.16b,v18.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v19.16b,v19.16b -+#endif -+ sm4e v16.4s,v0.4s; -+ sm4e v17.4s,v0.4s; -+ sm4e v18.4s,v0.4s; -+ sm4e v19.4s,v0.4s; -+ -+ sm4e v16.4s,v1.4s; -+ sm4e v17.4s,v1.4s; -+ sm4e v18.4s,v1.4s; -+ sm4e v19.4s,v1.4s; -+ -+ sm4e v16.4s,v2.4s; -+ sm4e v17.4s,v2.4s; -+ sm4e v18.4s,v2.4s; -+ sm4e v19.4s,v2.4s; -+ -+ sm4e v16.4s,v3.4s; -+ sm4e v17.4s,v3.4s; -+ sm4e v18.4s,v3.4s; -+ sm4e v19.4s,v3.4s; -+ -+ sm4e v16.4s,v4.4s; -+ sm4e v17.4s,v4.4s; -+ sm4e v18.4s,v4.4s; -+ sm4e v19.4s,v4.4s; -+ -+ sm4e v16.4s,v5.4s; -+ sm4e v17.4s,v5.4s; -+ sm4e v18.4s,v5.4s; -+ sm4e v19.4s,v5.4s; -+ -+ sm4e v16.4s,v6.4s; -+ sm4e v17.4s,v6.4s; -+ sm4e v18.4s,v6.4s; -+ sm4e v19.4s,v6.4s; -+ -+ sm4e v16.4s,v7.4s; -+ rev64 v16.4s,v16.4s -+ sm4e v17.4s,v7.4s; -+ ext v16.16b,v16.16b,v16.16b,#8 -+ rev64 v17.4s,v17.4s -+ sm4e v18.4s,v7.4s; -+ ext v17.16b,v17.16b,v17.16b,#8 -+ rev64 v18.4s,v18.4s -+ sm4e v19.4s,v7.4s; -+ ext v18.16b,v18.16b,v18.16b,#8 -+ rev64 v19.4s,v19.4s -+ ext v19.16b,v19.16b,v19.16b,#8 -+#ifndef __ARMEB__ -+ rev32 v16.16b,v16.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v17.16b,v17.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v18.16b,v18.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v19.16b,v19.16b -+#endif -+ eor v16.16b,v16.16b,v8.16b -+ eor v17.16b,v17.16b,v24.16b -+ mov v8.16b,v27.16b -+ eor v18.16b,v18.16b,v25.16b -+ eor v19.16b,v19.16b,v26.16b -+ st1 {v16.4s,v17.4s,v18.4s,v19.4s},[x1],#64 -+ subs x2,x2,#64 -+ b.gt 1b -+1: -+ subs x2,x2,#16 -+ b.lt 3f -+ ld1 {v16.4s},[x0],#16 -+ mov v24.16b,v16.16b -+#ifndef __ARMEB__ -+ rev32 v16.16b,v16.16b -+#endif -+ sm4e v16.4s,v0.4s; -+ sm4e v16.4s,v1.4s; -+ sm4e v16.4s,v2.4s; -+ sm4e v16.4s,v3.4s; -+ sm4e v16.4s,v4.4s; -+ sm4e v16.4s,v5.4s; -+ sm4e v16.4s,v6.4s; -+ sm4e v16.4s,v7.4s; -+ rev64 v16.4s,v16.4s -+ ext v16.16b,v16.16b,v16.16b,#8 -+#ifndef __ARMEB__ -+ rev32 v16.16b,v16.16b -+#endif -+ eor v16.16b,v16.16b,v8.16b -+ mov v8.16b,v24.16b -+ st1 {v16.16b},[x1],#16 -+ b.ne 1b -+3: -+ // save back IV -+ st1 {v8.16b},[x4] -+ ldp d8,d9,[sp],#16 -+ ret -+.size sm4_v8_cbc_encrypt,.-sm4_v8_cbc_encrypt -+.globl sm4_v8_ctr32_encrypt_blocks -+.type sm4_v8_ctr32_encrypt_blocks,%function -+.align 5 -+sm4_v8_ctr32_encrypt_blocks: -+ AARCH64_VALID_CALL_TARGET -+ stp d8,d9,[sp, #-16]! -+ -+ ld1 {v8.4s},[x4] -+ ld1 {v0.4s,v1.4s,v2.4s,v3.4s},[x3],64 -+ ld1 {v4.4s,v5.4s,v6.4s,v7.4s},[x3] -+#ifndef __ARMEB__ -+ rev32 v8.16b,v8.16b -+#endif -+ mov w5,v8.s[3] -+1: -+ cmp x2,#4 -+ b.lt 1f -+ ld1 {v24.4s,v25.4s,v26.4s,v27.4s},[x0],#64 -+ mov v16.16b,v8.16b -+ mov v17.16b,v8.16b -+ mov v18.16b,v8.16b -+ mov v19.16b,v8.16b -+ add w5,w5,#1 -+ mov v17.s[3],w5 -+ add w5,w5,#1 -+ mov v18.s[3],w5 -+ add w5,w5,#1 -+ mov v19.s[3],w5 -+ cmp x2,#8 -+ b.lt 2f -+ ld1 {v28.4s,v29.4s,v30.4s,v31.4s},[x0],#64 -+ mov v20.16b,v8.16b -+ mov v21.16b,v8.16b -+ mov v22.16b,v8.16b -+ mov v23.16b,v8.16b -+ add w5,w5,#1 -+ mov v20.s[3],w5 -+ add w5,w5,#1 -+ mov v21.s[3],w5 -+ add w5,w5,#1 -+ mov v22.s[3],w5 -+ add w5,w5,#1 -+ mov v23.s[3],w5 -+ sm4e v16.4s,v0.4s; -+ sm4e v17.4s,v0.4s; -+ sm4e v18.4s,v0.4s; -+ sm4e v19.4s,v0.4s; -+ -+ sm4e v16.4s,v1.4s; -+ sm4e v17.4s,v1.4s; -+ sm4e v18.4s,v1.4s; -+ sm4e v19.4s,v1.4s; -+ -+ sm4e v16.4s,v2.4s; -+ sm4e v17.4s,v2.4s; -+ sm4e v18.4s,v2.4s; -+ sm4e v19.4s,v2.4s; -+ -+ sm4e v16.4s,v3.4s; -+ sm4e v17.4s,v3.4s; -+ sm4e v18.4s,v3.4s; -+ sm4e v19.4s,v3.4s; -+ -+ sm4e v16.4s,v4.4s; -+ sm4e v17.4s,v4.4s; -+ sm4e v18.4s,v4.4s; -+ sm4e v19.4s,v4.4s; -+ -+ sm4e v16.4s,v5.4s; -+ sm4e v17.4s,v5.4s; -+ sm4e v18.4s,v5.4s; -+ sm4e v19.4s,v5.4s; -+ -+ sm4e v16.4s,v6.4s; -+ sm4e v17.4s,v6.4s; -+ sm4e v18.4s,v6.4s; -+ sm4e v19.4s,v6.4s; -+ -+ sm4e v16.4s,v7.4s; -+ rev64 v16.4s,v16.4s -+ sm4e v17.4s,v7.4s; -+ ext v16.16b,v16.16b,v16.16b,#8 -+ rev64 v17.4s,v17.4s -+ sm4e v18.4s,v7.4s; -+ ext v17.16b,v17.16b,v17.16b,#8 -+ rev64 v18.4s,v18.4s -+ sm4e v19.4s,v7.4s; -+ ext v18.16b,v18.16b,v18.16b,#8 -+ rev64 v19.4s,v19.4s -+ ext v19.16b,v19.16b,v19.16b,#8 -+ sm4e v20.4s,v0.4s; -+ sm4e v21.4s,v0.4s; -+ sm4e v22.4s,v0.4s; -+ sm4e v23.4s,v0.4s; -+ -+ sm4e v20.4s,v1.4s; -+ sm4e v21.4s,v1.4s; -+ sm4e v22.4s,v1.4s; -+ sm4e v23.4s,v1.4s; -+ -+ sm4e v20.4s,v2.4s; -+ sm4e v21.4s,v2.4s; -+ sm4e v22.4s,v2.4s; -+ sm4e v23.4s,v2.4s; -+ -+ sm4e v20.4s,v3.4s; -+ sm4e v21.4s,v3.4s; -+ sm4e v22.4s,v3.4s; -+ sm4e v23.4s,v3.4s; -+ -+ sm4e v20.4s,v4.4s; -+ sm4e v21.4s,v4.4s; -+ sm4e v22.4s,v4.4s; -+ sm4e v23.4s,v4.4s; -+ -+ sm4e v20.4s,v5.4s; -+ sm4e v21.4s,v5.4s; -+ sm4e v22.4s,v5.4s; -+ sm4e v23.4s,v5.4s; -+ -+ sm4e v20.4s,v6.4s; -+ sm4e v21.4s,v6.4s; -+ sm4e v22.4s,v6.4s; -+ sm4e v23.4s,v6.4s; -+ -+ sm4e v20.4s,v7.4s; -+ rev64 v20.4s,v20.4s -+ sm4e v21.4s,v7.4s; -+ ext v20.16b,v20.16b,v20.16b,#8 -+ rev64 v21.4s,v21.4s -+ sm4e v22.4s,v7.4s; -+ ext v21.16b,v21.16b,v21.16b,#8 -+ rev64 v22.4s,v22.4s -+ sm4e v23.4s,v7.4s; -+ ext v22.16b,v22.16b,v22.16b,#8 -+ rev64 v23.4s,v23.4s -+ ext v23.16b,v23.16b,v23.16b,#8 -+#ifndef __ARMEB__ -+ rev32 v16.16b,v16.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v17.16b,v17.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v18.16b,v18.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v19.16b,v19.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v20.16b,v20.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v21.16b,v21.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v22.16b,v22.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v23.16b,v23.16b -+#endif -+ eor v16.16b,v16.16b,v24.16b -+ eor v17.16b,v17.16b,v25.16b -+ eor v18.16b,v18.16b,v26.16b -+ eor v19.16b,v19.16b,v27.16b -+ eor v20.16b,v20.16b,v28.16b -+ eor v21.16b,v21.16b,v29.16b -+ eor v22.16b,v22.16b,v30.16b -+ eor v23.16b,v23.16b,v31.16b -+ st1 {v16.4s,v17.4s,v18.4s,v19.4s},[x1],#64 -+ st1 {v20.4s,v21.4s,v22.4s,v23.4s},[x1],#64 -+ subs x2,x2,#8 -+ b.eq 3f -+ add w5,w5,#1 -+ mov v8.s[3],w5 -+ b 1b -+2: -+ sm4e v16.4s,v0.4s; -+ sm4e v17.4s,v0.4s; -+ sm4e v18.4s,v0.4s; -+ sm4e v19.4s,v0.4s; -+ -+ sm4e v16.4s,v1.4s; -+ sm4e v17.4s,v1.4s; -+ sm4e v18.4s,v1.4s; -+ sm4e v19.4s,v1.4s; -+ -+ sm4e v16.4s,v2.4s; -+ sm4e v17.4s,v2.4s; -+ sm4e v18.4s,v2.4s; -+ sm4e v19.4s,v2.4s; -+ -+ sm4e v16.4s,v3.4s; -+ sm4e v17.4s,v3.4s; -+ sm4e v18.4s,v3.4s; -+ sm4e v19.4s,v3.4s; -+ -+ sm4e v16.4s,v4.4s; -+ sm4e v17.4s,v4.4s; -+ sm4e v18.4s,v4.4s; -+ sm4e v19.4s,v4.4s; -+ -+ sm4e v16.4s,v5.4s; -+ sm4e v17.4s,v5.4s; -+ sm4e v18.4s,v5.4s; -+ sm4e v19.4s,v5.4s; -+ -+ sm4e v16.4s,v6.4s; -+ sm4e v17.4s,v6.4s; -+ sm4e v18.4s,v6.4s; -+ sm4e v19.4s,v6.4s; -+ -+ sm4e v16.4s,v7.4s; -+ rev64 v16.4s,v16.4s -+ sm4e v17.4s,v7.4s; -+ ext v16.16b,v16.16b,v16.16b,#8 -+ rev64 v17.4s,v17.4s -+ sm4e v18.4s,v7.4s; -+ ext v17.16b,v17.16b,v17.16b,#8 -+ rev64 v18.4s,v18.4s -+ sm4e v19.4s,v7.4s; -+ ext v18.16b,v18.16b,v18.16b,#8 -+ rev64 v19.4s,v19.4s -+ ext v19.16b,v19.16b,v19.16b,#8 -+#ifndef __ARMEB__ -+ rev32 v16.16b,v16.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v17.16b,v17.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v18.16b,v18.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v19.16b,v19.16b -+#endif -+ eor v16.16b,v16.16b,v24.16b -+ eor v17.16b,v17.16b,v25.16b -+ eor v18.16b,v18.16b,v26.16b -+ eor v19.16b,v19.16b,v27.16b -+ st1 {v16.4s,v17.4s,v18.4s,v19.4s},[x1],#64 -+ subs x2,x2,#4 -+ b.eq 3f -+ add w5,w5,#1 -+ mov v8.s[3],w5 -+ b 1b -+1: -+ subs x2,x2,#1 -+ b.lt 3f -+ mov v16.16b,v8.16b -+ ld1 {v24.4s},[x0],#16 -+ sm4e v16.4s,v0.4s; -+ sm4e v16.4s,v1.4s; -+ sm4e v16.4s,v2.4s; -+ sm4e v16.4s,v3.4s; -+ sm4e v16.4s,v4.4s; -+ sm4e v16.4s,v5.4s; -+ sm4e v16.4s,v6.4s; -+ sm4e v16.4s,v7.4s; -+ rev64 v16.4s,v16.4s -+ ext v16.16b,v16.16b,v16.16b,#8 -+#ifndef __ARMEB__ -+ rev32 v16.16b,v16.16b -+#endif -+ eor v16.16b,v16.16b,v24.16b -+ st1 {v16.4s},[x1],#16 -+ b.eq 3f -+ add w5,w5,#1 -+ mov v8.s[3],w5 -+ b 1b -+3: -+ ldp d8,d9,[sp],#16 -+ ret -+.size sm4_v8_ctr32_encrypt_blocks,.-sm4_v8_ctr32_encrypt_blocks -diff --git a/v1/wd.c b/v1/wd.c -index 26e7af3..4286bbe 100644 ---- a/v1/wd.c -+++ b/v1/wd.c -@@ -88,7 +88,8 @@ static int get_raw_attr(const char *dev_root, const char *attr, - if (ptrRet == NULL) - return -WD_ENODEV; - -- /* The attr_file = "/sys/class/uacce/xxx" -+ /* -+ * The attr_file = "/sys/class/uacce/xxx" - * It's the Internal Definition File Node - */ - fd = open(attr_path, O_RDONLY, 0); -diff --git a/v1/wd_rng.c b/v1/wd_rng.c -index 24a4b7a..7a89cd1 100644 ---- a/v1/wd_rng.c -+++ b/v1/wd_rng.c -@@ -57,7 +57,7 @@ static int wcrypto_setup_qinfo(struct wcrypto_rng_ctx_setup *setup, - WD_ERR("algorithm mismatch!\n"); - return ret; - } -- qinfo = q->qinfo; -+ qinfo = q->qinfo; - /* lock at ctx creating */ - wd_spinlock(&qinfo->qlock); - if (qinfo->ctx_num >= WD_MAX_CTX_NUM) { -@@ -120,7 +120,7 @@ void *wcrypto_create_rng_ctx(struct wd_queue *q, - return ctx; - - free_ctx_id: -- qinfo = q->qinfo; -+ qinfo = q->qinfo; - wd_spinlock(&qinfo->qlock); - qinfo->ctx_num--; - wd_free_id(qinfo->ctx_id, WD_MAX_CTX_NUM, ctx_id, WD_MAX_CTX_NUM); -diff --git a/wd_cipher.c b/wd_cipher.c -index f35ce6f..63ec362 100644 ---- a/wd_cipher.c -+++ b/wd_cipher.c -@@ -622,10 +622,10 @@ static int send_recv_sync(struct wd_ctx_internal *ctx, - msg_handle.send = wd_cipher_setting.driver->send; - msg_handle.recv = wd_cipher_setting.driver->recv; - -- pthread_spin_lock(&ctx->lock); -+ wd_ctx_spin_lock(ctx, wd_cipher_setting.driver->calc_type); - ret = wd_handle_msg_sync(wd_cipher_setting.driver, &msg_handle, ctx->ctx, - msg, NULL, wd_cipher_setting.config.epoll_en); -- pthread_spin_unlock(&ctx->lock); -+ wd_ctx_spin_unlock(ctx, wd_cipher_setting.driver->calc_type); - - return ret; - } --- -2.25.1 - diff --git a/0026-cipher-add-support-for-SM4-CFB-and-XTS-modes-in-CE-i.patch b/0026-cipher-add-support-for-SM4-CFB-and-XTS-modes-in-CE-i.patch deleted file mode 100644 index a28822a..0000000 --- a/0026-cipher-add-support-for-SM4-CFB-and-XTS-modes-in-CE-i.patch +++ /dev/null @@ -1,1348 +0,0 @@ -From 091bbf55057370ab571d8a84cc33465ad145e1a9 Mon Sep 17 00:00:00 2001 -From: Yuzeng Zhuang -Date: Wed, 20 Mar 2024 16:12:48 +0800 -Subject: [PATCH 26/44] cipher: add support for SM4 CFB and XTS modes in CE - instruction - -This patch implements the CE instruction using SM4 CFB and XTS modes. - -Signed-off-by: Yuzeng Zhuang -Signed-off-by: Qi Tao ---- - drv/isa_ce_sm4.c | 115 +++- - drv/isa_ce_sm4.h | 14 + - drv/isa_ce_sm4_armv8.S | 1126 ++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 1253 insertions(+), 2 deletions(-) - -diff --git a/drv/isa_ce_sm4.c b/drv/isa_ce_sm4.c -index e2d81de..466b060 100644 ---- a/drv/isa_ce_sm4.c -+++ b/drv/isa_ce_sm4.c -@@ -22,6 +22,8 @@ - #define SM4_BLOCK_SIZE 16 - #define MAX_BLOCK_NUM (1U << 28) - #define CTR96_SHIFT_BITS 8 -+#define SM4_BYTES2BLKS(nbytes) ((nbytes) >> 4) -+#define SM4_KEY_SIZE 16 - - #define GETU32(p) \ - ((__u32)(p)[0] << 24 | (__u32)(p)[1] << 16 | (__u32)(p)[2] << 8 | (__u32)(p)[3]) -@@ -136,10 +138,104 @@ void sm4_set_decrypt_key(const __u8 *userKey, struct SM4_KEY *key) - sm4_v8_set_decrypt_key(userKey, key); - } - -+static void sm4_cfb_crypt(struct wd_cipher_msg *msg, const struct SM4_KEY *rkey, const int enc) -+{ -+ unsigned char keydata[SM4_BLOCK_SIZE]; -+ const unsigned char *src = msg->in; -+ unsigned char *dst = msg->out; -+ __u32 nbytes = msg->in_bytes; -+ __u32 blocks, bbytes; -+ __u32 i = 0; -+ -+ blocks = SM4_BYTES2BLKS(nbytes); -+ if (blocks) { -+ if (enc == SM4_ENCRYPT) -+ sm4_v8_cfb_encrypt_blocks(src, dst, blocks, rkey, msg->iv); -+ else -+ sm4_v8_cfb_decrypt_blocks(src, dst, blocks, rkey, msg->iv); -+ -+ bbytes = blocks * SM4_BLOCK_SIZE; -+ dst += bbytes; -+ src += bbytes; -+ nbytes -= bbytes; -+ } -+ -+ if (nbytes == 0) -+ return; -+ -+ sm4_v8_crypt_block(msg->iv, keydata, rkey); -+ while (nbytes > 0) { -+ *dst++ = *src++ ^ keydata[i++]; -+ nbytes--; -+ } -+ -+ /* store new IV */ -+ if (enc == SM4_ENCRYPT) { -+ if (msg->out_bytes >= msg->iv_bytes) -+ memcpy(msg->iv, msg->out + msg->out_bytes - -+ msg->iv_bytes, msg->iv_bytes); -+ else -+ memcpy(msg->iv, msg->out, msg->out_bytes); -+ } else { -+ if (msg->in_bytes >= msg->iv_bytes) -+ memcpy(msg->iv, msg->in + msg->in_bytes - -+ msg->iv_bytes, msg->iv_bytes); -+ else -+ memcpy(msg->iv, msg->in, msg->in_bytes); -+ } -+} -+ -+static void sm4_cfb_encrypt(struct wd_cipher_msg *msg, const struct SM4_KEY *rkey_enc) -+{ -+ sm4_cfb_crypt(msg, rkey_enc, SM4_ENCRYPT); -+} -+ -+static void sm4_cfb_decrypt(struct wd_cipher_msg *msg, const struct SM4_KEY *rkey_dec) -+{ -+ sm4_cfb_crypt(msg, rkey_dec, SM4_DECRYPT); -+} -+ -+static int sm4_xts_encrypt(struct wd_cipher_msg *msg, const struct SM4_KEY *rkey) -+{ -+ struct SM4_KEY rkey2; -+ -+ if (msg->in_bytes < SM4_BLOCK_SIZE) { -+ WD_ERR("invalid: cipher input length is wrong!\n"); -+ return -WD_EINVAL; -+ } -+ -+ /* set key for tweak */ -+ sm4_set_encrypt_key(msg->key + SM4_KEY_SIZE, &rkey2); -+ -+ sm4_v8_xts_encrypt(msg->in, msg->out, msg->in_bytes, -+ rkey, msg->iv, &rkey2); -+ -+ return 0; -+} -+ -+static int sm4_xts_decrypt(struct wd_cipher_msg *msg, const struct SM4_KEY *rkey) -+{ -+ struct SM4_KEY rkey2; -+ -+ if (msg->in_bytes < SM4_BLOCK_SIZE) { -+ WD_ERR("invalid: cipher input length is wrong!\n"); -+ return -WD_EINVAL; -+ } -+ -+ /* set key for tweak */ -+ sm4_set_encrypt_key(msg->key + SM4_KEY_SIZE, &rkey2); -+ -+ sm4_v8_xts_decrypt(msg->in, msg->out, msg->in_bytes, -+ rkey, msg->iv, &rkey2); -+ -+ return 0; -+} -+ - static int isa_ce_cipher_send(struct wd_alg_driver *drv, handle_t ctx, void *wd_msg) - { - struct wd_cipher_msg *msg = wd_msg; - struct SM4_KEY rkey; -+ int ret = 0; - - if (!msg) { - WD_ERR("invalid: input sm4 msg is NULL!\n"); -@@ -151,7 +247,8 @@ static int isa_ce_cipher_send(struct wd_alg_driver *drv, handle_t ctx, void *wd_ - return -WD_EINVAL; - } - -- if (msg->op_type == WD_CIPHER_ENCRYPTION || msg->mode == WD_CIPHER_CTR) -+ if (msg->op_type == WD_CIPHER_ENCRYPTION || msg->mode == WD_CIPHER_CTR -+ || msg->mode == WD_CIPHER_CFB) - sm4_set_encrypt_key(msg->key, &rkey); - else - sm4_set_decrypt_key(msg->key, &rkey); -@@ -166,12 +263,24 @@ static int isa_ce_cipher_send(struct wd_alg_driver *drv, handle_t ctx, void *wd_ - case WD_CIPHER_CTR: - sm4_ctr_encrypt(msg, &rkey); - break; -+ case WD_CIPHER_CFB: -+ if (msg->op_type == WD_CIPHER_ENCRYPTION) -+ sm4_cfb_encrypt(msg, &rkey); -+ else -+ sm4_cfb_decrypt(msg, &rkey); -+ break; -+ case WD_CIPHER_XTS: -+ if (msg->op_type == WD_CIPHER_ENCRYPTION) -+ ret = sm4_xts_encrypt(msg, &rkey); -+ else -+ ret = sm4_xts_decrypt(msg, &rkey); -+ break; - default: - WD_ERR("The current block cipher mode is not supported!\n"); - return -WD_EINVAL; - } - -- return 0; -+ return ret; - } - - static int isa_ce_cipher_recv(struct wd_alg_driver *drv, handle_t ctx, void *wd_msg) -@@ -206,6 +315,8 @@ static int cipher_recv(struct wd_alg_driver *drv, handle_t ctx, void *msg) - static struct wd_alg_driver cipher_alg_driver[] = { - GEN_CE_ALG_DRIVER("cbc(sm4)", cipher), - GEN_CE_ALG_DRIVER("ctr(sm4)", cipher), -+ GEN_CE_ALG_DRIVER("cfb(sm4)", cipher), -+ GEN_CE_ALG_DRIVER("xts(sm4)", cipher), - }; - - static void __attribute__((constructor)) isa_ce_probe(void) -diff --git a/drv/isa_ce_sm4.h b/drv/isa_ce_sm4.h -index 0bc074d..d92069f 100644 ---- a/drv/isa_ce_sm4.h -+++ b/drv/isa_ce_sm4.h -@@ -31,6 +31,20 @@ void sm4_v8_cbc_encrypt(const unsigned char *in, unsigned char *out, - void sm4_v8_ctr32_encrypt_blocks(const unsigned char *in, unsigned char *out, - size_t len, const void *key, const unsigned char ivec[16]); - -+void sm4_v8_cfb_encrypt_blocks(const unsigned char *in, unsigned char *out, -+ size_t length, const struct SM4_KEY *key, unsigned char *ivec); -+void sm4_v8_cfb_decrypt_blocks(const unsigned char *in, unsigned char *out, -+ size_t length, const struct SM4_KEY *key, unsigned char *ivec); -+void sm4_v8_crypt_block(const unsigned char *in, unsigned char *out, -+ const struct SM4_KEY *key); -+ -+int sm4_v8_xts_encrypt(const unsigned char *in, unsigned char *out, size_t length, -+ const struct SM4_KEY *key, unsigned char *ivec, -+ const struct SM4_KEY *key2); -+int sm4_v8_xts_decrypt(const unsigned char *in, unsigned char *out, size_t length, -+ const struct SM4_KEY *key, unsigned char *ivec, -+ const struct SM4_KEY *key2); -+ - #ifdef __cplusplus - } - #endif -diff --git a/drv/isa_ce_sm4_armv8.S b/drv/isa_ce_sm4_armv8.S -index d7d172a..342dfa5 100644 ---- a/drv/isa_ce_sm4_armv8.S -+++ b/drv/isa_ce_sm4_armv8.S -@@ -37,6 +37,14 @@ - .long 0x10171E25, 0x2C333A41, 0x484F565D, 0x646B7279 - .Lfk: - .long 0xa3b1bac6, 0x56aa3350, 0x677d9197, 0xb27022dc -+.align 4 -+.cts_permute_table: -+.byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff -+.byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff -+.byte 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7 -+.byte 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf -+.byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff -+.byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .globl sm4_v8_set_encrypt_key - .type sm4_v8_set_encrypt_key,%function - .align 5 -@@ -772,3 +780,1121 @@ sm4_v8_ctr32_encrypt_blocks: - ldp d8,d9,[sp],#16 - ret - .size sm4_v8_ctr32_encrypt_blocks,.-sm4_v8_ctr32_encrypt_blocks -+ -+.globl sm4_v8_crypt_block -+.type sm4_v8_crypt_block,%function -+.align 5 -+sm4_v8_crypt_block: -+ /* parameters: -+ * x0: src -+ * x1: dst -+ * x2: key -+ */ -+ AARCH64_VALID_CALL_TARGET -+ -+ ld1 {v0.16b-v3.16b}, [x2], #64 -+ ld1 {v4.16b-v7.16b}, [x2] -+ -+ ld1 {v16.4s},[x0] -+ -+ rev32 v16.16b, v16.16b -+ sm4e v16.4s, v0.4s -+ sm4e v16.4s, v1.4s -+ sm4e v16.4s, v2.4s -+ sm4e v16.4s, v3.4s -+ sm4e v16.4s, v4.4s -+ sm4e v16.4s, v5.4s -+ sm4e v16.4s, v6.4s -+ sm4e v16.4s, v7.4s -+ rev64 v16.4s, v16.4s -+ ext v16.16b, v16.16b, v16.16b, #8 -+ rev32 v16.16b, v16.16b -+ -+ st1 {v16.16b}, [x1]; -+ -+ ret -+.size sm4_v8_crypt_block,.-sm4_v8_crypt_block -+ -+.globl sm4_v8_cfb_encrypt_blocks -+.type sm4_v8_cfb_encrypt_blocks,%function -+.align 5 -+sm4_v8_cfb_encrypt_blocks: -+ /* parameters: -+ * x0: src -+ * x1: dst -+ * w2: nblocks -+ * x3: key -+ * x4: iv -+ */ -+ AARCH64_VALID_CALL_TARGET -+ stp d8,d9,[sp, #-16]! -+ -+ ld1 {v0.4s-v3.4s}, [x3], #64 -+ ld1 {v4.4s-v7.4s}, [x3] -+ -+ ld1 {v8.4s},[x4] -+ -+.loop_cfb_enc_4block: -+ cmp w2, #4 -+ blt .loob_cfb_enc_1block -+ -+ sub w2, w2, #4 -+ -+ ld1 {v16.4s-v19.4s}, [x0], #64 -+ -+ rev32 v8.16b, v8.16b -+ sm4e v8.4s, v0.4s -+ sm4e v8.4s, v1.4s -+ sm4e v8.4s, v2.4s -+ sm4e v8.4s, v3.4s -+ sm4e v8.4s, v4.4s -+ sm4e v8.4s, v5.4s -+ sm4e v8.4s, v6.4s -+ sm4e v8.4s, v7.4s -+ rev64 v8.4s, v8.4s -+ ext v8.16b, v8.16b, v8.16b, #8 -+ rev32 v8.16b, v8.16b -+ eor v16.16b, v16.16b, v8.16b -+ -+ rev32 v8.16b, v16.16b -+ sm4e v8.4s, v0.4s -+ sm4e v8.4s, v1.4s -+ sm4e v8.4s, v2.4s -+ sm4e v8.4s, v3.4s -+ sm4e v8.4s, v4.4s -+ sm4e v8.4s, v5.4s -+ sm4e v8.4s, v6.4s -+ sm4e v8.4s, v7.4s -+ rev64 v8.4s, v8.4s -+ ext v8.16b, v8.16b, v8.16b, #8 -+ rev32 v8.16b, v8.16b -+ eor v17.16b, v17.16b, v8.16b -+ -+ rev32 v8.16b, v17.16b -+ sm4e v8.4s, v0.4s -+ sm4e v8.4s, v1.4s -+ sm4e v8.4s, v2.4s -+ sm4e v8.4s, v3.4s -+ sm4e v8.4s, v4.4s -+ sm4e v8.4s, v5.4s -+ sm4e v8.4s, v6.4s -+ sm4e v8.4s, v7.4s -+ rev64 v8.4s, v8.4s -+ ext v8.16b, v8.16b, v8.16b, #8 -+ rev32 v8.16b, v8.16b -+ eor v18.16b, v18.16b, v8.16b -+ -+ rev32 v8.16b, v18.16b -+ sm4e v8.4s, v0.4s -+ sm4e v8.4s, v1.4s -+ sm4e v8.4s, v2.4s -+ sm4e v8.4s, v3.4s -+ sm4e v8.4s, v4.4s -+ sm4e v8.4s, v5.4s -+ sm4e v8.4s, v6.4s -+ sm4e v8.4s, v7.4s -+ rev64 v8.4s, v8.4s -+ ext v8.16b, v8.16b, v8.16b, #8 -+ rev32 v8.16b, v8.16b -+ eor v19.16b, v19.16b, v8.16b -+ -+ st1 {v16.4s-v19.4s}, [x1], #64 -+ mov v8.16b, v19.16b -+ -+ cbz w2, .end_cfb_enc -+ b .loop_cfb_enc_4block -+ -+.loob_cfb_enc_1block: -+ sub w2, w2, #1 -+ -+ ld1 {v16.4s}, [x0], #16 -+ -+ rev32 v8.16b, v8.16b -+ sm4e v8.4s, v0.4s -+ sm4e v8.4s, v1.4s -+ sm4e v8.4s, v2.4s -+ sm4e v8.4s, v3.4s -+ sm4e v8.4s, v4.4s -+ sm4e v8.4s, v5.4s -+ sm4e v8.4s, v6.4s -+ sm4e v8.4s, v7.4s -+ rev64 v8.4s, v8.4s -+ ext v8.16b, v8.16b, v8.16b, #8 -+ rev32 v8.16b, v8.16b -+ eor v8.16b, v8.16b, v16.16b -+ -+ st1 {v8.4s}, [x1], #16 -+ -+ cbnz w2, .loob_cfb_enc_1block -+ -+.end_cfb_enc: -+ st1 {v8.4s}, [x4] -+ -+ ldp d8,d9,[sp],#16 -+ ret -+.size sm4_v8_cfb_encrypt_blocks,.-sm4_v8_cfb_encrypt_blocks -+ -+.globl sm4_v8_cfb_decrypt_blocks -+.type sm4_v8_cfb_decrypt_blocks,%function -+.align 5 -+sm4_v8_cfb_decrypt_blocks: -+ /* parameters: -+ * x0: src -+ * x1: dst -+ * w2: nblocks -+ * x3: key -+ * x4: iv -+ */ -+ AARCH64_VALID_CALL_TARGET -+ stp d8,d9,[sp, #-16]! -+ -+ ld1 {v0.4s-v3.4s}, [x3], #64 -+ ld1 {v4.4s-v7.4s}, [x3] -+ -+ ld1 {v8.4s},[x4] -+ -+.loop_cfb_dec_8block: -+ cmp w2, #8 -+ blt .cfb_dec_4block -+ -+ sub w2, w2, #8 -+ -+ ld1 {v12.4s-v15.4s}, [x0], #64 -+ ld1 {v16.4s-v19.4s}, [x0], #64 -+ -+ rev32 v20.16b, v8.16b -+ rev32 v21.16b, v12.16b -+ rev32 v22.16b, v13.16b -+ rev32 v23.16b, v14.16b -+ rev32 v24.16b, v15.16b -+ rev32 v25.16b, v16.16b -+ rev32 v26.16b, v17.16b -+ rev32 v27.16b, v18.16b -+ sm4e v20.4s, v0.4s -+ sm4e v21.4s, v0.4s -+ sm4e v22.4s, v0.4s -+ sm4e v23.4s, v0.4s -+ sm4e v24.4s, v0.4s -+ sm4e v25.4s, v0.4s -+ sm4e v26.4s, v0.4s -+ sm4e v27.4s, v0.4s -+ sm4e v20.4s, v1.4s -+ sm4e v21.4s, v1.4s -+ sm4e v22.4s, v1.4s -+ sm4e v23.4s, v1.4s -+ sm4e v24.4s, v1.4s -+ sm4e v25.4s, v1.4s -+ sm4e v26.4s, v1.4s -+ sm4e v27.4s, v1.4s -+ sm4e v20.4s, v2.4s -+ sm4e v21.4s, v2.4s -+ sm4e v22.4s, v2.4s -+ sm4e v23.4s, v2.4s -+ sm4e v24.4s, v2.4s -+ sm4e v25.4s, v2.4s -+ sm4e v26.4s, v2.4s -+ sm4e v27.4s, v2.4s -+ sm4e v20.4s, v3.4s -+ sm4e v21.4s, v3.4s -+ sm4e v22.4s, v3.4s -+ sm4e v23.4s, v3.4s -+ sm4e v24.4s, v3.4s -+ sm4e v25.4s, v3.4s -+ sm4e v26.4s, v3.4s -+ sm4e v27.4s, v3.4s -+ sm4e v20.4s, v4.4s -+ sm4e v21.4s, v4.4s -+ sm4e v22.4s, v4.4s -+ sm4e v23.4s, v4.4s -+ sm4e v24.4s, v4.4s -+ sm4e v25.4s, v4.4s -+ sm4e v26.4s, v4.4s -+ sm4e v27.4s, v4.4s -+ sm4e v20.4s, v5.4s -+ sm4e v21.4s, v5.4s -+ sm4e v22.4s, v5.4s -+ sm4e v23.4s, v5.4s -+ sm4e v24.4s, v5.4s -+ sm4e v25.4s, v5.4s -+ sm4e v26.4s, v5.4s -+ sm4e v27.4s, v5.4s -+ sm4e v20.4s, v6.4s -+ sm4e v21.4s, v6.4s -+ sm4e v22.4s, v6.4s -+ sm4e v23.4s, v6.4s -+ sm4e v24.4s, v6.4s -+ sm4e v25.4s, v6.4s -+ sm4e v26.4s, v6.4s -+ sm4e v27.4s, v6.4s -+ sm4e v20.4s, v7.4s -+ sm4e v21.4s, v7.4s -+ sm4e v22.4s, v7.4s -+ sm4e v23.4s, v7.4s -+ sm4e v24.4s, v7.4s -+ sm4e v25.4s, v7.4s -+ sm4e v26.4s, v7.4s -+ sm4e v27.4s, v7.4s -+ rev64 v20.4s, v20.4s -+ rev64 v21.4s, v21.4s -+ rev64 v22.4s, v22.4s -+ rev64 v23.4s, v23.4s -+ rev64 v24.4s, v24.4s -+ rev64 v25.4s, v25.4s -+ rev64 v26.4s, v26.4s -+ rev64 v27.4s, v27.4s -+ ext v20.16b, v20.16b, v20.16b, #8 -+ ext v21.16b, v21.16b, v21.16b, #8 -+ ext v22.16b, v22.16b, v22.16b, #8 -+ ext v23.16b, v23.16b, v23.16b, #8 -+ ext v24.16b, v24.16b, v24.16b, #8 -+ ext v25.16b, v25.16b, v25.16b, #8 -+ ext v26.16b, v26.16b, v26.16b, #8 -+ ext v27.16b, v27.16b, v27.16b, #8 -+ rev32 v20.16b, v20.16b -+ rev32 v21.16b, v21.16b -+ rev32 v22.16b, v22.16b -+ rev32 v23.16b, v23.16b -+ rev32 v24.16b, v24.16b -+ rev32 v25.16b, v25.16b -+ rev32 v26.16b, v26.16b -+ rev32 v27.16b, v27.16b -+ -+ mov v8.16b, v19.16b //Modify IV -+ -+ eor v20.16b, v20.16b, v12.16b -+ eor v21.16b, v21.16b, v13.16b -+ eor v22.16b, v22.16b, v14.16b -+ eor v23.16b, v23.16b, v15.16b -+ eor v24.16b, v24.16b, v16.16b -+ eor v25.16b, v25.16b, v17.16b -+ eor v26.16b, v26.16b, v18.16b -+ eor v27.16b, v27.16b, v19.16b -+ -+ st1 {v20.4s-v23.4s}, [x1], #64 -+ st1 {v24.4s-v27.4s}, [x1], #64 -+ -+ cbz w2, .end_cfb_dec -+ b .loop_cfb_dec_8block -+ -+.cfb_dec_4block: -+ cmp w2, #4 -+ blt .loop_cfb_dec_1block -+ -+ sub w2, w2, #4 -+ -+ ld1 {v12.4s-v15.4s}, [x0], #64 -+ -+ rev32 v20.16b, v8.16b -+ rev32 v21.16b, v12.16b -+ rev32 v22.16b, v13.16b -+ rev32 v23.16b, v14.16b -+ sm4e v20.4s, v0.4s -+ sm4e v21.4s, v0.4s -+ sm4e v22.4s, v0.4s -+ sm4e v23.4s, v0.4s -+ sm4e v20.4s, v1.4s -+ sm4e v21.4s, v1.4s -+ sm4e v22.4s, v1.4s -+ sm4e v23.4s, v1.4s -+ sm4e v20.4s, v2.4s -+ sm4e v21.4s, v2.4s -+ sm4e v22.4s, v2.4s -+ sm4e v23.4s, v2.4s -+ sm4e v20.4s, v3.4s -+ sm4e v21.4s, v3.4s -+ sm4e v22.4s, v3.4s -+ sm4e v23.4s, v3.4s -+ sm4e v20.4s, v4.4s -+ sm4e v21.4s, v4.4s -+ sm4e v22.4s, v4.4s -+ sm4e v23.4s, v4.4s -+ sm4e v20.4s, v5.4s -+ sm4e v21.4s, v5.4s -+ sm4e v22.4s, v5.4s -+ sm4e v23.4s, v5.4s -+ sm4e v20.4s, v6.4s -+ sm4e v21.4s, v6.4s -+ sm4e v22.4s, v6.4s -+ sm4e v23.4s, v6.4s -+ sm4e v20.4s, v7.4s -+ sm4e v21.4s, v7.4s -+ sm4e v22.4s, v7.4s -+ sm4e v23.4s, v7.4s -+ rev64 v20.4s, v20.4s -+ rev64 v21.4s, v21.4s -+ rev64 v22.4s, v22.4s -+ rev64 v23.4s, v23.4s -+ ext v20.16b, v20.16b, v20.16b, #8 -+ ext v21.16b, v21.16b, v21.16b, #8 -+ ext v22.16b, v22.16b, v22.16b, #8 -+ ext v23.16b, v23.16b, v23.16b, #8 -+ rev32 v20.16b, v20.16b -+ rev32 v21.16b, v21.16b -+ rev32 v22.16b, v22.16b -+ rev32 v23.16b, v23.16b -+ -+ mov v8.16b, v15.16b //Modify IV -+ -+ eor v20.16b, v20.16b, v12.16b -+ eor v21.16b, v21.16b, v13.16b -+ eor v22.16b, v22.16b, v14.16b -+ eor v23.16b, v23.16b, v15.16b -+ -+ st1 {v20.4s-v23.4s}, [x1], #64 -+ -+ cbz w2, .end_cfb_dec -+ -+.loop_cfb_dec_1block: -+ sub w2, w2, #1 -+ -+ ld1 {v12.4s}, [x0], #16 -+ -+ rev32 v20.16b, v8.16b -+ sm4e v20.4s, v0.4s -+ sm4e v20.4s, v1.4s -+ sm4e v20.4s, v2.4s -+ sm4e v20.4s, v3.4s -+ sm4e v20.4s, v4.4s -+ sm4e v20.4s, v5.4s -+ sm4e v20.4s, v6.4s -+ sm4e v20.4s, v7.4s -+ rev64 v20.4s, v20.4s -+ ext v20.16b, v20.16b, v20.16b, #8 -+ rev32 v20.16b, v20.16b -+ -+ eor v20.16b, v20.16b, v12.16b -+ st1 {v20.4s}, [x1], #16 -+ -+ mov v8.16b, v12.16b //Modify IV -+ -+ cbnz w2, .loop_cfb_dec_1block -+ -+.end_cfb_dec: -+ /* store new IV */ -+ st1 {v8.4s}, [x4] -+ -+ ldp d8,d9,[sp],#16 -+ ret -+.size sm4_v8_cfb_decrypt_blocks,.-sm4_v8_cfb_decrypt_blocks -+ -+#define tweak_calc(out, in, MSK, TMP) \ -+ sshr TMP.2d, in.2d, #63; \ -+ and TMP.16b, TMP.16b, MSK.16b; \ -+ add out.2d, in.2d, in.2d; \ -+ ext TMP.16b, TMP.16b, TMP.16b, #8; \ -+ eor out.16b, out.16b, TMP.16b; -+ -+.globl sm4_v8_xts_encrypt -+.type sm4_v8_xts_encrypt,%function -+.align 5 -+sm4_v8_xts_encrypt: -+ /* parameters: -+ * x0: src -+ * x1: dst -+ * w2: nbytes -+ * x3: key -+ * x4: tweak -+ * x5: key array for tweak -+ */ -+ AARCH64_VALID_CALL_TARGET -+ stp d8,d9,[sp, #-16]! -+ -+ ld1 {v8.16b}, [x4] -+ -+ cbz x5, .enc_xts_nokey2 -+ -+ /* load round key array for tweak */ -+ ld1 {v0.16b-v3.16b}, [x5], #64 -+ ld1 {v4.16b-v7.16b}, [x5] -+ -+ /* first tweak */ -+ rev32 v8.16b, v8.16b -+ sm4e v8.4s, v0.4s -+ sm4e v8.4s, v1.4s -+ sm4e v8.4s, v2.4s -+ sm4e v8.4s, v3.4s -+ sm4e v8.4s, v4.4s -+ sm4e v8.4s, v5.4s -+ sm4e v8.4s, v6.4s -+ sm4e v8.4s, v7.4s -+ rev64 v8.4s, v8.4s -+ ext v8.16b, v8.16b, v8.16b, #8 -+ rev32 v8.16b, v8.16b -+ -+.enc_xts_nokey2: -+ /* load key array */ -+ ld1 {v0.16b-v3.16b}, [x3], #64 -+ ld1 {v4.16b-v7.16b}, [x3] -+ -+ and w5, w2, #15 -+ lsr w2, w2, #4 -+ cbz w5, .enc_xts_mask -+ /* leave the last block for tail */ -+ sub w2, w2, #1 -+ -+.enc_xts_mask: -+ /* init mask */ -+ movi v31.2s, #0x1 -+ movi v16.2s, #0x87 -+ uzp1 v31.4s, v31.4s, v16.4s -+ -+ cbz w2, .enc_xts_tail -+ -+.enc_xts_8block: -+ sub w2, w2, #8 -+ tbnz w2, #31, .enc_xts_4block -+ -+ tweak_calc(v9, v8, v31, v16) -+ tweak_calc(v10, v9, v31, v17) -+ tweak_calc(v11, v10, v31, v18) -+ tweak_calc(v12, v11, v31, v19) -+ tweak_calc(v13, v12, v31, v16) -+ tweak_calc(v14, v13, v31, v17) -+ tweak_calc(v15, v14, v31, v18) -+ -+ ld1 {v20.16b-v23.16b}, [x0], #64 -+ ld1 {v24.16b-v27.16b}, [x0], #64 -+ eor v20.16b, v20.16b, v8.16b -+ eor v21.16b, v21.16b, v9.16b -+ eor v22.16b, v22.16b, v10.16b -+ eor v23.16b, v23.16b, v11.16b -+ eor v24.16b, v24.16b, v12.16b -+ eor v25.16b, v25.16b, v13.16b -+ eor v26.16b, v26.16b, v14.16b -+ eor v27.16b, v27.16b, v15.16b -+ -+ rev32 v20.16b, v20.16b -+ rev32 v21.16b, v21.16b -+ rev32 v22.16b, v22.16b -+ rev32 v23.16b, v23.16b -+ rev32 v24.16b, v24.16b -+ rev32 v25.16b, v25.16b -+ rev32 v26.16b, v26.16b -+ rev32 v27.16b, v27.16b -+ sm4e v20.4s, v0.4s -+ sm4e v21.4s, v0.4s -+ sm4e v22.4s, v0.4s -+ sm4e v23.4s, v0.4s -+ sm4e v24.4s, v0.4s -+ sm4e v25.4s, v0.4s -+ sm4e v26.4s, v0.4s -+ sm4e v27.4s, v0.4s -+ sm4e v20.4s, v1.4s -+ sm4e v21.4s, v1.4s -+ sm4e v22.4s, v1.4s -+ sm4e v23.4s, v1.4s -+ sm4e v24.4s, v1.4s -+ sm4e v25.4s, v1.4s -+ sm4e v26.4s, v1.4s -+ sm4e v27.4s, v1.4s -+ sm4e v20.4s, v2.4s -+ sm4e v21.4s, v2.4s -+ sm4e v22.4s, v2.4s -+ sm4e v23.4s, v2.4s -+ sm4e v24.4s, v2.4s -+ sm4e v25.4s, v2.4s -+ sm4e v26.4s, v2.4s -+ sm4e v27.4s, v2.4s -+ sm4e v20.4s, v3.4s -+ sm4e v21.4s, v3.4s -+ sm4e v22.4s, v3.4s -+ sm4e v23.4s, v3.4s -+ sm4e v24.4s, v3.4s -+ sm4e v25.4s, v3.4s -+ sm4e v26.4s, v3.4s -+ sm4e v27.4s, v3.4s -+ sm4e v20.4s, v4.4s -+ sm4e v21.4s, v4.4s -+ sm4e v22.4s, v4.4s -+ sm4e v23.4s, v4.4s -+ sm4e v24.4s, v4.4s -+ sm4e v25.4s, v4.4s -+ sm4e v26.4s, v4.4s -+ sm4e v27.4s, v4.4s -+ sm4e v20.4s, v5.4s -+ sm4e v21.4s, v5.4s -+ sm4e v22.4s, v5.4s -+ sm4e v23.4s, v5.4s -+ sm4e v24.4s, v5.4s -+ sm4e v25.4s, v5.4s -+ sm4e v26.4s, v5.4s -+ sm4e v27.4s, v5.4s -+ sm4e v20.4s, v6.4s -+ sm4e v21.4s, v6.4s -+ sm4e v22.4s, v6.4s -+ sm4e v23.4s, v6.4s -+ sm4e v24.4s, v6.4s -+ sm4e v25.4s, v6.4s -+ sm4e v26.4s, v6.4s -+ sm4e v27.4s, v6.4s -+ sm4e v20.4s, v7.4s -+ sm4e v21.4s, v7.4s -+ sm4e v22.4s, v7.4s -+ sm4e v23.4s, v7.4s -+ sm4e v24.4s, v7.4s -+ sm4e v25.4s, v7.4s -+ sm4e v26.4s, v7.4s -+ sm4e v27.4s, v7.4s -+ rev64 v20.4s, v20.4s -+ rev64 v21.4s, v21.4s -+ rev64 v22.4s, v22.4s -+ rev64 v23.4s, v23.4s -+ rev64 v24.4s, v24.4s -+ rev64 v25.4s, v25.4s -+ rev64 v26.4s, v26.4s -+ rev64 v27.4s, v27.4s -+ ext v20.16b, v20.16b, v20.16b, #8 -+ ext v21.16b, v21.16b, v21.16b, #8 -+ ext v22.16b, v22.16b, v22.16b, #8 -+ ext v23.16b, v23.16b, v23.16b, #8 -+ ext v24.16b, v24.16b, v24.16b, #8 -+ ext v25.16b, v25.16b, v25.16b, #8 -+ ext v26.16b, v26.16b, v26.16b, #8 -+ ext v27.16b, v27.16b, v27.16b, #8 -+ rev32 v20.16b, v20.16b -+ rev32 v21.16b, v21.16b -+ rev32 v22.16b, v22.16b -+ rev32 v23.16b, v23.16b -+ rev32 v24.16b, v24.16b -+ rev32 v25.16b, v25.16b -+ rev32 v26.16b, v26.16b -+ rev32 v27.16b, v27.16b -+ -+ eor v20.16b, v20.16b, v8.16b -+ eor v21.16b, v21.16b, v9.16b -+ eor v22.16b, v22.16b, v10.16b -+ eor v23.16b, v23.16b, v11.16b -+ eor v24.16b, v24.16b, v12.16b -+ eor v25.16b, v25.16b, v13.16b -+ eor v26.16b, v26.16b, v14.16b -+ eor v27.16b, v27.16b, v15.16b -+ st1 {v20.16b-v23.16b}, [x1], #64 -+ st1 {v24.16b-v27.16b}, [x1], #64 -+ -+ tweak_calc(v8, v15, v31, v19) -+ -+ cbz w2, .enc_xts_tail -+ b .enc_xts_8block -+ -+.enc_xts_4block: -+ add w2, w2, #8 -+ cmp w2, #4 -+ blt .enc_xts_1block -+ -+ sub w2, w2, #4 -+ -+ tweak_calc(v9, v8, v31, v16) -+ tweak_calc(v10, v9, v31, v17) -+ tweak_calc(v11, v10, v31, v18) -+ -+ ld1 {v20.16b-v23.16b}, [x0], #64 -+ eor v20.16b, v20.16b, v8.16b -+ eor v21.16b, v21.16b, v9.16b -+ eor v22.16b, v22.16b, v10.16b -+ eor v23.16b, v23.16b, v11.16b -+ -+ rev32 v20.16b, v20.16b -+ rev32 v21.16b, v21.16b -+ rev32 v22.16b, v22.16b -+ rev32 v23.16b, v23.16b -+ sm4e v20.4s, v0.4s -+ sm4e v21.4s, v0.4s -+ sm4e v22.4s, v0.4s -+ sm4e v23.4s, v0.4s -+ sm4e v20.4s, v1.4s -+ sm4e v21.4s, v1.4s -+ sm4e v22.4s, v1.4s -+ sm4e v23.4s, v1.4s -+ sm4e v20.4s, v2.4s -+ sm4e v21.4s, v2.4s -+ sm4e v22.4s, v2.4s -+ sm4e v23.4s, v2.4s -+ sm4e v20.4s, v3.4s -+ sm4e v21.4s, v3.4s -+ sm4e v22.4s, v3.4s -+ sm4e v23.4s, v3.4s -+ sm4e v20.4s, v4.4s -+ sm4e v21.4s, v4.4s -+ sm4e v22.4s, v4.4s -+ sm4e v23.4s, v4.4s -+ sm4e v20.4s, v5.4s -+ sm4e v21.4s, v5.4s -+ sm4e v22.4s, v5.4s -+ sm4e v23.4s, v5.4s -+ sm4e v20.4s, v6.4s -+ sm4e v21.4s, v6.4s -+ sm4e v22.4s, v6.4s -+ sm4e v23.4s, v6.4s -+ sm4e v20.4s, v7.4s -+ sm4e v21.4s, v7.4s -+ sm4e v22.4s, v7.4s -+ sm4e v23.4s, v7.4s -+ rev64 v20.4s, v20.4s -+ rev64 v21.4s, v21.4s -+ rev64 v22.4s, v22.4s -+ rev64 v23.4s, v23.4s -+ ext v20.16b, v20.16b, v20.16b, #8 -+ ext v21.16b, v21.16b, v21.16b, #8 -+ ext v22.16b, v22.16b, v22.16b, #8 -+ ext v23.16b, v23.16b, v23.16b, #8 -+ rev32 v20.16b, v20.16b -+ rev32 v21.16b, v21.16b -+ rev32 v22.16b, v22.16b -+ rev32 v23.16b, v23.16b -+ -+ eor v20.16b, v20.16b, v8.16b -+ eor v21.16b, v21.16b, v9.16b -+ eor v22.16b, v22.16b, v10.16b -+ eor v23.16b, v23.16b, v11.16b -+ st1 {v20.16b-v23.16b}, [x1], #64 -+ -+ tweak_calc(v8, v11, v31, v19) -+ -+ cbz w2, .enc_xts_tail -+ -+.enc_xts_1block: -+ sub w2, w2, #1 -+ -+ ld1 {v20.16b}, [x0], #16 -+ eor v20.16b, v20.16b, v8.16b -+ -+ rev32 v20.16b, v20.16b -+ sm4e v20.4s, v0.4s -+ sm4e v20.4s, v1.4s -+ sm4e v20.4s, v2.4s -+ sm4e v20.4s, v3.4s -+ sm4e v20.4s, v4.4s -+ sm4e v20.4s, v5.4s -+ sm4e v20.4s, v6.4s -+ sm4e v20.4s, v7.4s -+ rev64 v20.4s, v20.4s -+ ext v20.16b, v20.16b, v20.16b, #8 -+ rev32 v20.16b, v20.16b -+ -+ eor v20.16b, v20.16b, v8.16b -+ st1 {v20.16b}, [x1], #16 -+ -+ tweak_calc(v8, v8, v31, v16) -+ -+ cbnz w2, .enc_xts_1block -+ -+.enc_xts_tail: -+ uxtw x5, w5 -+ cbz x5, .enc_xts_end -+ -+ tweak_calc(v9, v8, v31, v16) -+ ld1 {v20.16b}, [x0] -+ eor v20.16b, v20.16b, v8.16b -+ rev32 v20.16b, v20.16b -+ sm4e v20.4s, v0.4s -+ sm4e v20.4s, v1.4s -+ sm4e v20.4s, v2.4s -+ sm4e v20.4s, v3.4s -+ sm4e v20.4s, v4.4s -+ sm4e v20.4s, v5.4s -+ sm4e v20.4s, v6.4s -+ sm4e v20.4s, v7.4s -+ rev64 v20.4s, v20.4s -+ ext v20.16b, v20.16b, v20.16b, #8 -+ rev32 v20.16b, v20.16b -+ eor v20.16b, v20.16b, v8.16b -+ -+ adr x6, .cts_permute_table -+ add x7, x6, #32 -+ add x6, x6, x5 -+ sub x7, x7, x5 -+ ld1 {v23.16b}, [x6] -+ ld1 {v24.16b}, [x7] -+ -+ add x0, x0, x5 -+ ld1 {v21.16b}, [x0] -+ -+ tbl v22.16b, {v20.16b}, v23.16b -+ tbx v20.16b, {v21.16b}, v24.16b -+ -+ eor v20.16b, v20.16b, v9.16b -+ rev32 v20.16b, v20.16b -+ sm4e v20.4s, v0.4s -+ sm4e v20.4s, v1.4s -+ sm4e v20.4s, v2.4s -+ sm4e v20.4s, v3.4s -+ sm4e v20.4s, v4.4s -+ sm4e v20.4s, v5.4s -+ sm4e v20.4s, v6.4s -+ sm4e v20.4s, v7.4s -+ rev64 v20.4s, v20.4s -+ ext v20.16b, v20.16b, v20.16b, #8 -+ rev32 v20.16b, v20.16b -+ eor v20.16b, v20.16b, v9.16b -+ -+ add x5, x1, x5 -+ st1 {v22.16b}, [x5] -+ st1 {v20.16b}, [x1] -+ -+ b .enc_xts_ret -+ -+.enc_xts_end: -+ /* new tweak */ -+ st1 {v8.16b}, [x4] -+ -+.enc_xts_ret: -+ ldp d8,d9,[sp],#16 -+ ret -+.size sm4_v8_xts_encrypt,.-sm4_v8_xts_encrypt -+ -+.globl sm4_v8_xts_decrypt -+.type sm4_v8_xts_decrypt,%function -+.align 5 -+sm4_v8_xts_decrypt: -+ /* parameters: -+ * x0: src -+ * x1: dst -+ * w2: nbytes -+ * x3: key -+ * x4: tweak -+ * x5: key array for tweak -+ */ -+ AARCH64_VALID_CALL_TARGET -+ stp d8,d9,[sp, #-16]! -+ -+ ld1 {v8.16b}, [x4] -+ -+ cbz x5, .dec_xts_nokey2 -+ -+ /* load round key array for tweak */ -+ ld1 {v0.16b-v3.16b}, [x5], #64 -+ ld1 {v4.16b-v7.16b}, [x5] -+ -+ /* first tweak */ -+ rev32 v8.16b, v8.16b -+ sm4e v8.4s, v0.4s -+ sm4e v8.4s, v1.4s -+ sm4e v8.4s, v2.4s -+ sm4e v8.4s, v3.4s -+ sm4e v8.4s, v4.4s -+ sm4e v8.4s, v5.4s -+ sm4e v8.4s, v6.4s -+ sm4e v8.4s, v7.4s -+ rev64 v8.4s, v8.4s -+ ext v8.16b, v8.16b, v8.16b, #8 -+ rev32 v8.16b, v8.16b -+ -+.dec_xts_nokey2: -+ ld1 {v0.16b-v3.16b}, [x3], #64 -+ ld1 {v4.16b-v7.16b}, [x3] -+ -+ and w5, w2, #15 -+ lsr w2, w2, #4 -+ cbz w5, .dec_xts_mask -+ /* leave the last block for tail */ -+ sub w2, w2, #1 -+ -+.dec_xts_mask: -+ /* init mask */ -+ movi v31.2s, #0x1 -+ movi v16.2s, #0x87 -+ uzp1 v31.4s, v31.4s, v16.4s -+ -+ cbz w2, .dec_xts_tail -+ -+.dec_xts_8block: -+ sub w2, w2, #8 -+ tbnz w2, #31, .dec_xts_4block -+ -+ tweak_calc(v9, v8, v31, v16) -+ tweak_calc(v10, v9, v31, v17) -+ tweak_calc(v11, v10, v31, v18) -+ tweak_calc(v12, v11, v31, v19) -+ tweak_calc(v13, v12, v31, v16) -+ tweak_calc(v14, v13, v31, v17) -+ tweak_calc(v15, v14, v31, v18) -+ -+ ld1 {v20.16b-v23.16b}, [x0], #64 -+ ld1 {v24.16b-v27.16b}, [x0], #64 -+ eor v20.16b, v20.16b, v8.16b -+ eor v21.16b, v21.16b, v9.16b -+ eor v22.16b, v22.16b, v10.16b -+ eor v23.16b, v23.16b, v11.16b -+ eor v24.16b, v24.16b, v12.16b -+ eor v25.16b, v25.16b, v13.16b -+ eor v26.16b, v26.16b, v14.16b -+ eor v27.16b, v27.16b, v15.16b -+ -+ rev32 v20.16b, v20.16b -+ rev32 v21.16b, v21.16b -+ rev32 v22.16b, v22.16b -+ rev32 v23.16b, v23.16b -+ rev32 v24.16b, v24.16b -+ rev32 v25.16b, v25.16b -+ rev32 v26.16b, v26.16b -+ rev32 v27.16b, v27.16b -+ sm4e v20.4s, v0.4s -+ sm4e v21.4s, v0.4s -+ sm4e v22.4s, v0.4s -+ sm4e v23.4s, v0.4s -+ sm4e v24.4s, v0.4s -+ sm4e v25.4s, v0.4s -+ sm4e v26.4s, v0.4s -+ sm4e v27.4s, v0.4s -+ sm4e v20.4s, v1.4s -+ sm4e v21.4s, v1.4s -+ sm4e v22.4s, v1.4s -+ sm4e v23.4s, v1.4s -+ sm4e v24.4s, v1.4s -+ sm4e v25.4s, v1.4s -+ sm4e v26.4s, v1.4s -+ sm4e v27.4s, v1.4s -+ sm4e v20.4s, v2.4s -+ sm4e v21.4s, v2.4s -+ sm4e v22.4s, v2.4s -+ sm4e v23.4s, v2.4s -+ sm4e v24.4s, v2.4s -+ sm4e v25.4s, v2.4s -+ sm4e v26.4s, v2.4s -+ sm4e v27.4s, v2.4s -+ sm4e v20.4s, v3.4s -+ sm4e v21.4s, v3.4s -+ sm4e v22.4s, v3.4s -+ sm4e v23.4s, v3.4s -+ sm4e v24.4s, v3.4s -+ sm4e v25.4s, v3.4s -+ sm4e v26.4s, v3.4s -+ sm4e v27.4s, v3.4s -+ sm4e v20.4s, v4.4s -+ sm4e v21.4s, v4.4s -+ sm4e v22.4s, v4.4s -+ sm4e v23.4s, v4.4s -+ sm4e v24.4s, v4.4s -+ sm4e v25.4s, v4.4s -+ sm4e v26.4s, v4.4s -+ sm4e v27.4s, v4.4s -+ sm4e v20.4s, v5.4s -+ sm4e v21.4s, v5.4s -+ sm4e v22.4s, v5.4s -+ sm4e v23.4s, v5.4s -+ sm4e v24.4s, v5.4s -+ sm4e v25.4s, v5.4s -+ sm4e v26.4s, v5.4s -+ sm4e v27.4s, v5.4s -+ sm4e v20.4s, v6.4s -+ sm4e v21.4s, v6.4s -+ sm4e v22.4s, v6.4s -+ sm4e v23.4s, v6.4s -+ sm4e v24.4s, v6.4s -+ sm4e v25.4s, v6.4s -+ sm4e v26.4s, v6.4s -+ sm4e v27.4s, v6.4s -+ sm4e v20.4s, v7.4s -+ sm4e v21.4s, v7.4s -+ sm4e v22.4s, v7.4s -+ sm4e v23.4s, v7.4s -+ sm4e v24.4s, v7.4s -+ sm4e v25.4s, v7.4s -+ sm4e v26.4s, v7.4s -+ sm4e v27.4s, v7.4s -+ rev64 v20.4s, v20.4s -+ rev64 v21.4s, v21.4s -+ rev64 v22.4s, v22.4s -+ rev64 v23.4s, v23.4s -+ rev64 v24.4s, v24.4s -+ rev64 v25.4s, v25.4s -+ rev64 v26.4s, v26.4s -+ rev64 v27.4s, v27.4s -+ ext v20.16b, v20.16b, v20.16b, #8 -+ ext v21.16b, v21.16b, v21.16b, #8 -+ ext v22.16b, v22.16b, v22.16b, #8 -+ ext v23.16b, v23.16b, v23.16b, #8 -+ ext v24.16b, v24.16b, v24.16b, #8 -+ ext v25.16b, v25.16b, v25.16b, #8 -+ ext v26.16b, v26.16b, v26.16b, #8 -+ ext v27.16b, v27.16b, v27.16b, #8 -+ rev32 v20.16b, v20.16b -+ rev32 v21.16b, v21.16b -+ rev32 v22.16b, v22.16b -+ rev32 v23.16b, v23.16b -+ rev32 v24.16b, v24.16b -+ rev32 v25.16b, v25.16b -+ rev32 v26.16b, v26.16b -+ rev32 v27.16b, v27.16b -+ -+ eor v20.16b, v20.16b, v8.16b -+ eor v21.16b, v21.16b, v9.16b -+ eor v22.16b, v22.16b, v10.16b -+ eor v23.16b, v23.16b, v11.16b -+ eor v24.16b, v24.16b, v12.16b -+ eor v25.16b, v25.16b, v13.16b -+ eor v26.16b, v26.16b, v14.16b -+ eor v27.16b, v27.16b, v15.16b -+ st1 {v20.16b-v23.16b}, [x1], #64 -+ st1 {v24.16b-v27.16b}, [x1], #64 -+ -+ tweak_calc(v8, v15, v31, v19) -+ -+ cbz w2, .dec_xts_tail -+ b .dec_xts_8block -+ -+.dec_xts_4block: -+ add w2, w2, #8 -+ cmp w2, #4 -+ blt .dec_xts_1block -+ -+ sub w2, w2, #4 -+ -+ tweak_calc(v9, v8, v31, v16) -+ tweak_calc(v10, v9, v31, v17) -+ tweak_calc(v11, v10, v31, v18) -+ -+ ld1 {v20.16b-v23.16b}, [x0], #64 -+ eor v20.16b, v20.16b, v8.16b -+ eor v21.16b, v21.16b, v9.16b -+ eor v22.16b, v22.16b, v10.16b -+ eor v23.16b, v23.16b, v11.16b -+ -+ rev32 v20.16b, v20.16b -+ rev32 v21.16b, v21.16b -+ rev32 v22.16b, v22.16b -+ rev32 v23.16b, v23.16b -+ sm4e v20.4s, v0.4s -+ sm4e v21.4s, v0.4s -+ sm4e v22.4s, v0.4s -+ sm4e v23.4s, v0.4s -+ sm4e v20.4s, v1.4s -+ sm4e v21.4s, v1.4s -+ sm4e v22.4s, v1.4s -+ sm4e v23.4s, v1.4s -+ sm4e v20.4s, v2.4s -+ sm4e v21.4s, v2.4s -+ sm4e v22.4s, v2.4s -+ sm4e v23.4s, v2.4s -+ sm4e v20.4s, v3.4s -+ sm4e v21.4s, v3.4s -+ sm4e v22.4s, v3.4s -+ sm4e v23.4s, v3.4s -+ sm4e v20.4s, v4.4s -+ sm4e v21.4s, v4.4s -+ sm4e v22.4s, v4.4s -+ sm4e v23.4s, v4.4s -+ sm4e v20.4s, v5.4s -+ sm4e v21.4s, v5.4s -+ sm4e v22.4s, v5.4s -+ sm4e v23.4s, v5.4s -+ sm4e v20.4s, v6.4s -+ sm4e v21.4s, v6.4s -+ sm4e v22.4s, v6.4s -+ sm4e v23.4s, v6.4s -+ sm4e v20.4s, v7.4s -+ sm4e v21.4s, v7.4s -+ sm4e v22.4s, v7.4s -+ sm4e v23.4s, v7.4s -+ rev64 v20.4s, v20.4s -+ rev64 v21.4s, v21.4s -+ rev64 v22.4s, v22.4s -+ rev64 v23.4s, v23.4s -+ ext v20.16b, v20.16b, v20.16b, #8 -+ ext v21.16b, v21.16b, v21.16b, #8 -+ ext v22.16b, v22.16b, v22.16b, #8 -+ ext v23.16b, v23.16b, v23.16b, #8 -+ rev32 v20.16b, v20.16b -+ rev32 v21.16b, v21.16b -+ rev32 v22.16b, v22.16b -+ rev32 v23.16b, v23.16b -+ -+ eor v20.16b, v20.16b, v8.16b -+ eor v21.16b, v21.16b, v9.16b -+ eor v22.16b, v22.16b, v10.16b -+ eor v23.16b, v23.16b, v11.16b -+ st1 {v20.16b-v23.16b}, [x1], #64 -+ -+ tweak_calc(v8, v11, v31, v19) -+ -+ cbz w2, .dec_xts_tail -+ -+.dec_xts_1block: -+ sub w2, w2, #1 -+ -+ ld1 {v20.16b}, [x0], #16 -+ eor v20.16b, v20.16b, v8.16b -+ -+ rev32 v20.16b, v20.16b -+ sm4e v20.4s, v0.4s -+ sm4e v20.4s, v1.4s -+ sm4e v20.4s, v2.4s -+ sm4e v20.4s, v3.4s -+ sm4e v20.4s, v4.4s -+ sm4e v20.4s, v5.4s -+ sm4e v20.4s, v6.4s -+ sm4e v20.4s, v7.4s -+ rev64 v20.4s, v20.4s -+ ext v20.16b, v20.16b, v20.16b, #8 -+ rev32 v20.16b, v20.16b -+ -+ eor v20.16b, v20.16b, v8.16b -+ st1 {v20.16b}, [x1], #16 -+ -+ tweak_calc(v8, v8, v31, v16) -+ -+ cbnz w2, .dec_xts_1block -+ -+.dec_xts_tail: -+ uxtw x5, w5 -+ cbz x5, .dec_xts_end -+ -+ tweak_calc(v9, v8, v31, v16) -+ ld1 {v20.16b}, [x0] -+ eor v20.16b, v20.16b, v9.16b -+ rev32 v20.16b, v20.16b -+ sm4e v20.4s, v0.4s -+ sm4e v20.4s, v1.4s -+ sm4e v20.4s, v2.4s -+ sm4e v20.4s, v3.4s -+ sm4e v20.4s, v4.4s -+ sm4e v20.4s, v5.4s -+ sm4e v20.4s, v6.4s -+ sm4e v20.4s, v7.4s -+ rev64 v20.4s, v20.4s -+ ext v20.16b, v20.16b, v20.16b, #8 -+ rev32 v20.16b, v20.16b -+ eor v20.16b, v20.16b, v9.16b -+ -+ adr x6, .cts_permute_table -+ add x7, x6, #32 -+ add x6, x6, x5 -+ sub x7, x7, x5 -+ ld1 {v23.16b}, [x6] -+ ld1 {v24.16b}, [x7] -+ -+ add x0, x0, x5 -+ ld1 {v21.16b}, [x0] -+ -+ tbl v22.16b, {v20.16b}, v23.16b -+ tbx v20.16b, {v21.16b}, v24.16b -+ -+ eor v20.16b, v20.16b, v8.16b -+ rev32 v20.16b, v20.16b -+ sm4e v20.4s, v0.4s -+ sm4e v20.4s, v1.4s -+ sm4e v20.4s, v2.4s -+ sm4e v20.4s, v3.4s -+ sm4e v20.4s, v4.4s -+ sm4e v20.4s, v5.4s -+ sm4e v20.4s, v6.4s -+ sm4e v20.4s, v7.4s -+ rev64 v20.4s, v20.4s -+ ext v20.16b, v20.16b, v20.16b, #8 -+ rev32 v20.16b, v20.16b -+ eor v20.16b, v20.16b, v8.16b -+ -+ add x5, x1, x5 -+ st1 {v22.16b}, [x5] -+ st1 {v20.16b}, [x1] -+ -+ b .dec_xts_ret -+ -+.dec_xts_end: -+ /* new tweak */ -+ st1 {v8.16b}, [x4] -+ -+.dec_xts_ret: -+ ldp d8,d9,[sp],#16 -+ ret -+.size sm4_v8_xts_decrypt,.-sm4_v8_xts_decrypt --- -2.25.1 - diff --git a/0027-cipher-add-support-for-SM4-ECB-algorithm-in-CE-instr.patch b/0027-cipher-add-support-for-SM4-ECB-algorithm-in-CE-instr.patch deleted file mode 100644 index 2deb528..0000000 --- a/0027-cipher-add-support-for-SM4-ECB-algorithm-in-CE-instr.patch +++ /dev/null @@ -1,348 +0,0 @@ -From 6e66b445df0d39b9e796d1a4afcbe617197278de Mon Sep 17 00:00:00 2001 -From: Qi Tao -Date: Wed, 20 Mar 2024 16:13:45 +0800 -Subject: [PATCH 27/44] cipher: add support for SM4(ECB) algorithm in CE - instruction - -Provides the CE acceleration instruction (Crypto-Extension) -to accelerate the execution of the SM4(ECB) algorithm. - -Signed-off-by: Qi Tao ---- - drv/isa_ce_sm4.c | 17 +++ - drv/isa_ce_sm4.h | 2 + - drv/isa_ce_sm4_armv8.S | 263 +++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 282 insertions(+) - -diff --git a/drv/isa_ce_sm4.c b/drv/isa_ce_sm4.c -index 466b060..ccab8fb 100644 ---- a/drv/isa_ce_sm4.c -+++ b/drv/isa_ce_sm4.c -@@ -128,6 +128,16 @@ static void sm4_cbc_decrypt(struct wd_cipher_msg *msg, const struct SM4_KEY *rke - sm4_v8_cbc_encrypt(msg->in, msg->out, msg->in_bytes, rkey_dec, msg->iv, SM4_DECRYPT); - } - -+static void sm4_ecb_encrypt(struct wd_cipher_msg *msg, const struct SM4_KEY *rkey_enc) -+{ -+ sm4_v8_ecb_encrypt(msg->in, msg->out, msg->in_bytes, rkey_enc, SM4_ENCRYPT); -+} -+ -+static void sm4_ecb_decrypt(struct wd_cipher_msg *msg, const struct SM4_KEY *rkey_dec) -+{ -+ sm4_v8_ecb_encrypt(msg->in, msg->out, msg->in_bytes, rkey_dec, SM4_DECRYPT); -+} -+ - void sm4_set_encrypt_key(const __u8 *userKey, struct SM4_KEY *key) - { - sm4_v8_set_encrypt_key(userKey, key); -@@ -254,6 +264,12 @@ static int isa_ce_cipher_send(struct wd_alg_driver *drv, handle_t ctx, void *wd_ - sm4_set_decrypt_key(msg->key, &rkey); - - switch (msg->mode) { -+ case WD_CIPHER_ECB: -+ if (msg->op_type == WD_CIPHER_ENCRYPTION) -+ sm4_ecb_encrypt(msg, &rkey); -+ else -+ sm4_ecb_decrypt(msg, &rkey); -+ break; - case WD_CIPHER_CBC: - if (msg->op_type == WD_CIPHER_ENCRYPTION) - sm4_cbc_encrypt(msg, &rkey); -@@ -317,6 +333,7 @@ static struct wd_alg_driver cipher_alg_driver[] = { - GEN_CE_ALG_DRIVER("ctr(sm4)", cipher), - GEN_CE_ALG_DRIVER("cfb(sm4)", cipher), - GEN_CE_ALG_DRIVER("xts(sm4)", cipher), -+ GEN_CE_ALG_DRIVER("ecb(sm4)", cipher), - }; - - static void __attribute__((constructor)) isa_ce_probe(void) -diff --git a/drv/isa_ce_sm4.h b/drv/isa_ce_sm4.h -index d92069f..d10b0af 100644 ---- a/drv/isa_ce_sm4.h -+++ b/drv/isa_ce_sm4.h -@@ -28,6 +28,8 @@ void sm4_v8_set_decrypt_key(const unsigned char *userKey, struct SM4_KEY *key); - void sm4_v8_cbc_encrypt(const unsigned char *in, unsigned char *out, - size_t length, const struct SM4_KEY *key, - unsigned char *ivec, const int enc); -+void sm4_v8_ecb_encrypt(const unsigned char *in, unsigned char *out, -+ size_t length, const struct SM4_KEY *key, const int enc); - void sm4_v8_ctr32_encrypt_blocks(const unsigned char *in, unsigned char *out, - size_t len, const void *key, const unsigned char ivec[16]); - -diff --git a/drv/isa_ce_sm4_armv8.S b/drv/isa_ce_sm4_armv8.S -index 342dfa5..7d84496 100644 ---- a/drv/isa_ce_sm4_armv8.S -+++ b/drv/isa_ce_sm4_armv8.S -@@ -506,6 +506,269 @@ sm4_v8_cbc_encrypt: - ldp d8,d9,[sp],#16 - ret - .size sm4_v8_cbc_encrypt,.-sm4_v8_cbc_encrypt -+.globl sm4_v8_ecb_encrypt -+.type sm4_v8_ecb_encrypt,%function -+.align 5 -+sm4_v8_ecb_encrypt: -+ AARCH64_VALID_CALL_TARGET -+ ld1 {v0.4s,v1.4s,v2.4s,v3.4s},[x3],#64 -+ ld1 {v4.4s,v5.4s,v6.4s,v7.4s},[x3] -+1: -+ cmp x2,#64 -+ b.lt 1f -+ ld1 {v16.4s,v17.4s,v18.4s,v19.4s},[x0],#64 -+ cmp x2,#128 -+ b.lt 2f -+ ld1 {v20.4s,v21.4s,v22.4s,v23.4s},[x0],#64 -+ // 8 blocks -+#ifndef __ARMEB__ -+ rev32 v16.16b,v16.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v17.16b,v17.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v18.16b,v18.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v19.16b,v19.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v20.16b,v20.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v21.16b,v21.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v22.16b,v22.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v23.16b,v23.16b -+#endif -+ sm4e v16.4s,v0.4s; -+ sm4e v17.4s,v0.4s; -+ sm4e v18.4s,v0.4s; -+ sm4e v19.4s,v0.4s; -+ -+ sm4e v16.4s,v1.4s; -+ sm4e v17.4s,v1.4s; -+ sm4e v18.4s,v1.4s; -+ sm4e v19.4s,v1.4s; -+ -+ sm4e v16.4s,v2.4s; -+ sm4e v17.4s,v2.4s; -+ sm4e v18.4s,v2.4s; -+ sm4e v19.4s,v2.4s; -+ -+ sm4e v16.4s,v3.4s; -+ sm4e v17.4s,v3.4s; -+ sm4e v18.4s,v3.4s; -+ sm4e v19.4s,v3.4s; -+ -+ sm4e v16.4s,v4.4s; -+ sm4e v17.4s,v4.4s; -+ sm4e v18.4s,v4.4s; -+ sm4e v19.4s,v4.4s; -+ -+ sm4e v16.4s,v5.4s; -+ sm4e v17.4s,v5.4s; -+ sm4e v18.4s,v5.4s; -+ sm4e v19.4s,v5.4s; -+ -+ sm4e v16.4s,v6.4s; -+ sm4e v17.4s,v6.4s; -+ sm4e v18.4s,v6.4s; -+ sm4e v19.4s,v6.4s; -+ -+ sm4e v16.4s,v7.4s; -+ rev64 v16.4S,v16.4S -+ sm4e v17.4s,v7.4s; -+ ext v16.16b,v16.16b,v16.16b,#8 -+ rev64 v17.4S,v17.4S -+ sm4e v18.4s,v7.4s; -+ ext v17.16b,v17.16b,v17.16b,#8 -+ rev64 v18.4S,v18.4S -+ sm4e v19.4s,v7.4s; -+ ext v18.16b,v18.16b,v18.16b,#8 -+ rev64 v19.4S,v19.4S -+ ext v19.16b,v19.16b,v19.16b,#8 -+ sm4e v20.4s,v0.4s; -+ sm4e v21.4s,v0.4s; -+ sm4e v22.4s,v0.4s; -+ sm4e v23.4s,v0.4s; -+ -+ sm4e v20.4s,v1.4s; -+ sm4e v21.4s,v1.4s; -+ sm4e v22.4s,v1.4s; -+ sm4e v23.4s,v1.4s; -+ -+ sm4e v20.4s,v2.4s; -+ sm4e v21.4s,v2.4s; -+ sm4e v22.4s,v2.4s; -+ sm4e v23.4s,v2.4s; -+ -+ sm4e v20.4s,v3.4s; -+ sm4e v21.4s,v3.4s; -+ sm4e v22.4s,v3.4s; -+ sm4e v23.4s,v3.4s; -+ -+ sm4e v20.4s,v4.4s; -+ sm4e v21.4s,v4.4s; -+ sm4e v22.4s,v4.4s; -+ sm4e v23.4s,v4.4s; -+ -+ sm4e v20.4s,v5.4s; -+ sm4e v21.4s,v5.4s; -+ sm4e v22.4s,v5.4s; -+ sm4e v23.4s,v5.4s; -+ -+ sm4e v20.4s,v6.4s; -+ sm4e v21.4s,v6.4s; -+ sm4e v22.4s,v6.4s; -+ sm4e v23.4s,v6.4s; -+ -+ sm4e v20.4s,v7.4s; -+ rev64 v20.4S,v20.4S -+ sm4e v21.4s,v7.4s; -+ ext v20.16b,v20.16b,v20.16b,#8 -+ rev64 v21.4S,v21.4S -+ sm4e v22.4s,v7.4s; -+ ext v21.16b,v21.16b,v21.16b,#8 -+ rev64 v22.4S,v22.4S -+ sm4e v23.4s,v7.4s; -+ ext v22.16b,v22.16b,v22.16b,#8 -+ rev64 v23.4S,v23.4S -+ ext v23.16b,v23.16b,v23.16b,#8 -+#ifndef __ARMEB__ -+ rev32 v16.16b,v16.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v17.16b,v17.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v18.16b,v18.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v19.16b,v19.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v20.16b,v20.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v21.16b,v21.16b -+#endif -+ st1 {v16.4s,v17.4s,v18.4s,v19.4s},[x1],#64 -+#ifndef __ARMEB__ -+ rev32 v22.16b,v22.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v23.16b,v23.16b -+#endif -+ st1 {v20.4s,v21.4s,v22.4s,v23.4s},[x1],#64 -+ subs x2,x2,#128 -+ b.gt 1b -+ ret -+ // 4 blocks -+2: -+#ifndef __ARMEB__ -+ rev32 v16.16b,v16.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v17.16b,v17.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v18.16b,v18.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v19.16b,v19.16b -+#endif -+ sm4e v16.4s,v0.4s; -+ sm4e v17.4s,v0.4s; -+ sm4e v18.4s,v0.4s; -+ sm4e v19.4s,v0.4s; -+ -+ sm4e v16.4s,v1.4s; -+ sm4e v17.4s,v1.4s; -+ sm4e v18.4s,v1.4s; -+ sm4e v19.4s,v1.4s; -+ -+ sm4e v16.4s,v2.4s; -+ sm4e v17.4s,v2.4s; -+ sm4e v18.4s,v2.4s; -+ sm4e v19.4s,v2.4s; -+ -+ sm4e v16.4s,v3.4s; -+ sm4e v17.4s,v3.4s; -+ sm4e v18.4s,v3.4s; -+ sm4e v19.4s,v3.4s; -+ -+ sm4e v16.4s,v4.4s; -+ sm4e v17.4s,v4.4s; -+ sm4e v18.4s,v4.4s; -+ sm4e v19.4s,v4.4s; -+ -+ sm4e v16.4s,v5.4s; -+ sm4e v17.4s,v5.4s; -+ sm4e v18.4s,v5.4s; -+ sm4e v19.4s,v5.4s; -+ -+ sm4e v16.4s,v6.4s; -+ sm4e v17.4s,v6.4s; -+ sm4e v18.4s,v6.4s; -+ sm4e v19.4s,v6.4s; -+ -+ sm4e v16.4s,v7.4s; -+ rev64 v16.4S,v16.4S -+ sm4e v17.4s,v7.4s; -+ ext v16.16b,v16.16b,v16.16b,#8 -+ rev64 v17.4S,v17.4S -+ sm4e v18.4s,v7.4s; -+ ext v17.16b,v17.16b,v17.16b,#8 -+ rev64 v18.4S,v18.4S -+ sm4e v19.4s,v7.4s; -+ ext v18.16b,v18.16b,v18.16b,#8 -+ rev64 v19.4S,v19.4S -+ ext v19.16b,v19.16b,v19.16b,#8 -+#ifndef __ARMEB__ -+ rev32 v16.16b,v16.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v17.16b,v17.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v18.16b,v18.16b -+#endif -+#ifndef __ARMEB__ -+ rev32 v19.16b,v19.16b -+#endif -+ st1 {v16.4s,v17.4s,v18.4s,v19.4s},[x1],#64 -+ subs x2,x2,#64 -+ b.gt 1b -+1: -+ subs x2,x2,#16 -+ b.lt 1f -+ ld1 {v16.4s},[x0],#16 -+#ifndef __ARMEB__ -+ rev32 v16.16b,v16.16b -+#endif -+ sm4e v16.4s,v0.4s; -+ sm4e v16.4s,v1.4s; -+ sm4e v16.4s,v2.4s; -+ sm4e v16.4s,v3.4s; -+ sm4e v16.4s,v4.4s; -+ sm4e v16.4s,v5.4s; -+ sm4e v16.4s,v6.4s; -+ sm4e v16.4s,v7.4s; -+ rev64 v16.4S,v16.4S -+ ext v16.16b,v16.16b,v16.16b,#8 -+#ifndef __ARMEB__ -+ rev32 v16.16b,v16.16b -+#endif -+ st1 {v16.4s},[x1],#16 -+ b.ne 1b -+1: -+ ret -+.size sm4_v8_ecb_encrypt,.-sm4_v8_ecb_encrypt - .globl sm4_v8_ctr32_encrypt_blocks - .type sm4_v8_ctr32_encrypt_blocks,%function - .align 5 --- -2.25.1 - diff --git a/0028-uadk-cipher-isa_ce-support-SM4-cbc_cts-mode.patch b/0028-uadk-cipher-isa_ce-support-SM4-cbc_cts-mode.patch deleted file mode 100644 index 3ef0b90..0000000 --- a/0028-uadk-cipher-isa_ce-support-SM4-cbc_cts-mode.patch +++ /dev/null @@ -1,337 +0,0 @@ -From 8c23969dacd7b1ae1b77c1118a8f895bec6fd165 Mon Sep 17 00:00:00 2001 -From: Yang Shen -Date: Wed, 20 Mar 2024 16:15:00 +0800 -Subject: [PATCH 28/44] uadk/cipher: isa_ce - support SM4 cbc_cts mode - -This patch implements the CE instruction using SM4 CBC_CTS modes. - -Signed-off-by: Yang Shen -Signed-off-by: Qi Tao ---- - drv/isa_ce_sm4.c | 91 +++++++++++++++++++++++++++- - drv/isa_ce_sm4.h | 24 +++++--- - drv/isa_ce_sm4_armv8.S | 133 +++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 238 insertions(+), 10 deletions(-) - -diff --git a/drv/isa_ce_sm4.c b/drv/isa_ce_sm4.c -index ccab8fb..6961471 100644 ---- a/drv/isa_ce_sm4.c -+++ b/drv/isa_ce_sm4.c -@@ -128,6 +128,82 @@ static void sm4_cbc_decrypt(struct wd_cipher_msg *msg, const struct SM4_KEY *rke - sm4_v8_cbc_encrypt(msg->in, msg->out, msg->in_bytes, rkey_dec, msg->iv, SM4_DECRYPT); - } - -+/* -+ * In some situations, the cts mode can use cbc mode instead to imporve performance. -+ */ -+static int sm4_cts_cbc_instead(struct wd_cipher_msg *msg) -+{ -+ if (msg->in_bytes == SM4_BLOCK_SIZE) -+ return true; -+ -+ if (!(msg->in_bytes % SM4_BLOCK_SIZE) && msg->mode != WD_CIPHER_CBC_CS3) -+ return true; -+ -+ return false; -+} -+ -+static void sm4_cts_cs1_mode_adapt(__u8 *cts_in, __u8 *cts_out, -+ const __u32 cts_bytes, const int enc) -+{ -+ __u32 rsv_bytes = cts_bytes % SM4_BLOCK_SIZE; -+ __u8 blocks[SM4_BLOCK_SIZE] = {0}; -+ -+ if (enc == SM4_ENCRYPT) { -+ memcpy(blocks, cts_out, SM4_BLOCK_SIZE); -+ memcpy(cts_out, cts_out + SM4_BLOCK_SIZE, rsv_bytes); -+ memcpy(cts_out + rsv_bytes, blocks, SM4_BLOCK_SIZE); -+ } else { -+ memcpy(blocks, cts_in + rsv_bytes, SM4_BLOCK_SIZE); -+ memcpy(cts_in + SM4_BLOCK_SIZE, cts_in, rsv_bytes); -+ memcpy(cts_in, blocks, SM4_BLOCK_SIZE); -+ } -+} -+ -+static void sm4_cts_cbc_crypt(struct wd_cipher_msg *msg, -+ const struct SM4_KEY *rkey_enc, const int enc) -+{ -+ enum wd_cipher_mode mode = msg->mode; -+ __u32 in_bytes = msg->in_bytes; -+ __u8 *cts_in, *cts_out; -+ __u32 cts_bytes; -+ -+ if (sm4_cts_cbc_instead(msg)) -+ return sm4_v8_cbc_encrypt(msg->in, msg->out, in_bytes, rkey_enc, msg->iv, enc); -+ -+ cts_bytes = in_bytes % SM4_BLOCK_SIZE + SM4_BLOCK_SIZE; -+ if (cts_bytes == SM4_BLOCK_SIZE) -+ cts_bytes += SM4_BLOCK_SIZE; -+ -+ in_bytes -= cts_bytes; -+ if (in_bytes) -+ sm4_v8_cbc_encrypt(msg->in, msg->out, in_bytes, rkey_enc, msg->iv, enc); -+ -+ cts_in = msg->in + in_bytes; -+ cts_out = msg->out + in_bytes; -+ -+ if (enc == SM4_ENCRYPT) { -+ sm4_v8_cbc_cts_encrypt(cts_in, cts_out, cts_bytes, rkey_enc, msg->iv); -+ -+ if (mode == WD_CIPHER_CBC_CS1) -+ sm4_cts_cs1_mode_adapt(cts_in, cts_out, cts_bytes, enc); -+ } else { -+ if (mode == WD_CIPHER_CBC_CS1) -+ sm4_cts_cs1_mode_adapt(cts_in, cts_out, cts_bytes, enc); -+ -+ sm4_v8_cbc_cts_decrypt(cts_in, cts_out, cts_bytes, rkey_enc, msg->iv); -+ } -+} -+ -+static void sm4_cbc_cts_encrypt(struct wd_cipher_msg *msg, const struct SM4_KEY *rkey_enc) -+{ -+ sm4_cts_cbc_crypt(msg, rkey_enc, SM4_ENCRYPT); -+} -+ -+static void sm4_cbc_cts_decrypt(struct wd_cipher_msg *msg, const struct SM4_KEY *rkey_enc) -+{ -+ sm4_cts_cbc_crypt(msg, rkey_enc, SM4_DECRYPT); -+} -+ - static void sm4_ecb_encrypt(struct wd_cipher_msg *msg, const struct SM4_KEY *rkey_enc) - { - sm4_v8_ecb_encrypt(msg->in, msg->out, msg->in_bytes, rkey_enc, SM4_ENCRYPT); -@@ -138,12 +214,12 @@ static void sm4_ecb_decrypt(struct wd_cipher_msg *msg, const struct SM4_KEY *rke - sm4_v8_ecb_encrypt(msg->in, msg->out, msg->in_bytes, rkey_dec, SM4_DECRYPT); - } - --void sm4_set_encrypt_key(const __u8 *userKey, struct SM4_KEY *key) -+static void sm4_set_encrypt_key(const __u8 *userKey, struct SM4_KEY *key) - { - sm4_v8_set_encrypt_key(userKey, key); - } - --void sm4_set_decrypt_key(const __u8 *userKey, struct SM4_KEY *key) -+static void sm4_set_decrypt_key(const __u8 *userKey, struct SM4_KEY *key) - { - sm4_v8_set_decrypt_key(userKey, key); - } -@@ -276,6 +352,14 @@ static int isa_ce_cipher_send(struct wd_alg_driver *drv, handle_t ctx, void *wd_ - else - sm4_cbc_decrypt(msg, &rkey); - break; -+ case WD_CIPHER_CBC_CS1: -+ case WD_CIPHER_CBC_CS2: -+ case WD_CIPHER_CBC_CS3: -+ if (msg->op_type == WD_CIPHER_ENCRYPTION) -+ sm4_cbc_cts_encrypt(msg, &rkey); -+ else -+ sm4_cbc_cts_decrypt(msg, &rkey); -+ break; - case WD_CIPHER_CTR: - sm4_ctr_encrypt(msg, &rkey); - break; -@@ -330,6 +414,9 @@ static int cipher_recv(struct wd_alg_driver *drv, handle_t ctx, void *msg) - - static struct wd_alg_driver cipher_alg_driver[] = { - GEN_CE_ALG_DRIVER("cbc(sm4)", cipher), -+ GEN_CE_ALG_DRIVER("cbc-cs1(sm4)", cipher), -+ GEN_CE_ALG_DRIVER("cbc-cs2(sm4)", cipher), -+ GEN_CE_ALG_DRIVER("cbc-cs3(sm4)", cipher), - GEN_CE_ALG_DRIVER("ctr(sm4)", cipher), - GEN_CE_ALG_DRIVER("cfb(sm4)", cipher), - GEN_CE_ALG_DRIVER("xts(sm4)", cipher), -diff --git a/drv/isa_ce_sm4.h b/drv/isa_ce_sm4.h -index d10b0af..308619e 100644 ---- a/drv/isa_ce_sm4.h -+++ b/drv/isa_ce_sm4.h -@@ -25,27 +25,35 @@ struct sm4_ce_drv_ctx { - - void sm4_v8_set_encrypt_key(const unsigned char *userKey, struct SM4_KEY *key); - void sm4_v8_set_decrypt_key(const unsigned char *userKey, struct SM4_KEY *key); -+ - void sm4_v8_cbc_encrypt(const unsigned char *in, unsigned char *out, - size_t length, const struct SM4_KEY *key, - unsigned char *ivec, const int enc); -+void sm4_v8_cbc_cts_encrypt(const unsigned char *in, unsigned char *out, -+ size_t len, const void *key, const unsigned char ivec[16]); -+void sm4_v8_cbc_cts_decrypt(const unsigned char *in, unsigned char *out, -+ size_t len, const void *key, const unsigned char ivec[16]); -+ - void sm4_v8_ecb_encrypt(const unsigned char *in, unsigned char *out, - size_t length, const struct SM4_KEY *key, const int enc); -+ - void sm4_v8_ctr32_encrypt_blocks(const unsigned char *in, unsigned char *out, -- size_t len, const void *key, const unsigned char ivec[16]); -+ size_t len, const void *key, const unsigned char ivec[16]); - - void sm4_v8_cfb_encrypt_blocks(const unsigned char *in, unsigned char *out, -- size_t length, const struct SM4_KEY *key, unsigned char *ivec); -+ size_t length, const struct SM4_KEY *key, unsigned char *ivec); - void sm4_v8_cfb_decrypt_blocks(const unsigned char *in, unsigned char *out, -- size_t length, const struct SM4_KEY *key, unsigned char *ivec); -+ size_t length, const struct SM4_KEY *key, unsigned char *ivec); -+ - void sm4_v8_crypt_block(const unsigned char *in, unsigned char *out, -- const struct SM4_KEY *key); -+ const struct SM4_KEY *key); - - int sm4_v8_xts_encrypt(const unsigned char *in, unsigned char *out, size_t length, -- const struct SM4_KEY *key, unsigned char *ivec, -- const struct SM4_KEY *key2); -+ const struct SM4_KEY *key, unsigned char *ivec, -+ const struct SM4_KEY *key2); - int sm4_v8_xts_decrypt(const unsigned char *in, unsigned char *out, size_t length, -- const struct SM4_KEY *key, unsigned char *ivec, -- const struct SM4_KEY *key2); -+ const struct SM4_KEY *key, unsigned char *ivec, -+ const struct SM4_KEY *key2); - - #ifdef __cplusplus - } -diff --git a/drv/isa_ce_sm4_armv8.S b/drv/isa_ce_sm4_armv8.S -index 7d84496..6ebf39b 100644 ---- a/drv/isa_ce_sm4_armv8.S -+++ b/drv/isa_ce_sm4_armv8.S -@@ -506,6 +506,139 @@ sm4_v8_cbc_encrypt: - ldp d8,d9,[sp],#16 - ret - .size sm4_v8_cbc_encrypt,.-sm4_v8_cbc_encrypt -+ -+.globl sm4_v8_cbc_cts_encrypt -+.type sm4_v8_cbc_cts_encrypt,%function -+.align 5 -+sm4_v8_cbc_cts_encrypt: -+ AARCH64_VALID_CALL_TARGET -+ ld1 {v0.4s,v1.4s,v2.4s,v3.4s}, [x3], #64 -+ ld1 {v4.4s,v5.4s,v6.4s,v7.4s}, [x3] -+ sub x5, x2, #16 -+ -+ ld1 {v8.4s}, [x4] -+ -+ ld1 {v10.4s}, [x0] -+ eor v8.16b, v8.16b, v10.16b -+ rev32 v8.16b, v8.16b; -+ sm4e v8.4s, v0.4s; -+ sm4e v8.4s, v1.4s; -+ sm4e v8.4s, v2.4s; -+ sm4e v8.4s, v3.4s; -+ sm4e v8.4s, v4.4s; -+ sm4e v8.4s, v5.4s; -+ sm4e v8.4s, v6.4s; -+ sm4e v8.4s, v7.4s; -+ rev64 v8.4s, v8.4s; -+ ext v8.16b, v8.16b, v8.16b, #8; -+ rev32 v8.16b, v8.16b; -+ -+ /* load permute table */ -+ adr x6, .cts_permute_table -+ add x7, x6, #32 -+ add x6, x6, x5 -+ sub x7, x7, x5 -+ ld1 {v13.4s}, [x6] -+ ld1 {v14.4s}, [x7] -+ -+ /* overlapping loads */ -+ add x0, x0, x5 -+ ld1 {v11.4s}, [x0] -+ -+ /* create Cn from En-1 */ -+ tbl v10.16b, {v8.16b}, v13.16b -+ /* padding Pn with zeros */ -+ tbl v11.16b, {v11.16b}, v14.16b -+ -+ eor v11.16b, v11.16b, v8.16b -+ rev32 v11.16b, v11.16b; -+ sm4e v11.4s, v0.4s; -+ sm4e v11.4s, v1.4s; -+ sm4e v11.4s, v2.4s; -+ sm4e v11.4s, v3.4s; -+ sm4e v11.4s, v4.4s; -+ sm4e v11.4s, v5.4s; -+ sm4e v11.4s, v6.4s; -+ sm4e v11.4s, v7.4s; -+ rev64 v11.4s, v11.4s; -+ ext v11.16b, v11.16b, v11.16b, #8; -+ rev32 v11.16b, v11.16b; -+ -+ /* overlapping stores */ -+ add x5, x1, x5 -+ st1 {v10.16b}, [x5] -+ st1 {v11.16b}, [x1] -+ -+ ret -+.size sm4_v8_cbc_cts_encrypt,.-sm4_v8_cbc_cts_encrypt -+ -+.globl sm4_v8_cbc_cts_decrypt -+.type sm4_v8_cbc_cts_decrypt,%function -+.align 5 -+sm4_v8_cbc_cts_decrypt: -+ AARCH64_VALID_CALL_TARGET -+ ld1 {v0.4s,v1.4s,v2.4s,v3.4s}, [x3], #64 -+ ld1 {v4.4s,v5.4s,v6.4s,v7.4s}, [x3] -+ -+ sub x5, x2, #16 -+ -+ ld1 {v8.4s}, [x4] -+ -+ /* load permute table */ -+ adr x6, .cts_permute_table -+ add x7, x6, #32 -+ add x6, x6, x5 -+ sub x7, x7, x5 -+ ld1 {v13.4s}, [x6] -+ ld1 {v14.4s}, [x7] -+ -+ /* overlapping loads */ -+ ld1 {v10.16b}, [x0], x5 -+ ld1 {v11.16b}, [x0] -+ -+ rev32 v10.16b, v10.16b; -+ sm4e v10.4s, v0.4s; -+ sm4e v10.4s, v1.4s; -+ sm4e v10.4s, v2.4s; -+ sm4e v10.4s, v3.4s; -+ sm4e v10.4s, v4.4s; -+ sm4e v10.4s, v5.4s; -+ sm4e v10.4s, v6.4s; -+ sm4e v10.4s, v7.4s; -+ rev64 v10.4s, v10.4s; -+ ext v10.16b, v10.16b, v10.16b, #8; -+ rev32 v10.16b, v10.16b; -+ -+ /* select the first Ln bytes of Xn to create Pn */ -+ tbl v12.16b, {v10.16b}, v13.16b -+ eor v12.16b, v12.16b, v11.16b -+ -+ /* overwrite the first Ln bytes with Cn to create En-1 */ -+ tbx v10.16b, {v11.16b}, v14.16b -+ -+ rev32 v10.16b, v10.16b; -+ sm4e v10.4s, v0.4s; -+ sm4e v10.4s, v1.4s; -+ sm4e v10.4s, v2.4s; -+ sm4e v10.4s, v3.4s; -+ sm4e v10.4s, v4.4s; -+ sm4e v10.4s, v5.4s; -+ sm4e v10.4s, v6.4s; -+ sm4e v10.4s, v7.4s; -+ rev64 v10.4s, v10.4s; -+ ext v10.16b, v10.16b, v10.16b, #8; -+ rev32 v10.16b, v10.16b; -+ -+ eor v10.16b, v10.16b, v8.16b -+ -+ /* overlapping stores */ -+ add x5, x1, x5 -+ st1 {v12.16b}, [x5] -+ st1 {v10.16b}, [x1] -+ -+ ret -+.size sm4_v8_cbc_cts_decrypt,.-sm4_v8_cbc_cts_decrypt -+ - .globl sm4_v8_ecb_encrypt - .type sm4_v8_ecb_encrypt,%function - .align 5 --- -2.25.1 - diff --git a/0029-uadk-wd_alg-check-whether-the-platform-supports-SVE.patch b/0029-uadk-wd_alg-check-whether-the-platform-supports-SVE.patch deleted file mode 100644 index 0bf5c92..0000000 --- a/0029-uadk-wd_alg-check-whether-the-platform-supports-SVE.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 4163f4f6ff8534b171c8b1b044452b930629576d Mon Sep 17 00:00:00 2001 -From: Weili Qian -Date: Sat, 23 Mar 2024 17:54:16 +0800 -Subject: [PATCH 29/44] uadk/wd_alg: check whether the platform supports SVE - -If the algorithm uses the SVE instruction, check whether -the platform supports SVE before algorithm driver registration. -If the platform does not support SVE, do not register the algorithm. - -Signed-off-by: Weili Qian ---- - wd_alg.c | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - -diff --git a/wd_alg.c b/wd_alg.c -index f34a407..de352d7 100644 ---- a/wd_alg.c -+++ b/wd_alg.c -@@ -109,6 +109,19 @@ static bool wd_check_ce_support(const char *dev_name) - return false; - } - -+static bool wd_check_sve_support(void) -+{ -+ unsigned long hwcaps = 0; -+ -+ #if defined(__aarch64__) -+ hwcaps = getauxval(AT_HWCAP); -+ #endif -+ if (hwcaps & HWCAP_SVE) -+ return true; -+ -+ return false; -+} -+ - static bool wd_alg_check_available(int calc_type, const char *dev_name) - { - bool ret = false; -@@ -122,6 +135,7 @@ static bool wd_alg_check_available(int calc_type, const char *dev_name) - break; - /* Should find the CPU if not support SVE */ - case UADK_ALG_SVE_INSTR: -+ ret = wd_check_sve_support(); - break; - /* Check if the current driver has device support */ - case UADK_ALG_HW: --- -2.25.1 - diff --git a/0030-uadk-sched-fix-async-mode-ctx-id.patch b/0030-uadk-sched-fix-async-mode-ctx-id.patch deleted file mode 100644 index 021a896..0000000 --- a/0030-uadk-sched-fix-async-mode-ctx-id.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 6ab956dc04c04849d2650e08d59b9722522eb201 Mon Sep 17 00:00:00 2001 -From: Weili Qian -Date: Sat, 23 Mar 2024 17:56:17 +0800 -Subject: [PATCH 30/44] uadk/sched: fix async mode ctx id - -In the single scheduler scenario, ctx id 1 is asynchronous ctx, -but the function sched_single_poll_policy() uses ctx id 0. -As a result, packets fail to be received. Change the value of -ctx id to 1. - -Signed-off-by: Weili Qian ---- - wd_sched.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/wd_sched.c b/wd_sched.c -index b43834d..6766872 100644 ---- a/wd_sched.c -+++ b/wd_sched.c -@@ -428,9 +428,9 @@ static int sched_single_poll_policy(handle_t h_sched_ctx, - } - - while (loop_times > 0) { -- /* Default async mode use ctx 0 */ -+ /* Default async mode use ctx 1 */ - loop_times--; -- ret = sched_ctx->poll_func(0, 1, &poll_num); -+ ret = sched_ctx->poll_func(1, 1, &poll_num); - if ((ret < 0) && (ret != -EAGAIN)) - return ret; - else if (ret == -EAGAIN) --- -2.25.1 - diff --git a/0031-uadk-initializes-ctx-resources-in-SVE-mode.patch b/0031-uadk-initializes-ctx-resources-in-SVE-mode.patch deleted file mode 100644 index d0fdc9f..0000000 --- a/0031-uadk-initializes-ctx-resources-in-SVE-mode.patch +++ /dev/null @@ -1,169 +0,0 @@ -From 4516c0f35532713548f4ccd016c562359c713eb4 Mon Sep 17 00:00:00 2001 -From: Weili Qian -Date: Sat, 23 Mar 2024 17:57:12 +0800 -Subject: [PATCH 31/44] uadk: initializes ctx resources in SVE mode - -Initializes ctx resources in SVE mode. In addition, when the driver -is released, the config resources need to be released in all modes, -not only UADK_ALG_HW. - -Signed-off-by: Weili Qian ---- - include/wd_alg_common.h | 4 ++ - wd_util.c | 95 +++++++++++++++++++++++++++++++++++------ - 2 files changed, 85 insertions(+), 14 deletions(-) - -diff --git a/include/wd_alg_common.h b/include/wd_alg_common.h -index 32b8630..5fee085 100644 ---- a/include/wd_alg_common.h -+++ b/include/wd_alg_common.h -@@ -127,6 +127,10 @@ struct wd_ctx_params { - struct wd_cap_config *cap; - }; - -+struct wd_soft_ctx { -+ void *priv; -+}; -+ - struct wd_ctx_internal { - handle_t ctx; - __u8 op_type; -diff --git a/wd_util.c b/wd_util.c -index fb58167..1e2b190 100644 ---- a/wd_util.c -+++ b/wd_util.c -@@ -28,6 +28,10 @@ - #define US2S(us) ((us) >> 20) - #define WD_INIT_RETRY_TIMEOUT 3 - -+#define WD_SOFT_CTX_NUM 2 -+#define WD_SOFT_SYNC_CTX 0 -+#define WD_SOFT_ASYNC_CTX 1 -+ - #define WD_DRV_LIB_DIR "uadk" - - struct msg_pool { -@@ -1968,8 +1972,7 @@ void wd_alg_uninit_driver(struct wd_ctx_config_internal *config, - - driver->exit(driver); - /* Ctx config just need clear once */ -- if (driver->calc_type == UADK_ALG_HW) -- wd_clear_ctx_config(config); -+ wd_clear_ctx_config(config); - - if (driver->fallback) - wd_alg_uninit_fallback((struct wd_alg_driver *)driver->fallback); -@@ -2660,6 +2663,47 @@ static void wd_alg_ctx_uninit(struct wd_ctx_config *ctx_config) - free(ctx_config->ctxs); - } - -+static int wd_alg_init_sve_ctx(struct wd_ctx_config *ctx_config) -+{ -+ struct wd_soft_ctx *ctx_sync, *ctx_async; -+ -+ ctx_config->ctx_num = WD_SOFT_CTX_NUM; -+ ctx_config->ctxs = calloc(ctx_config->ctx_num, sizeof(struct wd_ctx)); -+ if (!ctx_config->ctxs) -+ return -WD_ENOMEM; -+ -+ ctx_sync = calloc(1, sizeof(struct wd_soft_ctx)); -+ if (!ctx_sync) -+ goto free_ctxs; -+ -+ ctx_config->ctxs[WD_SOFT_SYNC_CTX].op_type = 0; -+ ctx_config->ctxs[WD_SOFT_SYNC_CTX].ctx_mode = CTX_MODE_SYNC; -+ ctx_config->ctxs[WD_SOFT_SYNC_CTX].ctx = (handle_t)ctx_sync; -+ -+ ctx_async = calloc(1, sizeof(struct wd_soft_ctx)); -+ if (!ctx_async) -+ goto free_ctx_sync; -+ -+ ctx_config->ctxs[WD_SOFT_ASYNC_CTX].op_type = 0; -+ ctx_config->ctxs[WD_SOFT_ASYNC_CTX].ctx_mode = CTX_MODE_ASYNC; -+ ctx_config->ctxs[WD_SOFT_ASYNC_CTX].ctx = (handle_t)ctx_async; -+ -+ return 0; -+ -+free_ctx_sync: -+ free(ctx_sync); -+free_ctxs: -+ free(ctx_config->ctxs); -+ return -WD_ENOMEM; -+} -+ -+static void wd_alg_uninit_sve_ctx(struct wd_ctx_config *ctx_config) -+{ -+ free((struct wd_soft_ctx *)ctx_config->ctxs[WD_SOFT_ASYNC_CTX].ctx); -+ free((struct wd_soft_ctx *)ctx_config->ctxs[WD_SOFT_SYNC_CTX].ctx); -+ free(ctx_config->ctxs); -+} -+ - int wd_alg_attrs_init(struct wd_init_attrs *attrs) - { - wd_alg_poll_ctx alg_poll_func = attrs->alg_poll_ctx; -@@ -2717,9 +2761,23 @@ int wd_alg_attrs_init(struct wd_init_attrs *attrs) - } - attrs->sched = alg_sched; - -- ret = wd_sched_rr_instance(alg_sched, NULL); -+ ctx_config = calloc(1, sizeof(*ctx_config)); -+ if (!ctx_config) { -+ WD_ERR("fail to alloc ctx config\n"); -+ goto out_freesched; -+ } -+ attrs->ctx_config = ctx_config; -+ -+ ret = wd_alg_init_sve_ctx(ctx_config); - if (ret) { -- WD_ERR("fail to instance scheduler\n"); -+ WD_ERR("fail to init sve ctx!\n"); -+ goto out_freesched; -+ } -+ -+ ctx_config->cap = attrs->ctx_params->cap; -+ ret = alg_init_func(ctx_config, alg_sched); -+ if (ret) { -+ wd_alg_uninit_sve_ctx(ctx_config); - goto out_freesched; - } - break; -@@ -2780,17 +2838,26 @@ void wd_alg_attrs_uninit(struct wd_init_attrs *attrs) - struct wd_sched *alg_sched = attrs->sched; - int driver_type = attrs->driver->calc_type; - -- if (driver_type == UADK_ALG_CE_INSTR || driver_type == UADK_ALG_SOFT) { -- if (ctx_config) { -- wd_alg_ce_ctx_uninit(ctx_config); -- free(ctx_config); -- } -- } else { -- if (ctx_config) { -- wd_alg_ctx_uninit(ctx_config); -- free(ctx_config); -- } -+ if (!ctx_config) { -+ wd_sched_rr_release(alg_sched); -+ return; -+ } -+ -+ switch (driver_type) { -+ case UADK_ALG_SOFT: -+ case UADK_ALG_CE_INSTR: -+ wd_alg_ce_ctx_uninit(ctx_config); -+ break; -+ case UADK_ALG_SVE_INSTR: -+ wd_alg_uninit_sve_ctx(ctx_config); -+ break; -+ case UADK_ALG_HW: -+ wd_alg_ctx_uninit(ctx_config); -+ break; -+ default: -+ break; - } - -+ free(ctx_config); - wd_sched_rr_release(alg_sched); - } --- -2.25.1 - diff --git a/0032-uadk-hash_mb-support-multi-buffer-calculation-for-sm.patch b/0032-uadk-hash_mb-support-multi-buffer-calculation-for-sm.patch deleted file mode 100644 index 7089827..0000000 --- a/0032-uadk-hash_mb-support-multi-buffer-calculation-for-sm.patch +++ /dev/null @@ -1,4092 +0,0 @@ -From 5dbc53c96ac4efcf26b4dbcdbbf55d1b5e7a06be Mon Sep 17 00:00:00 2001 -From: Weili Qian -Date: Sat, 23 Mar 2024 18:00:43 +0800 -Subject: [PATCH 32/44] uadk/hash_mb: support multi-buffer calculation for sm3 - and md5 - -Supports sm3 and md5 multi-buffer calculation by using SVE instructions. -If the platform supports SVE instructions, uesrs can choose SVE instructions -to perform sm3 and md5 algorithm calculation. - -The assembly implementation is from isa-l_crypto: -https://github.com/intel/isa-l_crypto.git - -Signed-off-by: Weili Qian ---- - Makefile.am | 15 +- - drv/hash_mb/hash_mb.c | 843 ++++++++++++++++++++++++++++++++++ - drv/hash_mb/hash_mb.h | 62 +++ - drv/hash_mb/md5_mb_asimd_x1.S | 248 ++++++++++ - drv/hash_mb/md5_mb_asimd_x4.S | 526 +++++++++++++++++++++ - drv/hash_mb/md5_mb_sve.S | 158 +++++++ - drv/hash_mb/md5_sve_common.S | 478 +++++++++++++++++++ - drv/hash_mb/sm3_mb_asimd_x1.S | 387 ++++++++++++++++ - drv/hash_mb/sm3_mb_asimd_x4.S | 576 +++++++++++++++++++++++ - drv/hash_mb/sm3_mb_sve.S | 161 +++++++ - drv/hash_mb/sm3_sve_common.S | 505 ++++++++++++++++++++ - 11 files changed, 3958 insertions(+), 1 deletion(-) - create mode 100644 drv/hash_mb/hash_mb.c - create mode 100644 drv/hash_mb/hash_mb.h - create mode 100644 drv/hash_mb/md5_mb_asimd_x1.S - create mode 100644 drv/hash_mb/md5_mb_asimd_x4.S - create mode 100644 drv/hash_mb/md5_mb_sve.S - create mode 100644 drv/hash_mb/md5_sve_common.S - create mode 100644 drv/hash_mb/sm3_mb_asimd_x1.S - create mode 100644 drv/hash_mb/sm3_mb_asimd_x4.S - create mode 100644 drv/hash_mb/sm3_mb_sve.S - create mode 100644 drv/hash_mb/sm3_sve_common.S - -diff --git a/Makefile.am b/Makefile.am -index f78ad14..68f3106 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -45,7 +45,7 @@ lib_LTLIBRARIES=libwd.la libwd_comp.la libwd_crypto.la - - uadk_driversdir=$(libdir)/uadk - uadk_drivers_LTLIBRARIES=libhisi_sec.la libhisi_hpre.la libhisi_zip.la \ -- libisa_ce.la -+ libisa_ce.la libisa_sve.la - - libwd_la_SOURCES=wd.c wd_mempool.c wd.h wd_alg.c wd_alg.h \ - v1/wd.c v1/wd.h v1/wd_adapter.c v1/wd_adapter.h \ -@@ -94,6 +94,12 @@ libhisi_hpre_la_SOURCES=drv/hisi_hpre.c drv/hisi_qm_udrv.c \ - libisa_ce_la_SOURCES=arm_arch_ce.h drv/isa_ce_sm3.c drv/isa_ce_sm3_armv8.S isa_ce_sm3.h \ - drv/isa_ce_sm4.c drv/isa_ce_sm4_armv8.S drv/isa_ce_sm4.h - -+libisa_sve_la_SOURCES=drv/hash_mb/hash_mb.c wd_digest_drv.h drv/hash_mb/hash_mb.h \ -+ drv/hash_mb/sm3_sve_common.S drv/hash_mb/sm3_mb_asimd_x1.S \ -+ drv/hash_mb/sm3_mb_asimd_x4.S drv/hash_mb/sm3_mb_sve.S \ -+ drv/hash_mb/md5_sve_common.S drv/hash_mb/md5_mb_asimd_x1.S \ -+ drv/hash_mb/md5_mb_asimd_x4.S drv/hash_mb/md5_mb_sve.S -+ - if WD_STATIC_DRV - AM_CFLAGS += -DWD_STATIC_DRV -fPIC - AM_CFLAGS += -DWD_NO_LOG -@@ -117,6 +123,9 @@ libhisi_hpre_la_DEPENDENCIES = libwd.la libwd_crypto.la - libisa_ce_la_LIBADD = $(libwd_la_OBJECTS) $(libwd_crypto_la_OBJECTS) - libisa_ce_la_DEPENDENCIES = libwd.la libwd_crypto.la - -+libisa_sve_la_LIBADD = $(libwd_la_OBJECTS) $(libwd_crypto_la_OBJECTS) -+libisa_sve_la_DEPENDENCIES = libwd.la libwd_crypto.la -+ - else - UADK_WD_SYMBOL= -Wl,--version-script,$(top_srcdir)/libwd.map - UADK_CRYPTO_SYMBOL= -Wl,--version-script,$(top_srcdir)/libwd_crypto.map -@@ -149,6 +158,10 @@ libhisi_hpre_la_DEPENDENCIES= libwd.la libwd_crypto.la - libisa_ce_la_LIBADD= -lwd -lwd_crypto - libisa_ce_la_LDFLAGS=$(UADK_VERSION) - libisa_ce_la_DEPENDENCIES= libwd.la libwd_crypto.la -+ -+libisa_sve_la_LIBADD= -lwd -lwd_crypto -+libisa_sve_la_LDFLAGS=$(UADK_VERSION) -+libisa_sve_la_DEPENDENCIES= libwd.la libwd_crypto.la - endif # WD_STATIC_DRV - - pkgconfigdir = $(libdir)/pkgconfig -diff --git a/drv/hash_mb/hash_mb.c b/drv/hash_mb/hash_mb.c -new file mode 100644 -index 0000000..a73c698 ---- /dev/null -+++ b/drv/hash_mb/hash_mb.c -@@ -0,0 +1,843 @@ -+/* SPDX-License-Identifier: Apache-2.0 */ -+/* Copyright 2024 Huawei Technologies Co.,Ltd. All rights reserved. */ -+ -+#include -+#include -+#include -+#include -+#include "hash_mb.h" -+ -+#define MIN(a, b) (((a) > (b)) ? (b) : (a)) -+#define IPAD_VALUE 0x36 -+#define OPAD_VALUE 0x5C -+#define HASH_KEY_LEN 64 -+#define HASH_BLOCK_OFFSET 6 -+#define HASH_BLOCK_SIZE 64 -+#define HASH_PADLENGTHFIELD_SIZE 56 -+#define HASH_PADDING_SIZE 120 -+#define HASH_HIGH_32BITS 32 -+#define HASH_PADDING_BLOCKS 2 -+#define HASH_NENO_PROCESS_JOBS 4 -+#define HASH_TRY_PROCESS_COUNT 16 -+#define BYTES_TO_BITS_OFFSET 3 -+ -+#define MD5_DIGEST_DATA_SIZE 16 -+#define SM3_DIGEST_DATA_SIZE 32 -+#define HASH_MAX_LANES 32 -+#define SM3_MAX_LANES 16 -+ -+#define PUTU32(p, V) \ -+ ((p)[0] = (uint8_t)((V) >> 24), \ -+ (p)[1] = (uint8_t)((V) >> 16), \ -+ (p)[2] = (uint8_t)((V) >> 8), \ -+ (p)[3] = (uint8_t)(V)) -+ -+struct hash_mb_ops { -+ int (*max_lanes)(void); -+ void (*asimd_x4)(struct hash_job *job1, struct hash_job *job2, -+ struct hash_job *job3, struct hash_job *job4, int len); -+ void (*asimd_x1)(struct hash_job *job, int len); -+ void (*sve)(int blocks, int total_lanes, struct hash_job **job_vec); -+ __u8 *iv_data; -+ int iv_bytes; -+ int max_jobs; -+}; -+ -+struct hash_mb_poll_queue { -+ struct hash_job *head; -+ struct hash_job *tail; -+ pthread_spinlock_t s_lock; -+ const struct hash_mb_ops *ops; -+ __u32 job_num; -+}; -+ -+struct hash_mb_queue { -+ struct hash_mb_poll_queue sm3_poll_queue; -+ struct hash_mb_poll_queue md5_poll_queue; -+ pthread_spinlock_t r_lock; -+ struct hash_job *recv_head; -+ struct hash_job *recv_tail; -+ __u32 complete_cnt; -+ __u8 ctx_mode; -+}; -+ -+struct hash_mb_ctx { -+ struct wd_ctx_config_internal config; -+}; -+ -+static __u8 sm3_iv_data[SM3_DIGEST_DATA_SIZE] = { -+ 0x73, 0x80, 0x16, 0x6f, 0x49, 0x14, 0xb2, 0xb9, -+ 0x17, 0x24, 0x42, 0xd7, 0xda, 0x8a, 0x06, 0x00, -+ 0xa9, 0x6f, 0x30, 0xbc, 0x16, 0x31, 0x38, 0xaa, -+ 0xe3, 0x8d, 0xee, 0x4d, 0xb0, 0xfb, 0x0e, 0x4e, -+}; -+ -+static __u8 md5_iv_data[MD5_DIGEST_DATA_SIZE] = { -+ 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, -+ 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, -+}; -+ -+static struct hash_mb_ops md5_ops = { -+ .max_lanes = md5_mb_sve_max_lanes, -+ .asimd_x4 = md5_mb_asimd_x4, -+ .asimd_x1 = md5_mb_asimd_x1, -+ .sve = md5_mb_sve, -+ .iv_data = md5_iv_data, -+ .iv_bytes = MD5_DIGEST_DATA_SIZE, -+ .max_jobs = HASH_MAX_LANES, -+}; -+ -+static struct hash_mb_ops sm3_ops = { -+ .max_lanes = sm3_mb_sve_max_lanes, -+ .asimd_x4 = sm3_mb_asimd_x4, -+ .asimd_x1 = sm3_mb_asimd_x1, -+ .sve = sm3_mb_sve, -+ .iv_data = sm3_iv_data, -+ .iv_bytes = SM3_DIGEST_DATA_SIZE, -+ .max_jobs = SM3_MAX_LANES, -+}; -+ -+static void hash_mb_uninit_poll_queue(struct hash_mb_poll_queue *poll_queue) -+{ -+ pthread_spin_destroy(&poll_queue->s_lock); -+} -+ -+static void hash_mb_queue_uninit(struct wd_ctx_config_internal *config, int ctx_num) -+{ -+ struct hash_mb_queue *mb_queue; -+ struct wd_soft_ctx *ctx; -+ int i; -+ -+ for (i = 0; i < ctx_num; i++) { -+ ctx = (struct wd_soft_ctx *)config->ctxs[i].ctx; -+ mb_queue = ctx->priv; -+ pthread_spin_destroy(&mb_queue->r_lock); -+ hash_mb_uninit_poll_queue(&mb_queue->sm3_poll_queue); -+ hash_mb_uninit_poll_queue(&mb_queue->md5_poll_queue); -+ free(mb_queue); -+ } -+} -+ -+static int hash_mb_init_poll_queue(struct hash_mb_poll_queue *poll_queue) -+{ -+ int ret; -+ -+ ret = pthread_spin_init(&poll_queue->s_lock, PTHREAD_PROCESS_SHARED); -+ if (ret) { -+ WD_ERR("failed to init s_lock!\n"); -+ return ret; -+ } -+ -+ poll_queue->head = NULL; -+ poll_queue->tail = NULL; -+ poll_queue->job_num = 0; -+ -+ return WD_SUCCESS; -+} -+ -+static int hash_mb_queue_init(struct wd_ctx_config_internal *config) -+{ -+ struct hash_mb_queue *mb_queue; -+ int ctx_num = config->ctx_num; -+ struct wd_soft_ctx *ctx; -+ int i, ret; -+ -+ for (i = 0; i < ctx_num; i++) { -+ mb_queue = calloc(1, sizeof(struct hash_mb_queue)); -+ if (!mb_queue) { -+ ret = -WD_ENOMEM; -+ goto free_mb_queue; -+ } -+ -+ mb_queue->ctx_mode = config->ctxs[i].ctx_mode; -+ ctx = (struct wd_soft_ctx *)config->ctxs[i].ctx; -+ ctx->priv = mb_queue; -+ ret = hash_mb_init_poll_queue(&mb_queue->sm3_poll_queue); -+ if (ret) -+ goto free_mem; -+ -+ ret = hash_mb_init_poll_queue(&mb_queue->md5_poll_queue); -+ if (ret) -+ goto uninit_sm3_poll; -+ -+ ret = pthread_spin_init(&mb_queue->r_lock, PTHREAD_PROCESS_SHARED); -+ if (ret) { -+ WD_ERR("failed to init r_lock!\n"); -+ goto uninit_md5_poll; -+ } -+ -+ mb_queue->sm3_poll_queue.ops = &sm3_ops; -+ mb_queue->md5_poll_queue.ops = &md5_ops; -+ mb_queue->recv_head = NULL; -+ mb_queue->recv_tail = NULL; -+ mb_queue->complete_cnt = 0; -+ } -+ -+ return WD_SUCCESS; -+ -+uninit_md5_poll: -+ hash_mb_uninit_poll_queue(&mb_queue->md5_poll_queue); -+uninit_sm3_poll: -+ hash_mb_uninit_poll_queue(&mb_queue->sm3_poll_queue); -+free_mem: -+ free(mb_queue); -+free_mb_queue: -+ hash_mb_queue_uninit(config, i); -+ return ret; -+} -+ -+static int hash_mb_init(struct wd_alg_driver *drv, void *conf) -+{ -+ struct wd_ctx_config_internal *config = conf; -+ struct hash_mb_ctx *priv; -+ int ret; -+ -+ priv = malloc(sizeof(struct hash_mb_ctx)); -+ if (!priv) -+ return -WD_ENOMEM; -+ -+ /* multibuff does not use epoll. */ -+ config->epoll_en = 0; -+ memcpy(&priv->config, config, sizeof(struct wd_ctx_config_internal)); -+ -+ ret = hash_mb_queue_init(config); -+ if (ret) { -+ free(priv); -+ return ret; -+ } -+ -+ drv->priv = priv; -+ -+ return WD_SUCCESS; -+} -+ -+static void hash_mb_exit(struct wd_alg_driver *drv) -+{ -+ struct hash_mb_ctx *priv = (struct hash_mb_ctx *)drv->priv; -+ -+ if (!priv) -+ return; -+ -+ hash_mb_queue_uninit(&priv->config, priv->config.ctx_num); -+ free(priv); -+ drv->priv = NULL; -+} -+ -+static void hash_mb_pad_data(struct hash_pad *hash_pad, __u8 *in, __u32 partial, -+ __u64 total_len, bool transfer) -+{ -+ __u64 size = total_len << BYTES_TO_BITS_OFFSET; -+ __u8 *buffer = hash_pad->pad; -+ -+ if (partial) -+ memcpy(buffer, in, partial); -+ -+ buffer[partial++] = 0x80; -+ if (partial <= HASH_PADLENGTHFIELD_SIZE) { -+ memset(buffer + partial, 0, HASH_PADLENGTHFIELD_SIZE - partial); -+ if (transfer) { -+ PUTU32(buffer + HASH_PADLENGTHFIELD_SIZE, size >> HASH_HIGH_32BITS); -+ PUTU32(buffer + HASH_PADLENGTHFIELD_SIZE + sizeof(__u32), size); -+ } else { -+ memcpy(buffer + HASH_PADLENGTHFIELD_SIZE, &size, sizeof(__u64)); -+ } -+ hash_pad->pad_len = 1; -+ } else { -+ memset(buffer + partial, 0, HASH_PADDING_SIZE - partial); -+ if (transfer) { -+ PUTU32(buffer + HASH_PADDING_SIZE, size >> HASH_HIGH_32BITS); -+ PUTU32(buffer + HASH_PADDING_SIZE + sizeof(__u32), size); -+ } else { -+ memcpy(buffer + HASH_PADDING_SIZE, &size, sizeof(__u64)); -+ } -+ hash_pad->pad_len = HASH_PADDING_BLOCKS; -+ } -+} -+ -+static inline void hash_xor(__u8 *key_out, __u8 *key_in, __u32 key_len, __u8 xor_value) -+{ -+ __u32 i; -+ -+ for (i = 0; i < HASH_KEY_LEN; i++) { -+ if (i < key_len) -+ key_out[i] = key_in[i] ^ xor_value; -+ else -+ key_out[i] = xor_value; -+ } -+} -+ -+static int hash_middle_block_process(struct hash_mb_poll_queue *poll_queue, -+ struct wd_digest_msg *d_msg, -+ struct hash_job *job) -+{ -+ __u8 *buffer = d_msg->partial_block + d_msg->partial_bytes; -+ __u64 length = (__u64)d_msg->partial_bytes + d_msg->in_bytes; -+ -+ if (length < HASH_BLOCK_SIZE) { -+ memcpy(buffer, d_msg->in, d_msg->in_bytes); -+ d_msg->partial_bytes = length; -+ return -WD_EAGAIN; -+ } -+ -+ if (d_msg->partial_bytes) { -+ memcpy(buffer, d_msg->in, HASH_BLOCK_SIZE - d_msg->partial_bytes); -+ job->buffer = d_msg->partial_block; -+ poll_queue->ops->asimd_x1(job, 1); -+ length = d_msg->in_bytes - (HASH_BLOCK_SIZE - d_msg->partial_bytes); -+ buffer = d_msg->in + (HASH_BLOCK_SIZE - d_msg->partial_bytes); -+ } else { -+ buffer = d_msg->in; -+ } -+ -+ job->len = length >> HASH_BLOCK_OFFSET; -+ d_msg->partial_bytes = length & (HASH_BLOCK_SIZE - 1); -+ if (d_msg->partial_bytes) -+ memcpy(d_msg->partial_block, buffer + (job->len << HASH_BLOCK_OFFSET), -+ d_msg->partial_bytes); -+ -+ if (!job->len) { -+ memcpy(d_msg->out, job->result_digest, poll_queue->ops->iv_bytes); -+ return -WD_EAGAIN; -+ } -+ -+ job->buffer = buffer; -+ job->pad.pad_len = 0; -+ -+ return WD_SUCCESS; -+} -+ -+static void hash_signle_block_process(struct wd_digest_msg *d_msg, -+ struct hash_job *job, __u64 total_len) -+{ -+ __u32 hash_partial = d_msg->in_bytes & (HASH_BLOCK_SIZE - 1); -+ __u8 *buffer; -+ -+ job->len = d_msg->in_bytes >> HASH_BLOCK_OFFSET; -+ buffer = d_msg->in + (job->len << HASH_BLOCK_OFFSET); -+ hash_mb_pad_data(&job->pad, buffer, hash_partial, total_len, job->is_transfer); -+ if (!job->len) { -+ job->buffer = job->pad.pad; -+ job->len = job->pad.pad_len; -+ job->pad.pad_len = 0; -+ return; -+ } -+ -+ job->buffer = d_msg->in; -+} -+ -+static void hash_final_block_process(struct hash_mb_poll_queue *poll_queue, -+ struct wd_digest_msg *d_msg, -+ struct hash_job *job) -+{ -+ __u8 *buffer = d_msg->partial_block + d_msg->partial_bytes; -+ __u64 length = (__u64)d_msg->partial_bytes + d_msg->in_bytes; -+ __u32 hash_partial = length & (HASH_BLOCK_SIZE - 1); -+ __u64 total_len = d_msg->long_data_len; -+ -+ if (job->opad.opad_size) -+ total_len += HASH_BLOCK_SIZE; -+ -+ if (!d_msg->partial_bytes) { -+ hash_signle_block_process(d_msg, job, total_len); -+ return; -+ } -+ -+ if (length <= HASH_BLOCK_SIZE) { -+ memcpy(buffer, d_msg->in, d_msg->in_bytes); -+ job->len = length >> HASH_BLOCK_OFFSET; -+ buffer = d_msg->partial_block + (job->len << HASH_BLOCK_OFFSET); -+ hash_mb_pad_data(&job->pad, buffer, hash_partial, total_len, job->is_transfer); -+ if (!job->len) { -+ job->buffer = job->pad.pad; -+ job->len = job->pad.pad_len; -+ job->pad.pad_len = 0; -+ return; -+ } -+ -+ job->buffer = d_msg->partial_block; -+ return; -+ } -+ -+ memcpy(buffer, d_msg->in, (HASH_BLOCK_SIZE - d_msg->partial_bytes)); -+ job->buffer = d_msg->partial_block; -+ poll_queue->ops->asimd_x1(job, 1); -+ job->buffer = d_msg->in + (HASH_BLOCK_SIZE - d_msg->partial_bytes); -+ length = d_msg->in_bytes - (HASH_BLOCK_SIZE - d_msg->partial_bytes); -+ job->len = length >> HASH_BLOCK_OFFSET; -+ buffer = job->buffer + (job->len << HASH_BLOCK_OFFSET); -+ hash_partial = length & (HASH_BLOCK_SIZE - 1); -+ hash_mb_pad_data(&job->pad, buffer, hash_partial, total_len, job->is_transfer); -+ if (!job->len) { -+ job->buffer = job->pad.pad; -+ job->len = job->pad.pad_len; -+ job->pad.pad_len = 0; -+ } -+} -+ -+static int hash_first_block_process(struct wd_digest_msg *d_msg, -+ struct hash_job *job, -+ __u32 iv_bytes) -+{ -+ __u8 *buffer; -+ -+ job->len = d_msg->in_bytes >> HASH_BLOCK_OFFSET; -+ d_msg->partial_bytes = d_msg->in_bytes & (HASH_BLOCK_SIZE - 1); -+ if (d_msg->partial_bytes) { -+ buffer = d_msg->in + (job->len << HASH_BLOCK_OFFSET); -+ memcpy(d_msg->partial_block, buffer, d_msg->partial_bytes); -+ } -+ -+ /* -+ * Long hash mode, if first block is less than HASH_BLOCK_SIZE, -+ * copy ikey hash result to out. -+ */ -+ if (!job->len) { -+ memcpy(d_msg->out, job->result_digest, iv_bytes); -+ return -WD_EAGAIN; -+ } -+ job->buffer = d_msg->in; -+ job->pad.pad_len = 0; -+ -+ return WD_SUCCESS; -+} -+ -+static int hash_do_partial(struct hash_mb_poll_queue *poll_queue, -+ struct wd_digest_msg *d_msg, struct hash_job *job) -+{ -+ enum hash_block_type bd_type = get_hash_block_type(d_msg); -+ __u64 total_len = d_msg->in_bytes; -+ int ret = WD_SUCCESS; -+ -+ switch (bd_type) { -+ case HASH_FIRST_BLOCK: -+ ret = hash_first_block_process(d_msg, job, poll_queue->ops->iv_bytes); -+ break; -+ case HASH_MIDDLE_BLOCK: -+ ret = hash_middle_block_process(poll_queue, d_msg, job); -+ break; -+ case HASH_END_BLOCK: -+ hash_final_block_process(poll_queue, d_msg, job); -+ break; -+ case HASH_SINGLE_BLOCK: -+ if (job->opad.opad_size) -+ total_len += HASH_BLOCK_SIZE; -+ hash_signle_block_process(d_msg, job, total_len); -+ break; -+ } -+ -+ return ret; -+} -+ -+static void hash_mb_init_iv(struct hash_mb_poll_queue *poll_queue, -+ struct wd_digest_msg *d_msg, struct hash_job *job) -+{ -+ enum hash_block_type bd_type = get_hash_block_type(d_msg); -+ __u8 key_ipad[HASH_KEY_LEN]; -+ __u8 key_opad[HASH_KEY_LEN]; -+ -+ job->opad.opad_size = 0; -+ switch (bd_type) { -+ case HASH_FIRST_BLOCK: -+ memcpy(job->result_digest, poll_queue->ops->iv_data, poll_queue->ops->iv_bytes); -+ if (d_msg->mode != WD_DIGEST_HMAC) -+ return; -+ -+ hash_xor(key_ipad, d_msg->key, d_msg->key_bytes, IPAD_VALUE); -+ job->buffer = key_ipad; -+ poll_queue->ops->asimd_x1(job, 1); -+ break; -+ case HASH_MIDDLE_BLOCK: -+ memcpy(job->result_digest, d_msg->out, poll_queue->ops->iv_bytes); -+ break; -+ case HASH_END_BLOCK: -+ if (d_msg->mode != WD_DIGEST_HMAC) { -+ memcpy(job->result_digest, d_msg->out, poll_queue->ops->iv_bytes); -+ return; -+ } -+ memcpy(job->result_digest, poll_queue->ops->iv_data, poll_queue->ops->iv_bytes); -+ hash_xor(key_opad, d_msg->key, d_msg->key_bytes, OPAD_VALUE); -+ job->buffer = key_opad; -+ poll_queue->ops->asimd_x1(job, 1); -+ memcpy(job->opad.opad, job->result_digest, poll_queue->ops->iv_bytes); -+ job->opad.opad_size = poll_queue->ops->iv_bytes; -+ memcpy(job->result_digest, d_msg->out, poll_queue->ops->iv_bytes); -+ break; -+ case HASH_SINGLE_BLOCK: -+ memcpy(job->result_digest, poll_queue->ops->iv_data, poll_queue->ops->iv_bytes); -+ if (d_msg->mode != WD_DIGEST_HMAC) -+ return; -+ -+ hash_xor(key_ipad, d_msg->key, d_msg->key_bytes, IPAD_VALUE); -+ hash_xor(key_opad, d_msg->key, d_msg->key_bytes, OPAD_VALUE); -+ job->buffer = key_opad; -+ poll_queue->ops->asimd_x1(job, 1); -+ memcpy(job->opad.opad, job->result_digest, poll_queue->ops->iv_bytes); -+ job->opad.opad_size = poll_queue->ops->iv_bytes; -+ job->buffer = key_ipad; -+ memcpy(job->result_digest, poll_queue->ops->iv_data, poll_queue->ops->iv_bytes); -+ poll_queue->ops->asimd_x1(job, 1); -+ break; -+ } -+} -+ -+static void hash_do_sync(struct hash_mb_poll_queue *poll_queue, struct hash_job *job) -+{ -+ __u32 iv_bytes = poll_queue->ops->iv_bytes; -+ __u32 length; -+ -+ poll_queue->ops->asimd_x1(job, job->len); -+ -+ if (job->pad.pad_len) { -+ job->buffer = job->pad.pad; -+ poll_queue->ops->asimd_x1(job, job->pad.pad_len); -+ } -+ -+ if (job->opad.opad_size) { -+ job->buffer = job->opad.opad + job->opad.opad_size; -+ memcpy(job->buffer, job->result_digest, iv_bytes); -+ memcpy(job->result_digest, job->opad.opad, iv_bytes); -+ length = HASH_BLOCK_SIZE + iv_bytes; -+ hash_mb_pad_data(&job->pad, job->buffer, iv_bytes, length, job->is_transfer); -+ job->buffer = job->pad.pad; -+ poll_queue->ops->asimd_x1(job, job->pad.pad_len); -+ } -+} -+ -+static void hash_mb_add_job_tail(struct hash_mb_poll_queue *poll_queue, struct hash_job *job) -+{ -+ pthread_spin_lock(&poll_queue->s_lock); -+ if (poll_queue->job_num) { -+ poll_queue->tail->next = job; -+ poll_queue->tail = job; -+ } else { -+ poll_queue->head = job; -+ poll_queue->tail = job; -+ } -+ poll_queue->job_num++; -+ pthread_spin_unlock(&poll_queue->s_lock); -+} -+ -+static void hash_mb_add_job_head(struct hash_mb_poll_queue *poll_queue, struct hash_job *job) -+{ -+ pthread_spin_lock(&poll_queue->s_lock); -+ if (poll_queue->job_num) { -+ job->next = poll_queue->head; -+ poll_queue->head = job; -+ } else { -+ poll_queue->head = job; -+ poll_queue->tail = job; -+ } -+ poll_queue->job_num++; -+ pthread_spin_unlock(&poll_queue->s_lock); -+} -+ -+static int hash_mb_check_param(struct hash_mb_queue *mb_queue, struct wd_digest_msg *d_msg) -+{ -+ if (unlikely(mb_queue->ctx_mode == CTX_MODE_ASYNC && d_msg->has_next)) { -+ WD_ERR("invalid: async mode not supports long hash!\n"); -+ return -WD_EINVAL; -+ } -+ -+ if (unlikely(d_msg->data_fmt != WD_FLAT_BUF)) { -+ WD_ERR("invalid: hash multibuffer not supports sgl mode!\n"); -+ return -WD_EINVAL; -+ } -+ -+ return WD_SUCCESS; -+} -+ -+static int hash_mb_send(struct wd_alg_driver *drv, handle_t ctx, void *drv_msg) -+{ -+ struct wd_soft_ctx *s_ctx = (struct wd_soft_ctx *)ctx; -+ struct hash_mb_queue *mb_queue = s_ctx->priv; -+ struct wd_digest_msg *d_msg = drv_msg; -+ struct hash_mb_poll_queue *poll_queue; -+ struct hash_job hash_sync_job; -+ struct hash_job *hash_job; -+ int ret; -+ -+ ret = hash_mb_check_param(mb_queue, d_msg); -+ if (ret) -+ return ret; -+ -+ if (mb_queue->ctx_mode == CTX_MODE_ASYNC) { -+ hash_job = malloc(sizeof(struct hash_job)); -+ if (unlikely(!hash_job)) -+ return -WD_ENOMEM; -+ } else { -+ hash_job = &hash_sync_job; -+ } -+ -+ switch (d_msg->alg) { -+ case WD_DIGEST_SM3: -+ poll_queue = &mb_queue->sm3_poll_queue; -+ hash_job->is_transfer = true; -+ break; -+ case WD_DIGEST_MD5: -+ poll_queue = &mb_queue->md5_poll_queue; -+ hash_job->is_transfer = false; -+ break; -+ default: -+ WD_ERR("invalid: alg type %u not support!\n", d_msg->alg); -+ if (mb_queue->ctx_mode == CTX_MODE_ASYNC) -+ free(hash_job); -+ return -WD_EINVAL; -+ } -+ -+ hash_mb_init_iv(poll_queue, d_msg, hash_job); -+ /* If block not need process, return directly. */ -+ ret = hash_do_partial(poll_queue, d_msg, hash_job); -+ if (ret == -WD_EAGAIN) { -+ if (mb_queue->ctx_mode == CTX_MODE_ASYNC) -+ free(hash_job); -+ -+ d_msg->result = WD_SUCCESS; -+ return WD_SUCCESS; -+ } -+ -+ if (mb_queue->ctx_mode == CTX_MODE_SYNC) { -+ hash_do_sync(poll_queue, hash_job); -+ memcpy(d_msg->out, hash_job->result_digest, d_msg->out_bytes); -+ d_msg->result = WD_SUCCESS; -+ return WD_SUCCESS; -+ } -+ -+ hash_job->msg = d_msg; -+ hash_mb_add_job_tail(poll_queue, hash_job); -+ -+ return WD_SUCCESS; -+} -+ -+static struct hash_job *hash_mb_find_complete_job(struct hash_mb_queue *mb_queue) -+{ -+ struct hash_job *job; -+ -+ pthread_spin_lock(&mb_queue->r_lock); -+ if (!mb_queue->complete_cnt) { -+ pthread_spin_unlock(&mb_queue->r_lock); -+ return NULL; -+ } -+ -+ job = mb_queue->recv_head; -+ mb_queue->recv_head = job->next; -+ mb_queue->complete_cnt--; -+ pthread_spin_unlock(&mb_queue->r_lock); -+ -+ return job; -+} -+ -+static int hash_recv_complete_job(struct hash_mb_queue *mb_queue, struct wd_digest_msg *msg) -+{ -+ struct hash_mb_poll_queue *poll_queue; -+ struct hash_job *hash_job; -+ __u32 total_len; -+ -+ hash_job = hash_mb_find_complete_job(mb_queue); -+ if (!hash_job) -+ return -WD_EAGAIN; -+ -+ if (!hash_job->opad.opad_size) { -+ msg->tag = hash_job->msg->tag; -+ memcpy(hash_job->msg->out, hash_job->result_digest, hash_job->msg->out_bytes); -+ free(hash_job); -+ msg->result = WD_SUCCESS; -+ return WD_SUCCESS; -+ } -+ -+ if (hash_job->msg->alg == WD_DIGEST_SM3) -+ poll_queue = &mb_queue->sm3_poll_queue; -+ else -+ poll_queue = &mb_queue->md5_poll_queue; -+ hash_job->buffer = hash_job->opad.opad + poll_queue->ops->iv_bytes; -+ memcpy(hash_job->buffer, hash_job->result_digest, poll_queue->ops->iv_bytes); -+ total_len = poll_queue->ops->iv_bytes + HASH_BLOCK_SIZE; -+ hash_mb_pad_data(&hash_job->pad, hash_job->buffer, poll_queue->ops->iv_bytes, -+ total_len, hash_job->is_transfer); -+ memcpy(hash_job->result_digest, hash_job->opad.opad, poll_queue->ops->iv_bytes); -+ hash_job->opad.opad_size = 0; -+ hash_job->buffer = hash_job->pad.pad; -+ hash_job->len = hash_job->pad.pad_len; -+ hash_job->pad.pad_len = 0; -+ -+ hash_mb_add_job_head(poll_queue, hash_job); -+ -+ return -WD_EAGAIN; -+} -+ -+static struct hash_job *hash_mb_get_job(struct hash_mb_poll_queue *poll_queue) -+{ -+ struct hash_job *job; -+ -+ pthread_spin_lock(&poll_queue->s_lock); -+ if (!poll_queue->job_num) { -+ pthread_spin_unlock(&poll_queue->s_lock); -+ return NULL; -+ } -+ -+ job = poll_queue->head; -+ poll_queue->head = job->next; -+ poll_queue->job_num--; -+ pthread_spin_unlock(&poll_queue->s_lock); -+ -+ return job; -+} -+ -+static void hash_mb_add_finish_job(struct hash_mb_queue *mb_queue, struct hash_job *job) -+{ -+ pthread_spin_lock(&mb_queue->r_lock); -+ if (mb_queue->complete_cnt) { -+ mb_queue->recv_tail->next = job; -+ mb_queue->recv_tail = job; -+ } else { -+ mb_queue->recv_head = job; -+ mb_queue->recv_tail = job; -+ } -+ mb_queue->complete_cnt++; -+ pthread_spin_unlock(&mb_queue->r_lock); -+} -+ -+static struct hash_mb_poll_queue *hash_get_poll_queue(struct hash_mb_queue *mb_queue) -+{ -+ if (!mb_queue->sm3_poll_queue.job_num && -+ !mb_queue->md5_poll_queue.job_num) -+ return NULL; -+ -+ if (mb_queue->md5_poll_queue.job_num >= mb_queue->sm3_poll_queue.job_num) -+ return &mb_queue->md5_poll_queue; -+ -+ return &mb_queue->sm3_poll_queue; -+} -+ -+static int hash_mb_do_jobs(struct hash_mb_queue *mb_queue) -+{ -+ struct hash_mb_poll_queue *poll_queue = hash_get_poll_queue(mb_queue); -+ struct hash_job *job_vecs[HASH_MAX_LANES]; -+ __u64 len = 0; -+ int maxjobs; -+ int j = 0; -+ int i = 0; -+ -+ if (!poll_queue) -+ return -WD_EAGAIN; -+ -+ maxjobs = poll_queue->ops->max_lanes(); -+ maxjobs = MIN(maxjobs, poll_queue->ops->max_jobs); -+ while (j < maxjobs) { -+ job_vecs[j] = hash_mb_get_job(poll_queue); -+ if (!job_vecs[j]) -+ break; -+ -+ if (!j) -+ len = job_vecs[j]->len; -+ else -+ len = MIN(job_vecs[j]->len, len); -+ j++; -+ } -+ -+ if (!j) -+ return -WD_EAGAIN; -+ -+ if (j > HASH_NENO_PROCESS_JOBS) { -+ poll_queue->ops->sve(len, j, job_vecs); -+ } else if (j == HASH_NENO_PROCESS_JOBS) { -+ poll_queue->ops->asimd_x4(job_vecs[0], job_vecs[1], -+ job_vecs[2], job_vecs[3], len); -+ } else { -+ while (i < j) -+ poll_queue->ops->asimd_x1(job_vecs[i++], len); -+ } -+ -+ for (i = 0; i < j; i++) { -+ if (job_vecs[i]->len == len) { -+ if (!job_vecs[i]->pad.pad_len) { -+ hash_mb_add_finish_job(mb_queue, job_vecs[i]); -+ } else { -+ job_vecs[i]->buffer = job_vecs[i]->pad.pad; -+ job_vecs[i]->len = job_vecs[i]->pad.pad_len; -+ job_vecs[i]->pad.pad_len = 0; -+ hash_mb_add_job_head(poll_queue, job_vecs[i]); -+ } -+ } else { -+ job_vecs[i]->len -= len; -+ job_vecs[i]->buffer += len << HASH_BLOCK_OFFSET; -+ hash_mb_add_job_head(poll_queue, job_vecs[i]); -+ } -+ } -+ -+ return WD_SUCCESS; -+} -+ -+static int hash_mb_recv(struct wd_alg_driver *drv, handle_t ctx, void *drv_msg) -+{ -+ struct wd_soft_ctx *s_ctx = (struct wd_soft_ctx *)ctx; -+ struct hash_mb_queue *mb_queue = s_ctx->priv; -+ struct wd_digest_msg *msg = drv_msg; -+ int ret, i = 0; -+ -+ if (mb_queue->ctx_mode == CTX_MODE_SYNC) -+ return WD_SUCCESS; -+ -+ while (i++ < HASH_TRY_PROCESS_COUNT) { -+ ret = hash_recv_complete_job(mb_queue, msg); -+ if (!ret) -+ return WD_SUCCESS; -+ -+ ret = hash_mb_do_jobs(mb_queue); -+ if (ret) -+ return ret; -+ } -+ -+ return -WD_EAGAIN; -+} -+ -+static int hash_mb_get_usage(void *param) -+{ -+ return 0; -+} -+ -+#define GEN_HASH_ALG_DRIVER(hash_alg_name) \ -+{\ -+ .drv_name = "hash_mb",\ -+ .alg_name = (hash_alg_name),\ -+ .calc_type = UADK_ALG_SVE_INSTR,\ -+ .priority = 100,\ -+ .queue_num = 1,\ -+ .op_type_num = 1,\ -+ .fallback = 0,\ -+ .init = hash_mb_init,\ -+ .exit = hash_mb_exit,\ -+ .send = hash_mb_send,\ -+ .recv = hash_mb_recv,\ -+ .get_usage = hash_mb_get_usage,\ -+} -+ -+static struct wd_alg_driver hash_mb_driver[] = { -+ GEN_HASH_ALG_DRIVER("sm3"), -+ GEN_HASH_ALG_DRIVER("md5"), -+}; -+ -+static void __attribute__((constructor)) hash_mb_probe(void) -+{ -+ size_t alg_num = ARRAY_SIZE(hash_mb_driver); -+ size_t i; -+ int ret; -+ -+ WD_INFO("Info: register hash_mb alg drivers!\n"); -+ for (i = 0; i < alg_num; i++) { -+ ret = wd_alg_driver_register(&hash_mb_driver[i]); -+ if (ret && ret != -WD_ENODEV) -+ WD_ERR("Error: register hash multibuff %s failed!\n", -+ hash_mb_driver[i].alg_name); -+ } -+} -+ -+static void __attribute__((destructor)) hash_mb_remove(void) -+{ -+ size_t alg_num = ARRAY_SIZE(hash_mb_driver); -+ size_t i; -+ -+ WD_INFO("Info: unregister hash_mb alg drivers!\n"); -+ for (i = 0; i < alg_num; i++) -+ wd_alg_driver_unregister(&hash_mb_driver[i]); -+} -+ -diff --git a/drv/hash_mb/hash_mb.h b/drv/hash_mb/hash_mb.h -new file mode 100644 -index 0000000..aba5ec9 ---- /dev/null -+++ b/drv/hash_mb/hash_mb.h -@@ -0,0 +1,62 @@ -+/* SPDX-License-Identifier: Apache-2.0 */ -+/* Copyright 2024 Huawei Technologies Co.,Ltd. All rights reserved. */ -+ -+#ifndef __HASH_MB_H -+#define __HASH_MB_H -+ -+#include -+#include -+#include "drv/wd_digest_drv.h" -+#include "wd_digest.h" -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+#define HASH_BLOCK_SIZE 64 -+#define HASH_DIGEST_NWORDS 32 -+ -+#if __STDC_VERSION__ >= 201112L -+# define __ALIGN_END __attribute__((aligned(64))) -+#else -+# define __ALIGN_END __aligned(64) -+#endif -+ -+struct hash_pad { -+ __u8 pad[HASH_BLOCK_SIZE * 2]; -+ __u32 pad_len; -+}; -+ -+struct hash_opad { -+ __u8 opad[HASH_BLOCK_SIZE]; -+ __u32 opad_size; -+}; -+ -+struct hash_job { -+ void *buffer; -+ __u64 len; -+ __u8 result_digest[HASH_DIGEST_NWORDS] __ALIGN_END; -+ struct hash_pad pad; -+ struct hash_opad opad; -+ struct hash_job *next; -+ struct wd_digest_msg *msg; -+ bool is_transfer; -+}; -+ -+void sm3_mb_sve(int blocks, int total_lanes, struct hash_job **job_vec); -+void sm3_mb_asimd_x4(struct hash_job *job1, struct hash_job *job2, -+ struct hash_job *job3, struct hash_job *job4, int len); -+void sm3_mb_asimd_x1(struct hash_job *job, int len); -+int sm3_mb_sve_max_lanes(void); -+void md5_mb_sve(int blocks, int total_lanes, struct hash_job **job_vec); -+void md5_mb_asimd_x4(struct hash_job *job1, struct hash_job *job2, -+ struct hash_job *job3, struct hash_job *job4, int len); -+void md5_mb_asimd_x1(struct hash_job *job, int len); -+int md5_mb_sve_max_lanes(void); -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif /* __HASH_MB_H */ -+ -diff --git a/drv/hash_mb/md5_mb_asimd_x1.S b/drv/hash_mb/md5_mb_asimd_x1.S -new file mode 100644 -index 0000000..27d1124 ---- /dev/null -+++ b/drv/hash_mb/md5_mb_asimd_x1.S -@@ -0,0 +1,248 @@ -+/********************************************************************** -+ Copyright(c) 2020 Arm Corporation All rights reserved. -+ -+ Redistribution and use in source and binary forms, with or without -+ modification, are permitted provided that the following conditions -+ are met: -+ * Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ * Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in -+ the documentation and/or other materials provided with the -+ distribution. -+ * Neither the name of Arm Corporation nor the names of its -+ contributors may be used to endorse or promote products derived -+ from this software without specific prior written permission. -+ -+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+**********************************************************************/ -+ .arch armv8-a -+ -+/* -+Macros -+*/ -+ -+.macro declare_var_vector_reg name:req,reg:req -+ q_\name .req q\reg -+ v_\name .req v\reg -+ s_\name .req s\reg -+.endm -+ -+ -+.macro round_0_15 d_a:req,d_b:req,d_c:req,d_d:req,kh:req,kl:req,w:req,r:req -+ eor tmp0,\d_c,\d_d -+ mov k,\kl -+ and tmp0,tmp0,\d_b -+ movk k,\kh,lsl 16 -+ eor tmp0,tmp0,\d_d -+ add tmp1,k,\w -+ add tmp0,tmp1,tmp0 -+ add tmp0,\d_a,tmp0 -+ ror tmp0,tmp0,32 - \r -+ add \d_a,\d_b,tmp0 -+.endm -+ -+.macro round_16_31 d_a:req,d_b:req,d_c:req,d_d:req,kh:req,kl:req,w:req,r:req -+ eor tmp0,\d_b,\d_c -+ mov k,\kl -+ and tmp0,tmp0,\d_d -+ movk k,\kh,lsl 16 -+ eor tmp0,tmp0,\d_c -+ add tmp1,k,\w -+ add tmp0,tmp1,tmp0 -+ add tmp0,\d_a,tmp0 -+ ror tmp0,tmp0,32 - \r -+ add \d_a,\d_b,tmp0 -+.endm -+ -+.macro round_32_47 d_a:req,d_b:req,d_c:req,d_d:req,kh:req,kl:req,w:req,r:req -+ eor tmp0,\d_b,\d_c -+ mov k,\kl -+ eor tmp0,tmp0,\d_d -+ movk k,\kh,lsl 16 -+ add tmp1,k,\w -+ add tmp0,tmp1,tmp0 -+ add tmp0,\d_a,tmp0 -+ ror tmp0,tmp0,32 - \r -+ add \d_a,\d_b,tmp0 -+.endm -+ -+.macro round_48_63 d_a:req,d_b:req,d_c:req,d_d:req,kh:req,kl:req,w:req,r:req -+ orn tmp0,\d_b,\d_d -+ mov k,\kl -+ eor tmp0,tmp0,\d_c -+ movk k,\kh,lsl 16 -+ add tmp1,k,\w -+ add tmp0,tmp1,tmp0 -+ add tmp0,\d_a,tmp0 -+ ror tmp0,tmp0,32 - \r -+ add \d_a,\d_b,tmp0 -+.endm -+/* -+ variables -+*/ -+ job0 .req x0 -+ digest_addr .req x0 -+ len .req w1 -+ end .req x1 -+ -+ buf_adr .req x2 -+ d_a .req w3 -+ d_b .req w4 -+ d_c .req w5 -+ d_d .req w6 -+ k .req w7 -+ m0 .req w8 -+ m1 .req w9 -+ m2 .req w10 -+ m3 .req w11 -+ m4 .req w12 -+ m5 .req w13 -+ m6 .req w14 -+ m7 .req w15 -+ m8 .req w19 -+ m9 .req w20 -+ m10 .req w21 -+ m11 .req w22 -+ m12 .req w23 -+ m13 .req w24 -+ m14 .req w25 -+ m15 .req w26 -+ -+ tmp0 .req w27 -+ tmp1 .req w28 -+ -+ d_a1 .req w8 -+ d_b1 .req w9 -+ d_c1 .req w15 -+ d_d1 .req w19 -+ -+/* -+ void md5_mb_asimd_x1(MD5_JOB * job0,int len) -+*/ -+ .global md5_mb_asimd_x1 -+ .type md5_mb_asimd_x1, %function -+md5_mb_asimd_x1: -+ cmp len,0 -+ stp x29, x30, [sp,-96]! -+ ldr buf_adr,[job0],64 -+ stp x19, x20, [sp, 16] -+ add end,buf_adr,end,lsl 6 -+ stp x21, x22, [sp, 32] -+ ldp d_a,d_b,[digest_addr] -+ stp x23, x24, [sp, 48] -+ ldp d_c,d_d,[digest_addr,8] -+ stp x25, x26, [sp, 64] -+ stp x27, x28, [sp, 80] -+ ble .exit -+ -+.loop_start: -+ ldp m0,m1,[buf_adr],8 -+ ldp m2,m3,[buf_adr],8 -+ round_0_15 d_a,d_b,d_c,d_d,0xd76a,0xa478,m0,7 -+ -+ ldp m4,m5,[buf_adr],8 -+ round_0_15 d_d,d_a,d_b,d_c,0xe8c7,0xb756,m1,12 -+ ldp m6,m7,[buf_adr],8 -+ round_0_15 d_c,d_d,d_a,d_b,0x2420,0x70db,m2,17 -+ ldp m8,m9,[buf_adr],8 -+ round_0_15 d_b,d_c,d_d,d_a,0xc1bd,0xceee,m3,22 -+ ldp m10,m11,[buf_adr],8 -+ round_0_15 d_a,d_b,d_c,d_d,0xf57c,0xfaf,m4,7 -+ ldp m12,m13,[buf_adr],8 -+ round_0_15 d_d,d_a,d_b,d_c,0x4787,0xc62a,m5,12 -+ ldp m14,m15,[buf_adr],8 -+ round_0_15 d_c,d_d,d_a,d_b,0xa830,0x4613,m6,17 -+ round_0_15 d_b,d_c,d_d,d_a,0xfd46,0x9501,m7,22 -+ round_0_15 d_a,d_b,d_c,d_d,0x6980,0x98d8,m8,7 -+ round_0_15 d_d,d_a,d_b,d_c,0x8b44,0xf7af,m9,12 -+ round_0_15 d_c,d_d,d_a,d_b,0xffff,0x5bb1,m10,17 -+ round_0_15 d_b,d_c,d_d,d_a,0x895c,0xd7be,m11,22 -+ round_0_15 d_a,d_b,d_c,d_d,0x6b90,0x1122,m12,7 -+ round_0_15 d_d,d_a,d_b,d_c,0xfd98,0x7193,m13,12 -+ round_0_15 d_c,d_d,d_a,d_b,0xa679,0x438e,m14,17 -+ round_0_15 d_b,d_c,d_d,d_a,0x49b4,0x821,m15,22 -+ -+ round_16_31 d_a,d_b,d_c,d_d,0xf61e,0x2562,m1,5 -+ round_16_31 d_d,d_a,d_b,d_c,0xc040,0xb340,m6,9 -+ round_16_31 d_c,d_d,d_a,d_b,0x265e,0x5a51,m11,14 -+ round_16_31 d_b,d_c,d_d,d_a,0xe9b6,0xc7aa,m0,20 -+ round_16_31 d_a,d_b,d_c,d_d,0xd62f,0x105d,m5,5 -+ round_16_31 d_d,d_a,d_b,d_c,0x244,0x1453,m10,9 -+ round_16_31 d_c,d_d,d_a,d_b,0xd8a1,0xe681,m15,14 -+ round_16_31 d_b,d_c,d_d,d_a,0xe7d3,0xfbc8,m4,20 -+ round_16_31 d_a,d_b,d_c,d_d,0x21e1,0xcde6,m9,5 -+ round_16_31 d_d,d_a,d_b,d_c,0xc337,0x7d6,m14,9 -+ round_16_31 d_c,d_d,d_a,d_b,0xf4d5,0xd87,m3,14 -+ round_16_31 d_b,d_c,d_d,d_a,0x455a,0x14ed,m8,20 -+ round_16_31 d_a,d_b,d_c,d_d,0xa9e3,0xe905,m13,5 -+ round_16_31 d_d,d_a,d_b,d_c,0xfcef,0xa3f8,m2,9 -+ round_16_31 d_c,d_d,d_a,d_b,0x676f,0x2d9,m7,14 -+ round_16_31 d_b,d_c,d_d,d_a,0x8d2a,0x4c8a,m12,20 -+ -+ round_32_47 d_a,d_b,d_c,d_d,0xfffa,0x3942,m5,4 -+ round_32_47 d_d,d_a,d_b,d_c,0x8771,0xf681,m8,11 -+ round_32_47 d_c,d_d,d_a,d_b,0x6d9d,0x6122,m11,16 -+ round_32_47 d_b,d_c,d_d,d_a,0xfde5,0x380c,m14,23 -+ round_32_47 d_a,d_b,d_c,d_d,0xa4be,0xea44,m1,4 -+ round_32_47 d_d,d_a,d_b,d_c,0x4bde,0xcfa9,m4,11 -+ round_32_47 d_c,d_d,d_a,d_b,0xf6bb,0x4b60,m7,16 -+ round_32_47 d_b,d_c,d_d,d_a,0xbebf,0xbc70,m10,23 -+ round_32_47 d_a,d_b,d_c,d_d,0x289b,0x7ec6,m13,4 -+ round_32_47 d_d,d_a,d_b,d_c,0xeaa1,0x27fa,m0,11 -+ round_32_47 d_c,d_d,d_a,d_b,0xd4ef,0x3085,m3,16 -+ round_32_47 d_b,d_c,d_d,d_a,0x488,0x1d05,m6,23 -+ round_32_47 d_a,d_b,d_c,d_d,0xd9d4,0xd039,m9,4 -+ round_32_47 d_d,d_a,d_b,d_c,0xe6db,0x99e5,m12,11 -+ round_32_47 d_c,d_d,d_a,d_b,0x1fa2,0x7cf8,m15,16 -+ round_32_47 d_b,d_c,d_d,d_a,0xc4ac,0x5665,m2,23 -+ -+ round_48_63 d_a,d_b,d_c,d_d,0xf429,0x2244,m0,6 -+ round_48_63 d_d,d_a,d_b,d_c,0x432a,0xff97,m7,10 -+ round_48_63 d_c,d_d,d_a,d_b,0xab94,0x23a7,m14,15 -+ round_48_63 d_b,d_c,d_d,d_a,0xfc93,0xa039,m5,21 -+ round_48_63 d_a,d_b,d_c,d_d,0x655b,0x59c3,m12,6 -+ round_48_63 d_d,d_a,d_b,d_c,0x8f0c,0xcc92,m3,10 -+ round_48_63 d_c,d_d,d_a,d_b,0xffef,0xf47d,m10,15 -+ round_48_63 d_b,d_c,d_d,d_a,0x8584,0x5dd1,m1,21 -+ round_48_63 d_a,d_b,d_c,d_d,0x6fa8,0x7e4f,m8,6 -+ round_48_63 d_d,d_a,d_b,d_c,0xfe2c,0xe6e0,m15,10 -+ round_48_63 d_c,d_d,d_a,d_b,0xa301,0x4314,m6,15 -+ round_48_63 d_b,d_c,d_d,d_a,0x4e08,0x11a1,m13,21 -+ round_48_63 d_a,d_b,d_c,d_d,0xf753,0x7e82,m4,6 -+ ldp d_a1,d_b1,[digest_addr] -+ round_48_63 d_d,d_a,d_b,d_c,0xbd3a,0xf235,m11,10 -+ ldp d_c1,d_d1,[digest_addr,8] -+ round_48_63 d_c,d_d,d_a,d_b,0x2ad7,0xd2bb,m2,15 -+ round_48_63 d_b,d_c,d_d,d_a,0xeb86,0xd391,m9,21 -+ -+ cmp buf_adr,end -+ add d_a,d_a1 ,d_a -+ str d_a,[digest_addr] -+ add d_b,d_b1 ,d_b -+ str d_b,[digest_addr,4] -+ add d_c,d_c1 ,d_c -+ str d_c,[digest_addr,8] -+ add d_d,d_d1 ,d_d -+ str d_d,[digest_addr,12] -+ bne .loop_start -+ -+.exit: -+ ldp x19, x20, [sp, 16] -+ ldp x21, x22, [sp, 32] -+ ldp x23, x24, [sp, 48] -+ ldp x25, x26, [sp, 64] -+ ldp x27, x28, [sp, 80] -+ ldp x29, x30, [sp], 96 -+ ret -+ .size md5_mb_asimd_x1, .-md5_mb_asimd_x1 -diff --git a/drv/hash_mb/md5_mb_asimd_x4.S b/drv/hash_mb/md5_mb_asimd_x4.S -new file mode 100644 -index 0000000..5397913 ---- /dev/null -+++ b/drv/hash_mb/md5_mb_asimd_x4.S -@@ -0,0 +1,526 @@ -+/********************************************************************** -+ Copyright(c) 2020 Arm Corporation All rights reserved. -+ -+ Redistribution and use in source and binary forms, with or without -+ modification, are permitted provided that the following conditions -+ are met: -+ * Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ * Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in -+ the documentation and/or other materials provided with the -+ distribution. -+ * Neither the name of Arm Corporation nor the names of its -+ contributors may be used to endorse or promote products derived -+ from this software without specific prior written permission. -+ -+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+**********************************************************************/ -+ .arch armv8-a -+ -+/* -+Macros -+*/ -+ -+.macro declare_var_vector_reg name:req,reg:req -+ q_\name .req q\reg -+ v_\name .req v\reg -+ s_\name .req s\reg -+.endm -+ -+.macro add_key_rol a:req,b:req,k:req,w:req,r:req -+ add v_tmp0.4s,v_\k\().4s,v_\w\().4s -+ add v_tmp1.4s,v_tmp1.4s,v_\a\().4s -+ add v_tmp1.4s,v_tmp1.4s,v_tmp0.4s -+ shl v_tmp0.4s,v_tmp1.4s,\r -+ ushr v_tmp1.4s,v_tmp1.4s,32-\r -+ orr v_tmp0.16b,v_tmp1.16b,v_tmp0.16b -+ -+ add v_\a\().4s,v_\b\().4s,v_tmp0.4s -+.endm -+.macro round_0_15 a:req,b:req,c:req,d:req,k:req,k1:req,w:req,r:req -+ mov v_tmp1.16b, v_\b\().16b -+ bsl v_tmp1.16b, v_\c\().16b, v_\d\().16b -+ ldr q_\k1,[key_adr],16 -+ add_key_rol \a,\b,\k,\w,\r -+.endm -+ -+.macro round_16_31 a:req,b:req,c:req,d:req,k:req,k1:req,w:req,r:req -+ mov v_tmp1.16b, v_\d\().16b -+ bsl v_tmp1.16b, v_\b\().16b, v_\c\().16b -+ ldr q_\k1,[key_adr],16 -+ add_key_rol \a,\b,\k,\w,\r -+.endm -+ -+.macro round_32_47 a:req,b:req,c:req,d:req,k:req,k1:req,w:req,r:req -+ eor v_tmp1.16b,v_\b\().16b,v_\c\().16b -+ eor v_tmp1.16b,v_tmp1.16b,v_\d\().16b -+ ldr q_\k1,[key_adr],16 -+ add_key_rol \a,\b,\k,\w,\r -+.endm -+ -+.macro round_48_63 a:req,b:req,c:req,d:req,k:req,k1,w:req,r:req -+ orn v_tmp1.16b,v_\b\().16b,v_\d\().16b -+ eor v_tmp1.16b,v_tmp1.16b,v_\c\().16b -+ .ifnb \k1 -+ ldr q_\k1,[key_adr],16 -+ .endif -+ add_key_rol \a,\b,\k,\w,\r -+.endm -+/* -+ variables -+*/ -+ declare_var_vector_reg tmp0, 0 -+ declare_var_vector_reg tmp1, 1 -+ declare_var_vector_reg k, 2 -+ declare_var_vector_reg k1, 3 -+ declare_var_vector_reg a, 4 -+ declare_var_vector_reg b, 5 -+ declare_var_vector_reg c, 6 -+ declare_var_vector_reg d, 7 -+ declare_var_vector_reg a1, 8 -+ declare_var_vector_reg b1, 9 -+ declare_var_vector_reg c1, 10 -+ declare_var_vector_reg d1, 11 -+ -+ declare_var_vector_reg w0, 16 -+ declare_var_vector_reg w1, 17 -+ declare_var_vector_reg w2, 18 -+ declare_var_vector_reg w3, 19 -+ declare_var_vector_reg w4, 20 -+ declare_var_vector_reg w5, 21 -+ declare_var_vector_reg w6, 22 -+ declare_var_vector_reg w7, 23 -+ declare_var_vector_reg w8, 24 -+ declare_var_vector_reg w9, 25 -+ declare_var_vector_reg w10, 26 -+ declare_var_vector_reg w11, 27 -+ declare_var_vector_reg w12, 28 -+ declare_var_vector_reg w13, 29 -+ declare_var_vector_reg w14, 30 -+ declare_var_vector_reg w15, 31 -+ -+ len .req w4 -+ len_x .req x4 -+ lane0 .req x5 -+ lane1 .req x6 -+ lane2 .req x7 -+ lane3 .req x9 -+ end .req x4 -+ job0 .req x0 -+ job1 .req x1 -+ job2 .req x2 -+ job3 .req x3 -+ key_adr .req x10 -+ -+/* -+ void md5_mb_asimd_x4(MD5_JOB * job0, MD5_JOB * job1, -+ MD5_JOB * job2, MD5_JOB * job3, int len) -+*/ -+ .global md5_mb_asimd_x4 -+ .type md5_mb_asimd_x4, %function -+md5_mb_asimd_x4: -+ stp x29,x30,[sp,-48]! -+ ldr lane0,[job0],64 -+ stp d8,d9,[sp,16] -+ ldr lane1,[job1],64 -+ stp d10,d11,[sp,32] -+ ldr lane2,[job2],64 -+ cmp len,0 -+ ldr lane3,[job3],64 -+ ble .exit -+ -+ //load digests -+ ld4 {v_a.s-v_d.s}[0],[job0] -+ add end,lane0,len_x,lsl 6 -+ ld4 {v_a.s-v_d.s}[1],[job1] -+ ld4 {v_a.s-v_d.s}[2],[job2] -+ ld4 {v_a.s-v_d.s}[3],[job3] -+.loop_start: -+ ld1 {v_w0.s}[0],[lane0],4 -+ mov v_a1.16b,v_a.16b -+ ld1 {v_w0.s}[1],[lane1],4 -+ mov v_b1.16b,v_b.16b -+ ld1 {v_w0.s}[2],[lane2],4 -+ mov v_c1.16b,v_c.16b -+ ld1 {v_w0.s}[3],[lane3],4 -+ mov v_d1.16b,v_d.16b -+ -+ ld3 {v_w1.s-v_w3.s}[0],[lane0],12 -+ adrp key_adr,.key_consts -+ ld3 {v_w1.s-v_w3.s}[1],[lane1],12 -+ add key_adr,key_adr,#:lo12:.key_consts -+ ld3 {v_w1.s-v_w3.s}[2],[lane2],12 -+ ldr q_k,[key_adr],16 -+ ld3 {v_w1.s-v_w3.s}[3],[lane3],12 -+ -+ -+ ld4 {v_w4.s-v_w7.s}[0], [lane0],16 -+ -+ round_0_15 a,b,c,d,k,k1,w0,7 -+ -+ ld4 {v_w4.s-v_w7.s}[1], [lane1],16 -+ round_0_15 d,a,b,c,k1,k,w1,12 -+ ld4 {v_w4.s-v_w7.s}[2], [lane2],16 -+ round_0_15 c,d,a,b,k,k1,w2,17 -+ ld4 {v_w4.s-v_w7.s}[3], [lane3],16 -+ round_0_15 b,c,d,a,k1,k,w3,22 -+ ld4 {v_w8.s-v_w11.s}[0],[lane0],16 -+ round_0_15 a,b,c,d,k,k1,w4,7 -+ ld4 {v_w8.s-v_w11.s}[1],[lane1],16 -+ round_0_15 d,a,b,c,k1,k,w5,12 -+ ld4 {v_w8.s-v_w11.s}[2],[lane2],16 -+ round_0_15 c,d,a,b,k,k1,w6,17 -+ ld4 {v_w8.s-v_w11.s}[3],[lane3],16 -+ round_0_15 b,c,d,a,k1,k,w7,22 -+ ld4 {v_w12.s-v_w15.s}[0],[lane0],16 -+ round_0_15 a,b,c,d,k,k1,w8,7 -+ ld4 {v_w12.s-v_w15.s}[1],[lane1],16 -+ round_0_15 d,a,b,c,k1,k,w9,12 -+ ld4 {v_w12.s-v_w15.s}[2],[lane2],16 -+ round_0_15 c,d,a,b,k,k1,w10,17 -+ ld4 {v_w12.s-v_w15.s}[3],[lane3],16 -+ round_0_15 b,c,d,a,k1,k,w11,22 -+ round_0_15 a,b,c,d,k,k1,w12,7 -+ round_0_15 d,a,b,c,k1,k,w13,12 -+ round_0_15 c,d,a,b,k,k1,w14,17 -+ round_0_15 b,c,d,a,k1,k,w15,22 -+ -+ round_16_31 a,b,c,d,k,k1,w1,5 -+ round_16_31 d,a,b,c,k1,k,w6,9 -+ round_16_31 c,d,a,b,k,k1,w11,14 -+ round_16_31 b,c,d,a,k1,k,w0,20 -+ round_16_31 a,b,c,d,k,k1,w5,5 -+ round_16_31 d,a,b,c,k1,k,w10,9 -+ round_16_31 c,d,a,b,k,k1,w15,14 -+ round_16_31 b,c,d,a,k1,k,w4,20 -+ round_16_31 a,b,c,d,k,k1,w9,5 -+ round_16_31 d,a,b,c,k1,k,w14,9 -+ round_16_31 c,d,a,b,k,k1,w3,14 -+ round_16_31 b,c,d,a,k1,k,w8,20 -+ round_16_31 a,b,c,d,k,k1,w13,5 -+ round_16_31 d,a,b,c,k1,k,w2,9 -+ round_16_31 c,d,a,b,k,k1,w7,14 -+ round_16_31 b,c,d,a,k1,k,w12,20 -+ -+ round_32_47 a,b,c,d,k,k1,w5,4 -+ round_32_47 d,a,b,c,k1,k,w8,11 -+ round_32_47 c,d,a,b,k,k1,w11,16 -+ round_32_47 b,c,d,a,k1,k,w14,23 -+ round_32_47 a,b,c,d,k,k1,w1,4 -+ round_32_47 d,a,b,c,k1,k,w4,11 -+ round_32_47 c,d,a,b,k,k1,w7,16 -+ round_32_47 b,c,d,a,k1,k,w10,23 -+ round_32_47 a,b,c,d,k,k1,w13,4 -+ round_32_47 d,a,b,c,k1,k,w0,11 -+ round_32_47 c,d,a,b,k,k1,w3,16 -+ round_32_47 b,c,d,a,k1,k,w6,23 -+ round_32_47 a,b,c,d,k,k1,w9,4 -+ round_32_47 d,a,b,c,k1,k,w12,11 -+ round_32_47 c,d,a,b,k,k1,w15,16 -+ round_32_47 b,c,d,a,k1,k,w2,23 -+ -+ round_48_63 a,b,c,d,k,k1,w0,6 -+ round_48_63 d,a,b,c,k1,k,w7,10 -+ round_48_63 c,d,a,b,k,k1,w14,15 -+ round_48_63 b,c,d,a,k1,k,w5,21 -+ round_48_63 a,b,c,d,k,k1,w12,6 -+ round_48_63 d,a,b,c,k1,k,w3,10 -+ round_48_63 c,d,a,b,k,k1,w10,15 -+ round_48_63 b,c,d,a,k1,k,w1,21 -+ round_48_63 a,b,c,d,k,k1,w8,6 -+ round_48_63 d,a,b,c,k1,k,w15,10 -+ round_48_63 c,d,a,b,k,k1,w6,15 -+ round_48_63 b,c,d,a,k1,k,w13,21 -+ round_48_63 a,b,c,d,k,k1,w4,6 -+ round_48_63 d,a,b,c,k1,k,w11,10 -+ round_48_63 c,d,a,b,k,k1,w2,15 -+ round_48_63 b,c,d,a,k1, ,w9,21 -+ -+ -+ -+ -+ cmp lane0,end -+ add v_a.4s,v_a1.4s,v_a.4s -+ add v_b.4s,v_b1.4s,v_b.4s -+ add v_c.4s,v_c1.4s,v_c.4s -+ add v_d.4s,v_d1.4s,v_d.4s -+ bne .loop_start -+ -+ st4 {v_a.s-v_d.s}[0],[job0] -+ st4 {v_a.s-v_d.s}[1],[job1] -+ st4 {v_a.s-v_d.s}[2],[job2] -+ st4 {v_a.s-v_d.s}[3],[job3] -+.exit: -+ ldp d8,d9,[sp,16] -+ ldp d10,d11,[sp,32] -+ ldp x29,x30,[sp],48 -+ ret -+.key_consts: -+ .word 0xd76aa478 -+ .word 0xd76aa478 -+ .word 0xd76aa478 -+ .word 0xd76aa478 -+ .word 0xe8c7b756 -+ .word 0xe8c7b756 -+ .word 0xe8c7b756 -+ .word 0xe8c7b756 -+ .word 0x242070db -+ .word 0x242070db -+ .word 0x242070db -+ .word 0x242070db -+ .word 0xc1bdceee -+ .word 0xc1bdceee -+ .word 0xc1bdceee -+ .word 0xc1bdceee -+ .word 0xf57c0faf -+ .word 0xf57c0faf -+ .word 0xf57c0faf -+ .word 0xf57c0faf -+ .word 0x4787c62a -+ .word 0x4787c62a -+ .word 0x4787c62a -+ .word 0x4787c62a -+ .word 0xa8304613 -+ .word 0xa8304613 -+ .word 0xa8304613 -+ .word 0xa8304613 -+ .word 0xfd469501 -+ .word 0xfd469501 -+ .word 0xfd469501 -+ .word 0xfd469501 -+ .word 0x698098d8 -+ .word 0x698098d8 -+ .word 0x698098d8 -+ .word 0x698098d8 -+ .word 0x8b44f7af -+ .word 0x8b44f7af -+ .word 0x8b44f7af -+ .word 0x8b44f7af -+ .word 0xffff5bb1 -+ .word 0xffff5bb1 -+ .word 0xffff5bb1 -+ .word 0xffff5bb1 -+ .word 0x895cd7be -+ .word 0x895cd7be -+ .word 0x895cd7be -+ .word 0x895cd7be -+ .word 0x6b901122 -+ .word 0x6b901122 -+ .word 0x6b901122 -+ .word 0x6b901122 -+ .word 0xfd987193 -+ .word 0xfd987193 -+ .word 0xfd987193 -+ .word 0xfd987193 -+ .word 0xa679438e -+ .word 0xa679438e -+ .word 0xa679438e -+ .word 0xa679438e -+ .word 0x49b40821 -+ .word 0x49b40821 -+ .word 0x49b40821 -+ .word 0x49b40821 -+ .word 0xf61e2562 -+ .word 0xf61e2562 -+ .word 0xf61e2562 -+ .word 0xf61e2562 -+ .word 0xc040b340 -+ .word 0xc040b340 -+ .word 0xc040b340 -+ .word 0xc040b340 -+ .word 0x265e5a51 -+ .word 0x265e5a51 -+ .word 0x265e5a51 -+ .word 0x265e5a51 -+ .word 0xe9b6c7aa -+ .word 0xe9b6c7aa -+ .word 0xe9b6c7aa -+ .word 0xe9b6c7aa -+ .word 0xd62f105d -+ .word 0xd62f105d -+ .word 0xd62f105d -+ .word 0xd62f105d -+ .word 0x02441453 -+ .word 0x02441453 -+ .word 0x02441453 -+ .word 0x02441453 -+ .word 0xd8a1e681 -+ .word 0xd8a1e681 -+ .word 0xd8a1e681 -+ .word 0xd8a1e681 -+ .word 0xe7d3fbc8 -+ .word 0xe7d3fbc8 -+ .word 0xe7d3fbc8 -+ .word 0xe7d3fbc8 -+ .word 0x21e1cde6 -+ .word 0x21e1cde6 -+ .word 0x21e1cde6 -+ .word 0x21e1cde6 -+ .word 0xc33707d6 -+ .word 0xc33707d6 -+ .word 0xc33707d6 -+ .word 0xc33707d6 -+ .word 0xf4d50d87 -+ .word 0xf4d50d87 -+ .word 0xf4d50d87 -+ .word 0xf4d50d87 -+ .word 0x455a14ed -+ .word 0x455a14ed -+ .word 0x455a14ed -+ .word 0x455a14ed -+ .word 0xa9e3e905 -+ .word 0xa9e3e905 -+ .word 0xa9e3e905 -+ .word 0xa9e3e905 -+ .word 0xfcefa3f8 -+ .word 0xfcefa3f8 -+ .word 0xfcefa3f8 -+ .word 0xfcefa3f8 -+ .word 0x676f02d9 -+ .word 0x676f02d9 -+ .word 0x676f02d9 -+ .word 0x676f02d9 -+ .word 0x8d2a4c8a -+ .word 0x8d2a4c8a -+ .word 0x8d2a4c8a -+ .word 0x8d2a4c8a -+ .word 0xfffa3942 -+ .word 0xfffa3942 -+ .word 0xfffa3942 -+ .word 0xfffa3942 -+ .word 0x8771f681 -+ .word 0x8771f681 -+ .word 0x8771f681 -+ .word 0x8771f681 -+ .word 0x6d9d6122 -+ .word 0x6d9d6122 -+ .word 0x6d9d6122 -+ .word 0x6d9d6122 -+ .word 0xfde5380c -+ .word 0xfde5380c -+ .word 0xfde5380c -+ .word 0xfde5380c -+ .word 0xa4beea44 -+ .word 0xa4beea44 -+ .word 0xa4beea44 -+ .word 0xa4beea44 -+ .word 0x4bdecfa9 -+ .word 0x4bdecfa9 -+ .word 0x4bdecfa9 -+ .word 0x4bdecfa9 -+ .word 0xf6bb4b60 -+ .word 0xf6bb4b60 -+ .word 0xf6bb4b60 -+ .word 0xf6bb4b60 -+ .word 0xbebfbc70 -+ .word 0xbebfbc70 -+ .word 0xbebfbc70 -+ .word 0xbebfbc70 -+ .word 0x289b7ec6 -+ .word 0x289b7ec6 -+ .word 0x289b7ec6 -+ .word 0x289b7ec6 -+ .word 0xeaa127fa -+ .word 0xeaa127fa -+ .word 0xeaa127fa -+ .word 0xeaa127fa -+ .word 0xd4ef3085 -+ .word 0xd4ef3085 -+ .word 0xd4ef3085 -+ .word 0xd4ef3085 -+ .word 0x04881d05 -+ .word 0x04881d05 -+ .word 0x04881d05 -+ .word 0x04881d05 -+ .word 0xd9d4d039 -+ .word 0xd9d4d039 -+ .word 0xd9d4d039 -+ .word 0xd9d4d039 -+ .word 0xe6db99e5 -+ .word 0xe6db99e5 -+ .word 0xe6db99e5 -+ .word 0xe6db99e5 -+ .word 0x1fa27cf8 -+ .word 0x1fa27cf8 -+ .word 0x1fa27cf8 -+ .word 0x1fa27cf8 -+ .word 0xc4ac5665 -+ .word 0xc4ac5665 -+ .word 0xc4ac5665 -+ .word 0xc4ac5665 -+ .word 0xf4292244 -+ .word 0xf4292244 -+ .word 0xf4292244 -+ .word 0xf4292244 -+ .word 0x432aff97 -+ .word 0x432aff97 -+ .word 0x432aff97 -+ .word 0x432aff97 -+ .word 0xab9423a7 -+ .word 0xab9423a7 -+ .word 0xab9423a7 -+ .word 0xab9423a7 -+ .word 0xfc93a039 -+ .word 0xfc93a039 -+ .word 0xfc93a039 -+ .word 0xfc93a039 -+ .word 0x655b59c3 -+ .word 0x655b59c3 -+ .word 0x655b59c3 -+ .word 0x655b59c3 -+ .word 0x8f0ccc92 -+ .word 0x8f0ccc92 -+ .word 0x8f0ccc92 -+ .word 0x8f0ccc92 -+ .word 0xffeff47d -+ .word 0xffeff47d -+ .word 0xffeff47d -+ .word 0xffeff47d -+ .word 0x85845dd1 -+ .word 0x85845dd1 -+ .word 0x85845dd1 -+ .word 0x85845dd1 -+ .word 0x6fa87e4f -+ .word 0x6fa87e4f -+ .word 0x6fa87e4f -+ .word 0x6fa87e4f -+ .word 0xfe2ce6e0 -+ .word 0xfe2ce6e0 -+ .word 0xfe2ce6e0 -+ .word 0xfe2ce6e0 -+ .word 0xa3014314 -+ .word 0xa3014314 -+ .word 0xa3014314 -+ .word 0xa3014314 -+ .word 0x4e0811a1 -+ .word 0x4e0811a1 -+ .word 0x4e0811a1 -+ .word 0x4e0811a1 -+ .word 0xf7537e82 -+ .word 0xf7537e82 -+ .word 0xf7537e82 -+ .word 0xf7537e82 -+ .word 0xbd3af235 -+ .word 0xbd3af235 -+ .word 0xbd3af235 -+ .word 0xbd3af235 -+ .word 0x2ad7d2bb -+ .word 0x2ad7d2bb -+ .word 0x2ad7d2bb -+ .word 0x2ad7d2bb -+ .word 0xeb86d391 -+ .word 0xeb86d391 -+ .word 0xeb86d391 -+ .word 0xeb86d391 -+ .size md5_mb_asimd_x4, .-md5_mb_asimd_x4 -diff --git a/drv/hash_mb/md5_mb_sve.S b/drv/hash_mb/md5_mb_sve.S -new file mode 100644 -index 0000000..8d8ecc1 ---- /dev/null -+++ b/drv/hash_mb/md5_mb_sve.S -@@ -0,0 +1,158 @@ -+/********************************************************************** -+ Copyright(c) 2022 Arm Corporation All rights reserved. -+ -+ Redistribution and use in source and binary forms, with or without -+ modification, are permitted provided that the following conditions -+ are met: -+ * Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ * Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in -+ the documentation and/or other materials provided with the -+ distribution. -+ * Neither the name of Arm Corporation nor the names of its -+ contributors may be used to endorse or promote products derived -+ from this software without specific prior written permission. -+ -+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+**********************************************************************/ -+ -+ .arch armv8.2-a+sve -+ -+// copying data from sparse memory unto continuous stack space -+// in oroder to gather-load into SVE registers -+.macro copy_mb_16words vecs:req,dest:req -+ mov src,\vecs -+ mov dst,\dest -+ mov counter,total_lanes -+10: -+ ldr tmp,[src],8 -+ ldr tmp,[tmp] -+ add tmp,tmp,block_ctr,lsl 6 -+ ld1 {TMPV0.4s,TMPV1.4s,TMPV2.4s,TMPV3.4s}, [tmp] -+ st1 {TMPV0.4s,TMPV1.4s,TMPV2.4s,TMPV3.4s}, [dst],64 -+ subs counter,counter,1 -+ b.ne 10b -+.endm -+ -+.macro load_init -+ mov tmpw,16 -+ index VOFFS.s,0,tmpw -+ copy_mb_16words job_vec,databuf -+.endm -+ -+.macro load_word pipelines:req,windex:req,zreg0:req,zreg1 -+ add tmp,databuf,\windex * 4 -+ ld1w { \zreg0\().s}, p0/z, [tmp, VOFFS.s, UXTW 2] -+ .if \pipelines > 1 -+ add tmp,tmp,veclen,lsl #6 -+ ld1w {\zreg1\().s}, p1/z, [tmp, VOFFS.s, UXTW 2] -+ .endif -+.endm -+ -+#include "md5_sve_common.S" -+ -+/* int md5_mb_sve_max_lanes() -+ */ -+ .global md5_mb_sve_max_lanes -+ .type md5_mb_sve_max_lanes, %function -+md5_mb_sve_max_lanes: -+ cntw x0 -+ add x0,x0,x0 -+ ret -+ .size md5_mb_sve_max_lanes, .-md5_mb_sve_max_lanes -+ -+/* -+ * void md5_mb_sve(int blocks, int total_lanes, MD5_JOB **job_vec) -+ */ -+ num_blocks .req w0 -+ total_lanes .req w1 -+ job_vec .req x2 -+ src .req x5 -+ dst .req x6 -+ tmp .req x8 -+ tmpw .req w8 -+ block_ctr .req x9 -+ block_ctr_w .req w9 -+ savedsp .req x10 -+ databuf .req x11 -+ counter .req w12 -+ veclen .req x13 -+ veclen_w .req w13 -+ abcd_buf .req x14 -+ md5key_adr .req x15 -+ -+ .global md5_mb_sve -+ .type md5_mb_sve, %function -+md5_mb_sve: -+ cbz num_blocks,.return -+ md5_sve_save_stack -+ mov savedsp,sp -+ // reserve (16 * lanes) for abcd buf -+ mov tmpw,total_lanes,lsl 4 -+ sub abcd_buf,sp,tmp -+ // reserve (64 * lanes) for data buf -+ mov tmpw,total_lanes,lsl 6 -+ sub databuf,abcd_buf,tmp -+ mov sp,databuf -+ adr md5key_adr,MD5_CONST_KEYS -+ whilelo p0.s,wzr,total_lanes -+ mov src,job_vec -+ mov dst,abcd_buf -+ mov counter,total_lanes -+.ldr_hash: -+ ldr tmp,[src],8 -+ add tmp,tmp,64 -+ ld1 {v0.16b},[tmp] -+ st1 {v0.16b},[dst],16 -+ subs counter,counter,1 -+ bne .ldr_hash -+ ld4w {VA_0.s,VB_0.s,VC_0.s,VD_0.s},p0/z,[abcd_buf] -+ mov block_ctr,0 -+ cntp veclen,p0,p0.s -+ cmp veclen_w,total_lanes -+ b.eq .loop_1x -+ whilelo p1.s,veclen_w,total_lanes -+ add tmp,abcd_buf,veclen,lsl #4 -+ ld4w {VA_1.s,VB_1.s,VC_1.s,VD_1.s},p1/z,[tmp] -+ b .loop_2x -+.loop_1x: -+ md5_single 1 -+ add block_ctr, block_ctr, 1 -+ cmp block_ctr_w,num_blocks -+ bne .loop_1x -+ st4w {VA_0.s,VB_0.s,VC_0.s,VD_0.s},p0,[abcd_buf] -+ b 1f -+.loop_2x: -+ md5_single 2 -+ add block_ctr, block_ctr, 1 -+ cmp block_ctr_w,num_blocks -+ bne .loop_2x -+ st4w {VA_0.s,VB_0.s,VC_0.s,VD_0.s},p0,[abcd_buf] -+ add tmp,abcd_buf,veclen,lsl #4 -+ st4w {VA_1.s,VB_1.s,VC_1.s,VD_1.s},p1,[tmp] -+1: -+ mov dst,job_vec -+ mov src,abcd_buf -+.str_hash: -+ ld1 {v0.16b},[src],16 -+ ldr tmp,[dst],8 -+ add tmp,tmp,64 -+ st1 {v0.16b},[tmp] -+ subs total_lanes,total_lanes,1 -+ bne .str_hash -+ mov sp,savedsp -+ md5_sve_restore_stack -+.return: -+ ret -+ .size md5_mb_sve, .-md5_mb_sve -diff --git a/drv/hash_mb/md5_sve_common.S b/drv/hash_mb/md5_sve_common.S -new file mode 100644 -index 0000000..ed81482 ---- /dev/null -+++ b/drv/hash_mb/md5_sve_common.S -@@ -0,0 +1,478 @@ -+/********************************************************************** -+ Copyright(c) 2022 Arm Corporation All rights reserved. -+ -+ Redistribution and use in source and binary forms, with or without -+ modification, are permitted provided that the following conditions -+ are met: -+ * Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ * Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in -+ the documentation and/or other materials provided with the -+ distribution. -+ * Neither the name of Arm Corporation nor the names of its -+ contributors may be used to endorse or promote products derived -+ from this software without specific prior written permission. -+ -+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+**********************************************************************/ -+ VK .req z0 -+ VOFFS .req z1 -+ VA_0 .req z2 -+ VB_0 .req z3 -+ VC_0 .req z4 -+ VD_0 .req z5 -+ VF_0 .req z6 -+ VF_1 .req z7 -+ VA_1 .req z16 -+ VB_1 .req z17 -+ VC_1 .req z18 -+ VD_1 .req z19 -+ MD5WORD0_0 .req z20 -+ MD5WORD1_0 .req z21 -+ MD5WORD0_1 .req z22 -+ MD5WORD1_1 .req z23 -+ TMPV0 .req v20 -+ TMPV1 .req v21 -+ TMPV2 .req v22 -+ TMPV3 .req v23 -+ VTMP_0 .req z24 -+ VAA_0 .req z25 -+ VBB_0 .req z26 -+ VCC_0 .req z27 -+ VDD_0 .req z28 -+ VTMP_1 .req z29 -+ VAA_1 .req z30 -+ VBB_1 .req z31 -+ VCC_1 .req z8 -+ VDD_1 .req z9 -+ TT .req z0 -+ -+.macro rotate_left_x1 out:req,in:req,tmp:req,bits -+ .if \bits == 16 -+ revh \out\().s,p0/m,\in\().s -+ .else -+ .if have_sve2 == 0 -+ lsl \tmp\().s, \in\().s,\bits -+ lsr \out\().s,\in\().s,32-\bits -+ orr \out\().d,\out\().d,\tmp\().d -+ .else -+ movprfx \out\().d,\in\().d -+ xar \out\().s,\out\().s,VZERO.s,32-\bits -+ .endif -+ .endif -+.endm -+ -+.macro rotate_left_x2 out:req,in:req,tmp:req,bits,out1:req,in1:req,tmp1:req,bits1 -+ -+ .if \bits == 16 -+ revh \out\().s,p0/m,\in\().s -+ revh \out1\().s,p0/m,\in1\().s -+ .else -+ .if have_sve2 == 0 -+ lsl \tmp\().s, \in\().s,\bits -+ lsl \tmp1\().s, \in1\().s,\bits1 -+ lsr \out\().s,\in\().s,32-\bits -+ lsr \out1\().s,\in1\().s,32-\bits1 -+ orr \out\().d,\out\().d,\tmp\().d -+ orr \out1\().d,\out1\().d,\tmp1\().d -+ .else -+ movprfx \out\().d,\in\().d -+ xar \out\().s,\out\().s,VZERO.s,32-\bits -+ movprfx \out1\().d,\in1\().d -+ xar \out1\().s,\out1\().s,VZERO.s,32-\bits1 -+ .endif -+ .endif -+.endm -+ -+.macro bsl_x1 ret:req,x:req,y:req,z:req,tmp:req -+ .if have_sve2 == 0 -+ bic \ret\().d,\z\().d,\x\().d -+ and \tmp\().d,\x\().d,\y\().d -+ orr \ret\().d,\ret\().d,\tmp\().d -+ .else -+ movprfx \ret\().d,\x\().d -+ bsl \ret\().d,\ret\().d,\y\().d,\z\().d -+ .endif -+.endm -+ -+.macro bsl_x2 ret:req,x:req,y:req,z:req,tmp:req,ret1:req,x1:req,y1:req,z1:req,tmp1:req -+ .if have_sve2 == 0 -+ bic \ret\().d,\z\().d,\x\().d -+ bic \ret1\().d,\z1\().d,\x1\().d -+ and \tmp\().d,\x\().d,\y\().d -+ and \tmp1\().d,\x1\().d,\y1\().d -+ orr \ret\().d,\ret\().d,\tmp\().d -+ orr \ret1\().d,\ret1\().d,\tmp1\().d -+ .else -+ movprfx \ret\().d,\x\().d -+ bsl \ret\().d,\ret\().d,\y\().d,\z\().d -+ movprfx \ret1\().d,\x1\().d -+ bsl \ret1\().d,\ret1\().d,\y1\().d,\z1\().d -+ .endif -+.endm -+ -+ -+// F = D ^ (B and (C xor D)) -+// that is (B and C) or ((not B) and D) -+.macro FUNC_F0_x1 -+ bsl_x1 VF_0,VB_0,VC_0,VD_0,VTMP_0 -+.endm -+ -+.macro FUNC_F0_x2 -+ bsl_x2 VF_0,VB_0,VC_0,VD_0,VTMP_0,VF_1,VB_1,VC_1,VD_1,VTMP_1 -+.endm -+ -+// F = C xor (D and (B xor C)) -+// that is (D and B) or ((not D) and C) -+.macro FUNC_F1_x1 -+ bsl_x1 VF_0,VD_0,VB_0,VC_0,VTMP_0 -+.endm -+ -+.macro FUNC_F1_x2 -+ bsl_x2 VF_0,VD_0,VB_0,VC_0,VTMP_0,VF_1,VD_1,VB_1,VC_1,VTMP_1 -+.endm -+ -+// F := B xor C xor D -+.macro FUNC_F2_x1 -+ .if have_sve2 == 0 -+ eor VF_0.d,VB_0.d,VC_0.d -+ eor VF_0.d,VF_0.d,VD_0.d -+ .else -+ movprfx VF_0.d,VB_0.d -+ eor3 VF_0.d,VF_0.d,VC_0.d,VD_0.d -+ .endif -+.endm -+ -+.macro FUNC_F2_x2 -+ .if have_sve2 == 0 -+ eor VF_0.d,VB_0.d,VC_0.d -+ eor VF_1.d,VB_1.d,VC_1.d -+ eor VF_0.d,VF_0.d,VD_0.d -+ eor VF_1.d,VF_1.d,VD_1.d -+ .else -+ movprfx VF_0.d,VB_0.d -+ eor3 VF_0.d,VF_0.d,VC_0.d,VD_0.d -+ movprfx VF_1.d,VB_1.d -+ eor3 VF_1.d,VF_1.d,VC_1.d,VD_1.d -+ .endif -+.endm -+ -+// F := C xor (B or (not D)) -+.macro FUNC_F3_x1 -+ not VF_0.s,p0/m,VD_0.s -+ orr VF_0.d,VF_0.d,VB_0.d -+ eor VF_0.d,VF_0.d,VC_0.d -+.endm -+ -+.macro FUNC_F3_x2 -+ not VF_0.s,p0/m,VD_0.s -+ not VF_1.s,p0/m,VD_1.s -+ orr VF_0.d,VF_0.d,VB_0.d -+ orr VF_1.d,VF_1.d,VB_1.d -+ eor VF_0.d,VF_0.d,VC_0.d -+ eor VF_1.d,VF_1.d,VC_1.d -+.endm -+ -+.macro SWAP_STATES -+ .unreq TT -+ TT .req VA_0 -+ .unreq VA_0 -+ VA_0 .req VD_0 -+ .unreq VD_0 -+ VD_0 .req VC_0 -+ .unreq VC_0 -+ VC_0 .req VB_0 -+ .unreq VB_0 -+ VB_0 .req TT -+ -+ .unreq TT -+ TT .req VA_1 -+ .unreq VA_1 -+ VA_1 .req VD_1 -+ .unreq VD_1 -+ VD_1 .req VC_1 -+ .unreq VC_1 -+ VC_1 .req VB_1 -+ .unreq VB_1 -+ VB_1 .req TT -+.endm -+ -+.macro MD5_STEP_x1 windex:req,mg:req,func_f:req,bits:req -+ ld1rw {VK.s},p0/z,[md5key_adr,windex * 4] -+ \func_f\()_x1 -+ add VTMP_0.s,VA_0.s,\mg\()_0.s -+ add VF_0.s,VF_0.s,VK.s -+ add VF_0.s,VF_0.s,VTMP_0.s -+ rotate_left_x1 VA_0,VF_0,VTMP_0,\bits -+ add VA_0.s,VA_0.s,VB_0.s -+.endm -+ -+.macro MD5_STEP_x2 windex:req,mg:req,func_f:req,bits:req -+ ld1rw {VK.s},p0/z,[md5key_adr,windex * 4] -+ \func_f\()_x2 -+ add VTMP_0.s,VA_0.s,\mg\()_0.s -+ add VTMP_1.s,VA_1.s,\mg\()_1.s -+ add VF_0.s,VF_0.s,VK.s -+ add VF_1.s,VF_1.s,VK.s -+ add VF_0.s,VF_0.s,VTMP_0.s -+ add VF_1.s,VF_1.s,VTMP_1.s -+ rotate_left_x2 VA_0,VF_0,VTMP_0,\bits,VA_1,VF_1,VTMP_1,\bits -+ add VA_0.s,VA_0.s,VB_0.s -+ add VA_1.s,VA_1.s,VB_1.s -+.endm -+ -+.altmacro -+.macro load_words index:req,mg:req -+ load_word %num_pipelines,\index,MD5WORD\mg\()_0,MD5WORD\mg\()_1 -+.endm -+ -+.macro MD5_STEP_WRAPPER pipelines:req,windex:req,gindex:req,mg:req,\ -+ func_f:req,bits:req,gindex_next,mg_next -+ .ifnb \gindex_next -+ load_words \gindex_next,\mg_next -+ .endif -+ MD5_STEP_x\pipelines\() \windex,MD5WORD\mg\(),\func_f,\bits -+.endm -+ -+.macro exec_step windex:req,gindex:req,bits:req,gindex_next -+ .if \windex % 2 == 0 -+ mg=0 -+ mg_next=1 -+ .else -+ mg=1 -+ mg_next=0 -+ .endif -+ -+ .if \windex <= 15 -+ MD5_STEP_WRAPPER %num_pipelines,\windex,\gindex,%mg,\ -+ FUNC_F0,\bits,\gindex_next,%mg_next -+ .endif -+ .if \windex >= 16 && \windex <= 31 -+ MD5_STEP_WRAPPER %num_pipelines,\windex,\gindex,%mg,\ -+ FUNC_F1,\bits,\gindex_next,%mg_next -+ .endif -+ .if \windex >= 32 && \windex <= 47 -+ MD5_STEP_WRAPPER %num_pipelines,\windex,\gindex,%mg,\ -+ FUNC_F2,\bits,\gindex_next,%mg_next -+ .endif -+ .if \windex >= 48 && \windex < 63 -+ MD5_STEP_WRAPPER %num_pipelines,\windex,\gindex,%mg,\ -+ FUNC_F3,\bits,\gindex_next,%mg_next -+ .endif -+ .if \windex == 63 -+ MD5_STEP_WRAPPER %num_pipelines,\windex,\gindex,%mg,FUNC_F3,\bits -+ .endif -+ SWAP_STATES -+.endm -+ -+.macro exec_steps -+ exec_step 0,0,7,1 -+ exec_step 1,1,12,2 -+ exec_step 2,2,17,3 -+ exec_step 3,3,22,4 -+ exec_step 4,4,7,5 -+ exec_step 5,5,12,6 -+ exec_step 6,6,17,7 -+ exec_step 7,7,22,8 -+ exec_step 8,8,7,9 -+ exec_step 9,9,12,10 -+ exec_step 10,10,17,11 -+ exec_step 11,11,22,12 -+ exec_step 12,12,7,13 -+ exec_step 13,13,12,14 -+ exec_step 14,14,17,15 -+ exec_step 15,15,22,1 -+ exec_step 16,1,5,6 -+ exec_step 17,6,9,11 -+ exec_step 18,11,14,0 -+ exec_step 19,0,20,5 -+ exec_step 20,5,5,10 -+ exec_step 21,10,9,15 -+ exec_step 22,15,14,4 -+ exec_step 23,4,20,9 -+ exec_step 24,9,5,14 -+ exec_step 25,14,9,3 -+ exec_step 26,3,14,8 -+ exec_step 27,8,20,13 -+ exec_step 28,13,5,2 -+ exec_step 29,2,9,7 -+ exec_step 30,7,14,12 -+ exec_step 31,12,20,5 -+ exec_step 32,5,4,8 -+ exec_step 33,8,11,11 -+ exec_step 34,11,16,14 -+ exec_step 35,14,23,1 -+ exec_step 36,1,4,4 -+ exec_step 37,4,11,7 -+ exec_step 38,7,16,10 -+ exec_step 39,10,23,13 -+ exec_step 40,13,4,0 -+ exec_step 41,0,11,3 -+ exec_step 42,3,16,6 -+ exec_step 43,6,23,9 -+ exec_step 44,9,4,12 -+ exec_step 45,12,11,15 -+ exec_step 46,15,16,2 -+ exec_step 47,2,23,0 -+ exec_step 48,0,6,7 -+ exec_step 49,7,10,14 -+ exec_step 50,14,15,5 -+ exec_step 51,5,21,12 -+ exec_step 52,12,6,3 -+ exec_step 53,3,10,10 -+ exec_step 54,10,15,1 -+ exec_step 55,1,21,8 -+ exec_step 56,8,6,15 -+ exec_step 57,15,10,6 -+ exec_step 58,6,15,13 -+ exec_step 59,13,21,4 -+ exec_step 60,4,6,11 -+ exec_step 61,11,10,2 -+ exec_step 62,2,15,9 -+ exec_step 63,9,21 -+.endm -+ -+.macro prepare_x1 -+ load_words 0,0 -+ orr VAA_0.d,VA_0.d,VA_0.d -+ orr VBB_0.d,VB_0.d,VB_0.d -+ orr VCC_0.d,VC_0.d,VC_0.d -+ orr VDD_0.d,VD_0.d,VD_0.d -+.endm -+ -+.macro prepare_x2 -+ load_words 0,0 -+ orr VAA_0.d,VA_0.d,VA_0.d -+ orr VAA_1.d,VA_1.d,VA_1.d -+ orr VBB_0.d,VB_0.d,VB_0.d -+ orr VBB_1.d,VB_1.d,VB_1.d -+ orr VCC_0.d,VC_0.d,VC_0.d -+ orr VCC_1.d,VC_1.d,VC_1.d -+ orr VDD_0.d,VD_0.d,VD_0.d -+ orr VDD_1.d,VD_1.d,VD_1.d -+.endm -+ -+.macro finish_x1 -+ add VA_0.s,VA_0.s,VAA_0.s -+ add VB_0.s,VB_0.s,VBB_0.s -+ add VC_0.s,VC_0.s,VCC_0.s -+ add VD_0.s,VD_0.s,VDD_0.s -+.endm -+ -+.macro finish_x2 -+ add VA_0.s,VA_0.s,VAA_0.s -+ add VA_1.s,VA_1.s,VAA_1.s -+ add VB_0.s,VB_0.s,VBB_0.s -+ add VB_1.s,VB_1.s,VBB_1.s -+ add VC_0.s,VC_0.s,VCC_0.s -+ add VC_1.s,VC_1.s,VCC_1.s -+ add VD_0.s,VD_0.s,VDD_0.s -+ add VD_1.s,VD_1.s,VDD_1.s -+.endm -+ -+.macro md5_single pipelines:req,sve2 -+ .ifnb \sve2 -+ have_sve2=1 -+ eor VZERO.d,VZERO.d,VZERO.d -+ .else -+ have_sve2=0 -+ .endif -+ num_pipelines=\pipelines -+ load_init -+ -+ prepare_x\pipelines\() -+ exec_steps -+ finish_x\pipelines\() -+.endm -+ -+.macro md5_sve_save_stack -+ stp d8,d9,[sp, -48]! -+ stp d10,d11,[sp, 16] -+ stp d12,d13,[sp, 32] -+.endm -+ -+.macro md5_sve_restore_stack -+ ldp d10,d11,[sp, 16] -+ ldp d12,d13,[sp, 32] -+ ldp d8,d9,[sp],48 -+.endm -+ -+ .section .rodata.cst16,"aM",@progbits,16 -+ .align 16 -+ -+MD5_CONST_KEYS: -+ .word 0xd76aa478 -+ .word 0xe8c7b756 -+ .word 0x242070db -+ .word 0xc1bdceee -+ .word 0xf57c0faf -+ .word 0x4787c62a -+ .word 0xa8304613 -+ .word 0xfd469501 -+ .word 0x698098d8 -+ .word 0x8b44f7af -+ .word 0xffff5bb1 -+ .word 0x895cd7be -+ .word 0x6b901122 -+ .word 0xfd987193 -+ .word 0xa679438e -+ .word 0x49b40821 -+ .word 0xf61e2562 -+ .word 0xc040b340 -+ .word 0x265e5a51 -+ .word 0xe9b6c7aa -+ .word 0xd62f105d -+ .word 0x02441453 -+ .word 0xd8a1e681 -+ .word 0xe7d3fbc8 -+ .word 0x21e1cde6 -+ .word 0xc33707d6 -+ .word 0xf4d50d87 -+ .word 0x455a14ed -+ .word 0xa9e3e905 -+ .word 0xfcefa3f8 -+ .word 0x676f02d9 -+ .word 0x8d2a4c8a -+ .word 0xfffa3942 -+ .word 0x8771f681 -+ .word 0x6d9d6122 -+ .word 0xfde5380c -+ .word 0xa4beea44 -+ .word 0x4bdecfa9 -+ .word 0xf6bb4b60 -+ .word 0xbebfbc70 -+ .word 0x289b7ec6 -+ .word 0xeaa127fa -+ .word 0xd4ef3085 -+ .word 0x04881d05 -+ .word 0xd9d4d039 -+ .word 0xe6db99e5 -+ .word 0x1fa27cf8 -+ .word 0xc4ac5665 -+ .word 0xf4292244 -+ .word 0x432aff97 -+ .word 0xab9423a7 -+ .word 0xfc93a039 -+ .word 0x655b59c3 -+ .word 0x8f0ccc92 -+ .word 0xffeff47d -+ .word 0x85845dd1 -+ .word 0x6fa87e4f -+ .word 0xfe2ce6e0 -+ .word 0xa3014314 -+ .word 0x4e0811a1 -+ .word 0xf7537e82 -+ .word 0xbd3af235 -+ .word 0x2ad7d2bb -+ .word 0xeb86d391 -diff --git a/drv/hash_mb/sm3_mb_asimd_x1.S b/drv/hash_mb/sm3_mb_asimd_x1.S -new file mode 100644 -index 0000000..c7362de ---- /dev/null -+++ b/drv/hash_mb/sm3_mb_asimd_x1.S -@@ -0,0 +1,387 @@ -+/********************************************************************** -+ Copyright(c) 2020 Arm Corporation All rights reserved. -+ -+ Redistribution and use in source and binary forms, with or without -+ modification, are permitted provided that the following conditions -+ are met: -+ * Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ * Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in -+ the documentation and/or other materials provided with the -+ distribution. -+ * Neither the name of Arm Corporation nor the names of its -+ contributors may be used to endorse or promote products derived -+ from this software without specific prior written permission. -+ -+ THIS SOFTmsgARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+ "AS IS" AND ANY EXPRESS OR IMPLIED msgARRANTIES, INCLUDING, BUT NOT -+ LIMITED TO, THE IMPLIED msgARRANTIES OF MERCHANTABILITY AND FITNESS FOR -+ dig_A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -+ OmsgNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOmsgEVER CAUSED AND ON ANY -+ THEORY OF LIABILITY, msgHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+ (INCLUDING NEGLIGENCE OR OTHERmsgISE) ARISING IN ANY msgAY OUT OF THE USE -+ OF THIS SOFTmsgARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+**********************************************************************/ -+ .arch armv8.2-a -+ .text -+ .align 2 -+ .p2align 3,,7 -+ -+.macro declare_var_vector_reg name:req,reg:req -+ q\name\() .req q\reg -+ v\name\() .req v\reg -+ s\name\() .req s\reg -+.endm -+ -+ job .req x0 -+ len .req x1 -+ data .req x2 -+ digest .req x0 -+ -+ msg0 .req w3 -+ msg1 .req w4 -+ msg2 .req w5 -+ msg3 .req w6 -+ msg4 .req w7 -+ -+ msg .req w9 -+ msgP .req w10 -+ SS1 .req w11 -+ SS2 .req w12 -+ TT1 .req w13 -+ TT2 .req w14 -+ Tj .req w15 -+ tmp0 .req w19 -+ tmp1 .req w20 -+ dig_A .req w21 -+ dig_B .req w22 -+ dig_C .req w23 -+ dig_D .req w24 -+ dig_E .req w25 -+ dig_F .req w26 -+ dig_G .req w27 -+ dig_H .req w28 -+ -+ declare_var_vector_reg dig0,0 -+ declare_var_vector_reg dig1,1 -+ declare_var_vector_reg dig0_bak,2 -+ declare_var_vector_reg dig1_bak,3 -+ declare_var_vector_reg vect_msg0,4 -+ declare_var_vector_reg vect_msg1,5 -+ declare_var_vector_reg vect_msg2,6 -+ declare_var_vector_reg vect_msg3,7 -+ -+ declare_var_vector_reg vect_msgP0,16 -+ declare_var_vector_reg vect_msgP1,17 -+ declare_var_vector_reg vect_msgP2,18 -+ -+ -+ -+ -+ -+ -+// round 0-11 -+.macro sm3_round_0 round:req -+ ldr msg, [sp,msg_off+4*\round\()] -+ ldr msgP,[sp,wp_off +4*\round\()] -+ add SS1,dig_E,Tj -+ ror TT1,dig_A,32-12 -+ add SS1,SS1,TT1 -+ ror SS1,SS1,32-7 //SS1 done -+ eor SS2,SS1,TT1 //SS2 done -+ eor TT1,dig_A,dig_B -+ eor TT2,dig_E,dig_F -+ add SS2,SS2,msgP -+ eor TT2,TT2,dig_G -+ add SS1,SS1,msg -+ eor TT1,TT1,dig_C -+ add SS2,SS2,dig_D -+ add SS1,SS1,dig_H -+ add TT1,TT1,SS2 -+ add TT2,TT2,SS1 -+ mov dig_D,dig_C -+ ror dig_C,dig_B,32-9 -+ mov dig_B,dig_A -+ mov dig_A,TT1 -+ eor TT1,TT2,TT2,ror (32-17) -+ mov dig_H,dig_G -+ ror dig_G,dig_F,32-19 -+ mov dig_F,dig_E -+ eor dig_E,TT1,TT2,ror(32-9) -+ ror Tj,Tj,(32-1) -+.endm -+ -+//round 12-15 -+.macro sm3_round_12 round:req -+ ldr msg, [sp,msg_off+4*((\round\())%17)] -+ ldr msg0,[sp,msg_off+4*((\round\()+4 - 16)%17)] -+ ldr msg1,[sp,msg_off+4*((\round\()+4 - 9)%17)] -+ add SS1,dig_E,Tj -+ ror TT1,dig_A,32-12 -+ add SS1,SS1,TT1 -+ ror SS1,SS1,32-7 //SS1 done -+ eor SS2,SS1,TT1 //SS2 done -+ -+ eor msg0,msg0,msg1 -+ ldr msg2,[sp,msg_off+4*((\round\()+4 - 3)%17)] -+ eor TT1,dig_A,dig_B -+ eor TT2,dig_E,dig_F -+ add SS2,SS2,dig_D -+ eor TT2,TT2,dig_G -+ add SS1,SS1,msg -+ eor msg0,msg0,msg2,ror (32-15) -+ ldr msg3,[sp,msg_off+4*((\round\()+4 - 13)%17)] -+ ldr msg4,[sp,msg_off+4*((\round\()+4 - 6)%17)] -+ eor msg1,msg0,msg0,ror (32 -15) -+ eor TT1,TT1,dig_C -+ add TT1,TT1,SS2 -+ eor msg4,msg4,msg3, ror (32-7) -+ eor msg0,msg1,msg0, ror (32-23) -+ add SS1,SS1,dig_H -+ eor msg0,msg0,msg4 -+ add TT2,TT2,SS1 -+ mov dig_D,dig_C -+ str msg0,[sp,msg_off+4*((\round\()+4)%17)] -+ eor msgP,msg,msg0 -+ add TT1,TT1,msgP -+ ror dig_C,dig_B,32-9 -+ mov dig_B,dig_A -+ mov dig_A,TT1 -+ eor TT1,TT2,TT2,ror (32-17) -+ mov dig_H,dig_G -+ ror dig_G,dig_F,32-19 -+ mov dig_F,dig_E -+ eor dig_E,TT1,TT2,ror(32-9) -+ ror Tj,Tj,32-1 -+.endm -+ -+// round 16-62 -+.macro sm3_round_16 round:req -+ ldr msg, [sp,msg_off+4*((\round\())%17)] -+ ldr msg0,[sp,msg_off+4*((\round\()+4 - 16)%17)] -+ ldr msg1,[sp,msg_off+4*((\round\()+4 - 9)%17)] -+ add SS1,dig_E,Tj -+ ror TT1,dig_A,32-12 -+ add SS1,SS1,TT1 -+ ror SS1,SS1,32-7 //SS1 done -+ eor SS2,SS1,TT1 //SS2 done -+ -+ eor msg0,msg0,msg1 -+ ldr msg2,[sp,msg_off+4*((\round\()+4 - 3)%17)] -+ orr TT1,dig_B,dig_C -+ and tmp0,dig_B,dig_C -+ -+ eor TT2,dig_F,dig_G -+ and TT1,TT1,dig_A -+ add SS2,SS2,dig_D -+ orr TT1,TT1,tmp0 -+ and TT2,TT2,dig_E -+ add SS1,SS1,msg -+ eor TT2,TT2,dig_G -+ -+ eor msg0,msg0,msg2,ror (32-15) -+ ldr msg3,[sp,msg_off+4*((\round\()+4 - 13)%17)] -+ ldr msg4,[sp,msg_off+4*((\round\()+4 - 6)%17)] -+ eor msg1,msg0,msg0,ror (32 -15) -+ add TT1,TT1,SS2 -+ eor msg4,msg4,msg3, ror (32-7) -+ eor msg0,msg1,msg0, ror (32-23) -+ add SS1,SS1,dig_H -+ eor msg0,msg0,msg4 -+ add TT2,TT2,SS1 -+ mov dig_D,dig_C -+ str msg0,[sp,msg_off+4*((\round\()+4)%17)] -+ eor msgP,msg,msg0 -+ add TT1,TT1,msgP -+ ror dig_C,dig_B,32-9 -+ mov dig_B,dig_A -+ mov dig_A,TT1 -+ eor TT1,TT2,TT2,ror (32-17) -+ mov dig_H,dig_G -+ ror dig_G,dig_F,32-19 -+ mov dig_F,dig_E -+ eor dig_E,TT1,TT2,ror(32-9) -+ ror Tj,Tj,32-1 -+.endm -+ -+//round 63 -+.macro sm3_round_63 round:req -+ ldr msg, [sp,msg_off+4*((\round\())%17)] -+ ldr msg0,[sp,msg_off+4*((\round\()+4 - 16)%17)] -+ ldr msg1,[sp,msg_off+4*((\round\()+4 - 9)%17)] -+ add SS1,dig_E,Tj -+ ror TT1,dig_A,32-12 -+ add SS1,SS1,TT1 -+ ror SS1,SS1,32-7 //SS1 done -+ eor SS2,SS1,TT1 //SS2 done -+ eor msg0,msg0,msg1 -+ ldr msg2,[sp,msg_off+4*((\round\()+4 - 3)%17)] -+ orr TT1,dig_B,dig_C -+ and tmp0,dig_B,dig_C -+ eor TT2,dig_F,dig_G -+ and TT1,TT1,dig_A -+ add SS2,SS2,dig_D -+ orr TT1,TT1,tmp0 -+ and TT2,TT2,dig_E -+ add SS1,SS1,msg -+ eor TT2,TT2,dig_G -+ eor msg0,msg0,msg2,ror (32-15) -+ ldr msg3,[sp,msg_off+4*((\round\()+4 - 13)%17)] -+ ldr msg4,[sp,msg_off+4*((\round\()+4 - 6)%17)] -+ eor msg1,msg0,msg0,ror (32 -15) -+ add TT1,TT1,SS2 -+ eor msg4,msg4,msg3, ror (32-7) -+ eor msg0,msg1,msg0, ror (32-23) -+ add SS1,SS1,dig_H -+ eor msg0,msg0,msg4 -+ add TT2,TT2,SS1 -+ str msg0,[sp,msg_off+4*((\round\()+4)%17)] -+ eor msgP,msg,msg0 -+ add TT1,TT1,msgP -+ ins vdig0_bak.s[3],dig_C -+ ror dig_C,dig_B,32-9 -+ ins vdig0_bak.s[1],dig_A -+ ins vdig0_bak.s[0],TT1 -+ ins vdig0_bak.s[2],dig_C -+ eor TT1,TT2,TT2,ror (32-17) -+ ins vdig1_bak.s[3],dig_G -+ ror dig_G,dig_F,32-19 -+ ins vdig1_bak.s[1],dig_E -+ ins vdig1_bak.s[2],dig_G -+ eor dig_E,TT1,TT2,ror(32-9) -+ ins vdig1_bak.s[0],dig_E -+.endm -+ -+ .set wp_off , 96 -+ .set msg_off, 96 + 12*4 -+#define STACK_SIZE 224 -+ .global sm3_mb_asimd_x1 -+ .type sm3_mb_asimd_x1, %function -+sm3_mb_asimd_x1: -+ stp x29,x30, [sp,-STACK_SIZE]! -+ cmp len,0 -+ ldr data,[job],64 -+ ldp qdig0,qdig1,[digest] -+ stp x19, x20, [sp, 16] -+ stp x21, x22, [sp, 32] -+ rev32 vdig0.16b,vdig0.16b -+ stp x23, x24, [sp, 48] -+ rev32 vdig1.16b,vdig1.16b -+ stp x25, x26, [sp, 64] -+ stp x27, x28, [sp, 80] -+ ble .exit_func -+ -+.start_loop: -+ -+ /** prepare first 12 round data **/ -+ ld1 {vvect_msg0.16b-vvect_msg3.16b},[data],64 -+ mov Tj, 17689 -+ umov dig_A,vdig0.s[0] -+ movk Tj, 0x79cc, lsl 16 -+ rev32 vvect_msg0.16b,vvect_msg0.16b -+ umov dig_B,vdig0.s[1] -+ rev32 vvect_msg1.16b,vvect_msg1.16b -+ umov dig_C,vdig0.s[2] -+ rev32 vvect_msg2.16b,vvect_msg2.16b -+ umov dig_D,vdig0.s[3] -+ rev32 vvect_msg3.16b,vvect_msg3.16b -+ umov dig_E,vdig1.s[0] -+ stp qvect_msg0,qvect_msg1,[sp,msg_off] -+ umov dig_F,vdig1.s[1] -+ stp qvect_msg2,qvect_msg3,[sp,msg_off+32] -+ umov dig_G,vdig1.s[2] -+ eor vvect_msgP0.16b,vvect_msg0.16b,vvect_msg1.16b -+ eor vvect_msgP1.16b,vvect_msg1.16b,vvect_msg2.16b -+ umov dig_H,vdig1.s[3] -+ stp qvect_msgP0,qvect_msgP1,[sp,wp_off] -+ eor vvect_msgP2.16b,vvect_msg2.16b,vvect_msg3.16b -+ str qvect_msgP2,[sp,wp_off+32] -+ -+ sm3_round_0 0 -+ sm3_round_0 1 -+ sm3_round_0 2 -+ sm3_round_0 3 -+ sm3_round_0 4 -+ sm3_round_0 5 -+ sm3_round_0 6 -+ sm3_round_0 7 -+ sm3_round_0 8 -+ sm3_round_0 9 -+ sm3_round_0 10 -+ sm3_round_0 11 -+ -+ sm3_round_12 12 -+ sm3_round_12 13 -+ sm3_round_12 14 -+ sm3_round_12 15 -+ mov Tj, 0x7a87 -+ movk Tj, 0x9d8a, lsl 16 -+ sm3_round_16 16 -+ sm3_round_16 17 -+ sm3_round_16 18 -+ sm3_round_16 19 -+ sm3_round_16 20 -+ sm3_round_16 21 -+ sm3_round_16 22 -+ sm3_round_16 23 -+ sm3_round_16 24 -+ sm3_round_16 25 -+ sm3_round_16 26 -+ sm3_round_16 27 -+ sm3_round_16 28 -+ sm3_round_16 29 -+ sm3_round_16 30 -+ sm3_round_16 31 -+ sm3_round_16 32 -+ sm3_round_16 33 -+ sm3_round_16 34 -+ sm3_round_16 35 -+ sm3_round_16 36 -+ sm3_round_16 37 -+ sm3_round_16 38 -+ sm3_round_16 39 -+ sm3_round_16 40 -+ sm3_round_16 41 -+ sm3_round_16 42 -+ sm3_round_16 43 -+ sm3_round_16 44 -+ sm3_round_16 45 -+ sm3_round_16 46 -+ sm3_round_16 47 -+ sm3_round_16 48 -+ sm3_round_16 49 -+ sm3_round_16 50 -+ sm3_round_16 51 -+ sm3_round_16 52 -+ sm3_round_16 53 -+ sm3_round_16 54 -+ sm3_round_16 55 -+ sm3_round_16 56 -+ sm3_round_16 57 -+ sm3_round_16 58 -+ sm3_round_16 59 -+ sm3_round_16 60 -+ sm3_round_16 61 -+ sm3_round_16 62 -+ sm3_round_63 63 -+ subs len,len,1 -+ eor vdig0.16b,vdig0.16b,vdig0_bak.16b -+ eor vdig1.16b,vdig1.16b,vdig1_bak.16b -+ bne .start_loop -+.exit_func: -+ ldp x19, x20, [sp, 16] -+ rev32 vdig0.16b,vdig0.16b -+ ldp x21, x22, [sp, 32] -+ rev32 vdig1.16b,vdig1.16b -+ ldp x23, x24, [sp, 48] -+ stp qdig0,qdig1,[digest] -+ ldp x25, x26, [sp, 64] -+ ldp x27, x28, [sp, 80] -+ ldp x29, x30, [sp], STACK_SIZE -+ ret -+ .size sm3_mb_asimd_x1, .-sm3_mb_asimd_x1 -+ -diff --git a/drv/hash_mb/sm3_mb_asimd_x4.S b/drv/hash_mb/sm3_mb_asimd_x4.S -new file mode 100644 -index 0000000..975a07c ---- /dev/null -+++ b/drv/hash_mb/sm3_mb_asimd_x4.S -@@ -0,0 +1,576 @@ -+/********************************************************************** -+ Copyright(c) 2020 Arm Corporation All rights reserved. -+ -+ Redistribution and use in source and binary forms, with or without -+ modification, are permitted provided that the following conditions -+ are met: -+ * Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ * Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in -+ the documentation and/or other materials provided with the -+ distribution. -+ * Neither the name of Arm Corporation nor the names of its -+ contributors may be used to endorse or promote products derived -+ from this software without specific prior written permission. -+ -+ THIS SOFTmsgARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+ "AS IS" AND ANY EXPRESS OR IMPLIED msgARRANTIES, INCLUDING, BUT NOT -+ LIMITED TO, THE IMPLIED msgARRANTIES OF MERCHANTABILITY AND FITNESS FOR -+ dig_A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -+ OmsgNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOmsgEVER CAUSED AND ON ANY -+ THEORY OF LIABILITY, msgHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+ (INCLUDING NEGLIGENCE OR OTHERmsgISE) ARISING IN ANY msgAY OUT OF THE USE -+ OF THIS SOFTmsgARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+**********************************************************************/ -+ .arch armv8.2-a -+ .text -+ .align 2 -+ .p2align 3,,7 -+ -+.macro declare_var_vector_reg name:req,reg:req -+ q\name\() .req q\reg -+ v\name\() .req v\reg -+ s\name\() .req s\reg -+.endm -+ -+ job0 .req x0 -+ job1 .req x1 -+ job2 .req x2 -+ job3 .req x3 -+ len .req x4 -+ -+ job0_data .req x5 -+ job1_data .req x6 -+ job2_data .req x7 -+ job3_data .req x9 -+ -+ job0_digest .req x0 -+ job1_digest .req x1 -+ job2_digest .req x2 -+ job3_digest .req x3 -+ job0_tmp .req x10 -+ job1_tmp .req x11 -+ job2_tmp .req x12 -+ job3_tmp .req x13 -+ const_adr .req x14 -+ -+ -+ declare_var_vector_reg msg0,0 -+ declare_var_vector_reg msg1,1 -+ declare_var_vector_reg msg2,2 -+ declare_var_vector_reg msg3,3 -+ declare_var_vector_reg msg4,4 -+ declare_var_vector_reg msg5,5 -+ declare_var_vector_reg msg6,6 -+ declare_var_vector_reg msg7,7 -+ declare_var_vector_reg msg8,8 -+ declare_var_vector_reg msg9,9 -+ declare_var_vector_reg msg10,10 -+ declare_var_vector_reg msg11,11 -+ declare_var_vector_reg msg12,12 -+ declare_var_vector_reg msg13,13 -+ declare_var_vector_reg msg14,14 -+ declare_var_vector_reg msg15,15 -+ declare_var_vector_reg msg16,16 -+ -+ -+ declare_var_vector_reg dig_A,24 -+ declare_var_vector_reg dig_B,25 -+ declare_var_vector_reg dig_C,26 -+ declare_var_vector_reg dig_D,27 -+ declare_var_vector_reg dig_E,28 -+ declare_var_vector_reg dig_F,29 -+ declare_var_vector_reg dig_G,30 -+ declare_var_vector_reg dig_H,31 -+ -+ declare_var_vector_reg TT1,17 -+ declare_var_vector_reg TT2,18 -+ declare_var_vector_reg SS1,19 -+ declare_var_vector_reg SS2,20 -+ declare_var_vector_reg tmp0,21 -+ declare_var_vector_reg word_pair,23 -+ declare_var_vector_reg Tj,22 -+ -+ -+.macro rol32 target:req,reg:req,bit:req -+ ushr v\target\().4s,v\reg\().4s,32 - \bit -+ sli v\target\().4s,v\reg\().4s,\bit -+.endm -+ -+// round 0-11 -+.macro sm3_round_0 round:req,wp:req -+ -+ ushr vtmp0.4s,vdig_A.4s,32 - 12 -+ -+ add vSS1.4s,vdig_E.4s,vTj.4s -+ sli vtmp0.4s,vdig_A.4s,12 -+ rev32 vmsg\round\().16b,vmsg\round\().16b -+ rev32 vmsg\wp\().16b,vmsg\wp\().16b -+ add vTT1.4s,vSS1.4s,vtmp0.4s //SS1 Done -+ rol32 SS1,TT1,7 -+ eor vSS2.16b,vSS1.16b,vtmp0.16b //SS2 Done -+ eor vword_pair.16b,vmsg\round\().16b,vmsg\wp\().16b -+ -+ eor vTT1.16b,vdig_A.16b,vdig_B.16b -+ eor vTT2.16b,vdig_E.16b,vdig_F.16b -+ eor vTT1.16b,vTT1.16b,vdig_C.16b -+ eor vTT2.16b,vTT2.16b,vdig_G.16b -+ -+ add vSS1.4s,vSS1.4s,vmsg\round\().4s -+ add vSS2.4s,vSS2.4s,vword_pair.4s -+ add vTT1.4s,vTT1.4s,vdig_D.4s -+ add vTT2.4s,vTT2.4s,vdig_H.4s -+ ushr vtmp0.4s,vTj.4s,32-1 -+ add vTT1.4s,vTT1.4s,vSS2.4s //TT1 Done -+ sli vtmp0.4s,vTj.4s,1 -+ add vTT2.4s,vTT2.4s,vSS1.4s //TT2 Done -+ mov vTj.16b,vtmp0.16b -+ //D=C -+ mov vdig_D.16b,vdig_C.16b -+ //C = ROTL32(B, 9); -+ ushr vdig_C.4s,vdig_B.4s,32 - 9 -+ sli vdig_C.4s,vdig_B.4s,9 -+ //B=A -+ mov vdig_B.16b,vdig_A.16b -+ //A=TT1 -+ mov vdig_A.16b,vTT1.16b -+ // H=G -+ mov vdig_H.16b,vdig_G.16b -+ //G = ROTL32(F,19) -+ rol32 dig_G,dig_F,19 -+ //F = E -+ mov vdig_F.16b,vdig_E.16b -+ // E=Target, TT2=src, TT1,SS1,SS2 is free -+ // E = P0(TT2); -+ ushr vSS2.4s, vTT2.4s, 32 - 9 -+ ushr vSS1.4s, vTT2.4s, 32 - 17 -+ sli vSS2.4s, vTT2.4s, 9 -+ sli vSS1.4s, vTT2.4s, 17 -+ eor vdig_E.16b, vTT2.16b, vSS1.16b -+ eor vdig_E.16b, vdig_E.16b, vSS2.16b -+ -+.endm -+ -+ -+.macro sm3_round_4 round:req,wp:req -+ -+ ushr vtmp0.4s,vdig_A.4s,32 - 12 -+ add vSS1.4s,vdig_E.4s,vTj.4s -+ sli vtmp0.4s,vdig_A.4s,12 -+ rev32 vmsg\wp\().16b,vmsg\wp\().16b -+ add vTT1.4s,vSS1.4s,vtmp0.4s //SS1 Done -+ rol32 SS1,TT1,7 -+ eor vSS2.16b,vSS1.16b,vtmp0.16b //SS2 Done -+ eor vword_pair.16b,vmsg\round\().16b,vmsg\wp\().16b -+ eor vTT1.16b,vdig_A.16b,vdig_B.16b -+ eor vTT2.16b,vdig_E.16b,vdig_F.16b -+ eor vTT1.16b,vTT1.16b,vdig_C.16b -+ eor vTT2.16b,vTT2.16b,vdig_G.16b -+ add vSS1.4s,vSS1.4s,vmsg\round\().4s -+ add vSS2.4s,vSS2.4s,vword_pair.4s -+ add vTT1.4s,vTT1.4s,vdig_D.4s -+ add vTT2.4s,vTT2.4s,vdig_H.4s -+ ushr vtmp0.4s,vTj.4s,32-1 -+ add vTT1.4s,vTT1.4s,vSS2.4s //TT1 Done -+ sli vtmp0.4s,vTj.4s,1 -+ add vTT2.4s,vTT2.4s,vSS1.4s //TT2 Done -+ mov vTj.16b,vtmp0.16b -+ //D=C -+ mov vdig_D.16b,vdig_C.16b -+ //C = ROTL32(B, 9); -+ ushr vdig_C.4s,vdig_B.4s,32 - 9 -+ sli vdig_C.4s,vdig_B.4s,9 -+ //B=A -+ mov vdig_B.16b,vdig_A.16b -+ //A=TT1 -+ mov vdig_A.16b,vTT1.16b -+ // H=G -+ mov vdig_H.16b,vdig_G.16b -+ //G = ROTL32(F,19) -+ rol32 dig_G,dig_F,19 -+ //F = E -+ mov vdig_F.16b,vdig_E.16b -+ // E=Target, TT2=src, TT1,SS1,SS2 is free -+ // E = P0(TT2); -+ ushr vSS2.4s, vTT2.4s, 32 - 9 -+ ushr vSS1.4s, vTT2.4s, 32 - 17 -+ sli vSS2.4s, vTT2.4s, 9 -+ sli vSS1.4s, vTT2.4s, 17 -+ eor vdig_E.16b, vTT2.16b, vSS1.16b -+ eor vdig_E.16b, vdig_E.16b, vSS2.16b -+ -+.endm -+ -+//round 12-15 -+.macro sm3_round_12 round:req,plus_4:req,m0,m1,m2,m3,m4 -+ rol32 msg\plus_4,msg\m2,15 -+ eor vmsg\plus_4\().16b,vmsg\plus_4\().16b,vmsg\m0\().16b -+ eor vmsg\plus_4\().16b,vmsg\plus_4\().16b,vmsg\m1\().16b -+ rol32 tmp0,msg\plus_4,15 -+ rol32 word_pair,msg\plus_4,23 -+ eor vmsg\plus_4\().16b,vmsg\plus_4\().16b,vtmp0.16b -+ eor vmsg\plus_4\().16b,vmsg\plus_4\().16b,vword_pair.16b -+ rol32 tmp0,msg\m3,7 -+ eor vmsg\plus_4\().16b,vmsg\plus_4\().16b,vmsg\m4\().16b -+ eor vmsg\plus_4\().16b,vmsg\plus_4\().16b,vtmp0.16b -+ ushr vtmp0.4s,vdig_A.4s,32 - 12 -+ sli vtmp0.4s,vdig_A.4s,12 -+ add vSS1.4s,vdig_E.4s,vTj.4s -+ add vSS2.4s,vSS1.4s,vtmp0.4s //SS1 Done -+ rol32 SS1,SS2,7 -+ eor vSS2.16b,vSS1.16b,vtmp0.16b //SS2 Done -+ eor vword_pair.16b,vmsg\round\().16b,vmsg\plus_4\().16b -+ eor vTT1.16b,vdig_A.16b,vdig_B.16b -+ eor vTT1.16b,vTT1.16b,vdig_C.16b -+ eor vTT2.16b,vdig_E.16b,vdig_F.16b -+ eor vTT2.16b,vTT2.16b,vdig_G.16b -+ add vSS1.4s,vSS1.4s,vmsg\round\().4s -+ add vSS2.4s,vSS2.4s,vword_pair.4s -+ add vTT1.4s,vTT1.4s,vdig_D.4s -+ add vTT2.4s,vTT2.4s,vdig_H.4s -+ ushr vtmp0.4s,vTj.4s,32-1 -+ add vTT1.4s,vTT1.4s,vSS2.4s //TT1 Done -+ sli vtmp0.4s,vTj.4s,1 -+ add vTT2.4s,vTT2.4s,vSS1.4s //TT2 Done -+ mov vTj.16b,vtmp0.16b -+ //D=C -+ mov vdig_D.16b,vdig_C.16b -+ //C = ROTL32(B, 9); -+ ushr vdig_C.4s,vdig_B.4s,32 - 9 -+ sli vdig_C.4s,vdig_B.4s,9 -+ //B=A -+ mov vdig_B.16b,vdig_A.16b -+ //A=TT1 -+ mov vdig_A.16b,vTT1.16b -+ // H=G -+ mov vdig_H.16b,vdig_G.16b -+ //G = ROTL32(F,19) -+ rol32 dig_G,dig_F,19 -+ //F = E -+ mov vdig_F.16b,vdig_E.16b -+ // E=Target, TT2=src, TT1,SS1,SS2 is free -+ // E = P0(TT2); -+ ushr vSS2.4s, vTT2.4s, 32 - 9 -+ ushr vSS1.4s, vTT2.4s, 32 - 17 -+ sli vSS2.4s, vTT2.4s, 9 -+ sli vSS1.4s, vTT2.4s, 17 -+ eor vdig_E.16b, vTT2.16b, vSS1.16b -+ eor vdig_E.16b, vdig_E.16b, vSS2.16b -+.endm -+ -+// round 16-62 -+.macro sm3_round_16 round:req,plus_4:req,m0,m1,m2,m3,m4 -+ rol32 msg\plus_4,msg\m2,15 -+ eor vmsg\plus_4\().16b,vmsg\plus_4\().16b,vmsg\m0\().16b -+ eor vmsg\plus_4\().16b,vmsg\plus_4\().16b,vmsg\m1\().16b -+ rol32 tmp0,msg\plus_4,15 -+ rol32 word_pair,msg\plus_4,23 -+ eor vmsg\plus_4\().16b,vmsg\plus_4\().16b,vtmp0.16b -+ eor vmsg\plus_4\().16b,vmsg\plus_4\().16b,vword_pair.16b -+ rol32 tmp0,msg\m3,7 -+ eor vmsg\plus_4\().16b,vmsg\plus_4\().16b,vmsg\m4\().16b -+ eor vmsg\plus_4\().16b,vmsg\plus_4\().16b,vtmp0.16b -+ ushr vtmp0.4s,vdig_A.4s,32 - 12 -+ sli vtmp0.4s,vdig_A.4s,12 -+ add vSS1.4s,vdig_E.4s,vTj.4s -+ add vSS2.4s,vSS1.4s,vtmp0.4s //SS1 Done -+ rol32 SS1,SS2,7 -+ eor vSS2.16b,vSS1.16b,vtmp0.16b //SS2 Done -+ eor vword_pair.16b,vmsg\round\().16b,vmsg\plus_4\().16b -+ mov vTT2.16b,vdig_E.16b -+ orr vTT1.16b,vdig_B.16b,vdig_C.16b -+ and vtmp0.16b,vdig_B.16b,vdig_C.16b -+ bsl vTT2.16b,vdig_F.16b,vdig_G.16b -+ and vTT1.16b,vTT1.16b,vdig_A.16b -+ add vSS1.4s,vSS1.4s,vmsg\round\().4s -+ orr vTT1.16b,vTT1.16b,vtmp0.16b -+ add vSS2.4s,vSS2.4s,vword_pair.4s -+ add vTT1.4s,vTT1.4s,vdig_D.4s -+ add vTT2.4s,vTT2.4s,vdig_H.4s -+ ushr vtmp0.4s,vTj.4s,32-1 -+ add vTT1.4s,vTT1.4s,vSS2.4s //TT1 Done -+ sli vtmp0.4s,vTj.4s,1 -+ add vTT2.4s,vTT2.4s,vSS1.4s //TT2 Done -+ mov vTj.16b,vtmp0.16b -+ //D=C -+ mov vdig_D.16b,vdig_C.16b -+ //C = ROTL32(B, 9); -+ ushr vdig_C.4s,vdig_B.4s,32 - 9 -+ sli vdig_C.4s,vdig_B.4s,9 -+ //B=A -+ mov vdig_B.16b,vdig_A.16b -+ //A=TT1 -+ mov vdig_A.16b,vTT1.16b -+ // H=G -+ mov vdig_H.16b,vdig_G.16b -+ //G = ROTL32(F,19) -+ rol32 dig_G,dig_F,19 -+ //F = E -+ mov vdig_F.16b,vdig_E.16b -+ // E=Target, TT2=src, TT1,SS1,SS2 is free -+ // E = P0(TT2); -+ ushr vSS2.4s, vTT2.4s, 32 - 9 -+ ushr vSS1.4s, vTT2.4s, 32 - 17 -+ sli vSS2.4s, vTT2.4s, 9 -+ sli vSS1.4s, vTT2.4s, 17 -+ eor vdig_E.16b, vTT2.16b, vSS1.16b -+ eor vdig_E.16b, vdig_E.16b, vSS2.16b -+.endm -+ -+//round 63 -+.macro sm3_round_63 round:req,plus_4:req,m0,m1,m2,m3,m4 -+ rol32 msg\plus_4,msg\m2,15 -+ eor vmsg\plus_4\().16b,vmsg\plus_4\().16b,vmsg\m0\().16b -+ eor vmsg\plus_4\().16b,vmsg\plus_4\().16b,vmsg\m1\().16b -+ rol32 tmp0,msg\plus_4,15 -+ rol32 word_pair,msg\plus_4,23 -+ eor vmsg\plus_4\().16b,vmsg\plus_4\().16b,vtmp0.16b -+ eor vmsg\plus_4\().16b,vmsg\plus_4\().16b,vword_pair.16b -+ rol32 tmp0,msg\m3,7 -+ eor vmsg\plus_4\().16b,vmsg\plus_4\().16b,vmsg\m4\().16b -+ eor vmsg\plus_4\().16b,vmsg\plus_4\().16b,vtmp0.16b -+ ushr vtmp0.4s,vdig_A.4s,32 - 12 -+ sli vtmp0.4s,vdig_A.4s,12 -+ add vSS1.4s,vdig_E.4s,vTj.4s -+ add vSS2.4s,vSS1.4s,vtmp0.4s //SS1 Done -+ rol32 SS1,SS2,7 -+ eor vSS2.16b,vSS1.16b,vtmp0.16b //SS2 Done -+ eor vword_pair.16b,vmsg\round\().16b,vmsg\plus_4\().16b -+ -+ ldp qmsg0,qmsg1,[sp,dig_off+ 0] -+ mov vTT2.16b,vdig_E.16b -+ ldp qmsg2,qmsg3,[sp,dig_off+ 32] -+ orr vTT1.16b,vdig_B.16b,vdig_C.16b -+ ldp qmsg4,qmsg5,[sp,dig_off+ 64] -+ and vtmp0.16b,vdig_B.16b,vdig_C.16b -+ bsl vTT2.16b,vdig_F.16b,vdig_G.16b -+ ldp qmsg6,qmsg7,[sp,dig_off+ 96] -+ and vTT1.16b,vTT1.16b,vdig_A.16b -+ add vSS1.4s,vSS1.4s,vmsg\round\().4s -+ orr vTT1.16b,vTT1.16b,vtmp0.16b -+ add vSS2.4s,vSS2.4s,vword_pair.4s -+ add vTT1.4s,vTT1.4s,vdig_D.4s -+ add vTT2.4s,vTT2.4s,vdig_H.4s -+ add vTT1.4s,vTT1.4s,vSS2.4s //TT1 Done -+ add vTT2.4s,vTT2.4s,vSS1.4s //TT2 Done -+ //D=C -+ eor vdig_D.16b,vdig_C.16b,vmsg3.16b -+ //C = ROTL32(B, 9); -+ ushr vdig_C.4s,vdig_B.4s,32 - 9 -+ sli vdig_C.4s,vdig_B.4s,9 -+ eor vdig_C.16b,vdig_C.16b,vmsg2.16b -+ //B=A -+ eor vdig_B.16b,vdig_A.16b,vmsg1.16b -+ stp qdig_C,qdig_D,[sp,dig_off+ 32] -+ //A=TT1 -+ eor vdig_A.16b,vTT1.16b,vmsg0.16b -+ // H=G -+ eor vdig_H.16b,vdig_G.16b,vmsg7.16b -+ stp qdig_A,qdig_B,[sp,dig_off+ 0] -+ //G = ROTL32(F,19) -+ rol32 dig_G,dig_F,19 -+ eor vdig_G.16b,vdig_G.16b,vmsg6.16b -+ //F = E -+ eor vdig_F.16b,vdig_E.16b,vmsg5.16b -+ stp qdig_G,qdig_H,[sp,dig_off+ 96] -+ // E=Target, TT2=src, TT1,SS1,SS2 is free -+ // E = P0(TT2); -+ ushr vSS2.4s, vTT2.4s, 32 - 9 -+ ushr vSS1.4s, vTT2.4s, 32 - 17 -+ sli vSS2.4s, vTT2.4s, 9 -+ sli vSS1.4s, vTT2.4s, 17 -+ eor vdig_E.16b, vTT2.16b, vSS1.16b -+ eor vdig_E.16b, vdig_E.16b, vSS2.16b -+ eor vdig_E.16b, vdig_E.16b, vmsg4.16b -+ stp qdig_E,qdig_F,[sp,dig_off+ 64] -+.endm -+ -+ .set dig_off , 80 -+ -+#define STACK_SIZE 224 -+ .global sm3_mb_asimd_x4 -+ .type sm3_mb_asimd_x4, %function -+sm3_mb_asimd_x4: -+ stp x29,x30, [sp,-STACK_SIZE]! -+ cmp len,0 -+ //push d8~d15 -+ ldr job0_data, [job0],64 -+ stp d8,d9, [sp,16] -+ ldr job1_data, [job1],64 -+ stp d10,d11,[sp,32] -+ ldr job2_data, [job2],64 -+ stp d12,d13,[sp,48] -+ ldr job3_data, [job3],64 -+ stp d14,d15,[sp,64] -+ ble .exit_func -+ -+ mov job0_tmp,job0_digest -+ mov job1_tmp,job1_digest -+ mov job2_tmp,job2_digest -+ mov job3_tmp,job3_digest -+ //load digests -+ ld4 {vdig_A.s-vdig_D.s}[0],[job0_tmp],16 -+ ld4 {vdig_A.s-vdig_D.s}[1],[job1_tmp],16 -+ ld4 {vdig_A.s-vdig_D.s}[2],[job2_tmp],16 -+ adrp const_adr, .consts -+ ld4 {vdig_A.s-vdig_D.s}[3],[job3_tmp],16 -+ add const_adr, const_adr, #:lo12:.consts -+ ld4 {vdig_E.s-vdig_H.s}[0],[job0_tmp] -+ rev32 vdig_A.16b,vdig_A.16b -+ ld4 {vdig_E.s-vdig_H.s}[1],[job1_tmp] -+ rev32 vdig_B.16b,vdig_B.16b -+ ld4 {vdig_E.s-vdig_H.s}[2],[job2_tmp] -+ rev32 vdig_C.16b,vdig_C.16b -+ ld4 {vdig_E.s-vdig_H.s}[3],[job3_tmp] -+ rev32 vdig_D.16b,vdig_D.16b -+ stp qdig_A,qdig_B,[sp,dig_off+ 0] -+ rev32 vdig_E.16b,vdig_E.16b -+ rev32 vdig_F.16b,vdig_F.16b -+ stp qdig_C,qdig_D,[sp,dig_off+ 32] -+ rev32 vdig_G.16b,vdig_G.16b -+ rev32 vdig_H.16b,vdig_H.16b -+ stp qdig_E,qdig_F,[sp,dig_off+ 64] -+ stp qdig_G,qdig_H,[sp,dig_off+ 96] -+ -+.start_loop: -+ ld4 {vmsg0.s-vmsg3.s}[0],[job0_data],16 -+ ld4 {vmsg0.s-vmsg3.s}[1],[job1_data],16 -+ ld4 {vmsg0.s-vmsg3.s}[2],[job2_data],16 -+ ld4 {vmsg0.s-vmsg3.s}[3],[job3_data],16 -+ ld4 {vmsg4.s-vmsg7.s}[0],[job0_data],16 -+ ld4 {vmsg4.s-vmsg7.s}[1],[job1_data],16 -+ ld4 {vmsg4.s-vmsg7.s}[2],[job2_data],16 -+ ld4 {vmsg4.s-vmsg7.s}[3],[job3_data],16 -+ ld4 {vmsg8.s-vmsg11.16b}[0],[job0_data],16 -+ ldr qTj,[const_adr] -+ -+ sm3_round_0 0, 4 -+ -+ ld4 {vmsg8.s-vmsg11.s}[1],[job1_data],16 -+ sm3_round_0 1, 5 -+ -+ ld4 {vmsg8.s-vmsg11.s}[2],[job2_data],16 -+ sm3_round_0 2, 6 -+ ld4 {vmsg8.s-vmsg11.s}[3],[job3_data],16 -+ sm3_round_0 3, 7 -+ -+ ld4 {vmsg12.s-vmsg15.s}[0],[job0_data],16 -+ -+ sm3_round_4 4, 8 -+ ld4 {vmsg12.s-vmsg15.s}[1],[job1_data],16 -+ sm3_round_4 5, 9 -+ ld4 {vmsg12.s-vmsg15.s}[2],[job2_data],16 -+ sm3_round_4 6,10 -+ ld4 {vmsg12.s-vmsg15.s}[3],[job3_data],16 -+ sm3_round_4 7,11 -+ sm3_round_4 8,12 -+ sm3_round_4 9,13 -+ sm3_round_4 10,14 -+ sm3_round_4 11,15 -+ -+ sm3_round_12 12,16, 0, 7,13, 3,10 //12 -+ sm3_round_12 13, 0, 1, 8,14, 4,11 //13 -+ sm3_round_12 14, 1, 2, 9,15, 5,12 //14 -+ sm3_round_12 15, 2, 3,10,16, 6,13 //15 -+ -+ ldr qTj,[const_adr,16] -+ sm3_round_16 16, 3, 4,11, 0, 7,14 //16 -+#if 0 -+ stp sdig_A,sdig_B,[job0_digest] -+ stp sdig_C,sdig_D,[job0_digest,8] -+ stp sdig_E,sdig_F,[job0_digest,16] -+ stp sdig_G,sdig_H,[job0_digest,24] -+ b .exit_func -+#endif -+ sm3_round_16 0, 4, 5,12, 1, 8,15 //17 -+ -+ sm3_round_16 1, 5, 6,13, 2, 9,16 //18 -+ sm3_round_16 2, 6, 7,14, 3,10, 0 //19 -+ sm3_round_16 3, 7, 8,15, 4,11, 1 //20 -+ sm3_round_16 4, 8, 9,16, 5,12, 2 //21 -+ sm3_round_16 5, 9,10, 0, 6,13, 3 //22 -+ sm3_round_16 6,10,11, 1, 7,14, 4 //23 -+ sm3_round_16 7,11,12, 2, 8,15, 5 //24 -+ sm3_round_16 8,12,13, 3, 9,16, 6 //25 -+ sm3_round_16 9,13,14, 4,10, 0, 7 //26 -+ sm3_round_16 10,14,15, 5,11, 1, 8 //27 -+ sm3_round_16 11,15,16, 6,12, 2, 9 //28 -+ sm3_round_16 12,16, 0, 7,13, 3,10 //29 -+ sm3_round_16 13, 0, 1, 8,14, 4,11 //30 -+ sm3_round_16 14, 1, 2, 9,15, 5,12 //31 -+ sm3_round_16 15, 2, 3,10,16, 6,13 //32 -+ sm3_round_16 16, 3, 4,11, 0, 7,14 //33 -+ sm3_round_16 0, 4, 5,12, 1, 8,15 //34 -+ sm3_round_16 1, 5, 6,13, 2, 9,16 //35 -+ sm3_round_16 2, 6, 7,14, 3,10, 0 //36 -+ sm3_round_16 3, 7, 8,15, 4,11, 1 //37 -+ sm3_round_16 4, 8, 9,16, 5,12, 2 //38 -+ sm3_round_16 5, 9,10, 0, 6,13, 3 //39 -+ sm3_round_16 6,10,11, 1, 7,14, 4 //40 -+ sm3_round_16 7,11,12, 2, 8,15, 5 //41 -+ sm3_round_16 8,12,13, 3, 9,16, 6 //42 -+ sm3_round_16 9,13,14, 4,10, 0, 7 //43 -+ sm3_round_16 10,14,15, 5,11, 1, 8 //44 -+ sm3_round_16 11,15,16, 6,12, 2, 9 //45 -+ sm3_round_16 12,16, 0, 7,13, 3,10 //46 -+ sm3_round_16 13, 0, 1, 8,14, 4,11 //47 -+ sm3_round_16 14, 1, 2, 9,15, 5,12 //48 -+ sm3_round_16 15, 2, 3,10,16, 6,13 //49 -+ sm3_round_16 16, 3, 4,11, 0, 7,14 //50 -+ sm3_round_16 0, 4, 5,12, 1, 8,15 //51 -+ sm3_round_16 1, 5, 6,13, 2, 9,16 //52 -+ sm3_round_16 2, 6, 7,14, 3,10, 0 //53 -+ sm3_round_16 3, 7, 8,15, 4,11, 1 //54 -+ sm3_round_16 4, 8, 9,16, 5,12, 2 //55 -+ sm3_round_16 5, 9,10, 0, 6,13, 3 //56 -+ sm3_round_16 6,10,11, 1, 7,14, 4 //57 -+ sm3_round_16 7,11,12, 2, 8,15, 5 //58 -+ sm3_round_16 8,12,13, 3, 9,16, 6 //59 -+ sm3_round_16 9,13,14, 4,10, 0, 7 //60 -+ sm3_round_16 10,14,15, 5,11, 1, 8 //61 -+ sm3_round_16 11,15,16, 6,12, 2, 9 //62 -+ sm3_round_63 12,16, 0, 7,13, 3,10 //63 -+ -+ subs len,len,1 -+ bne .start_loop -+ -+ //save digests with big endian -+ rev32 vdig_A.16b,vdig_A.16b -+ rev32 vdig_B.16b,vdig_B.16b -+ rev32 vdig_C.16b,vdig_C.16b -+ rev32 vdig_D.16b,vdig_D.16b -+ st4 {vdig_A.s-vdig_D.s}[0],[job0_digest],16 -+ rev32 vdig_E.16b,vdig_E.16b -+ rev32 vdig_F.16b,vdig_F.16b -+ st4 {vdig_A.s-vdig_D.s}[1],[job1_digest],16 -+ rev32 vdig_G.16b,vdig_G.16b -+ rev32 vdig_H.16b,vdig_H.16b -+ st4 {vdig_A.s-vdig_D.s}[2],[job2_digest],16 -+ st4 {vdig_A.s-vdig_D.s}[3],[job3_digest],16 -+ st4 {vdig_E.s-vdig_H.s}[0],[job0_digest] -+ st4 {vdig_E.s-vdig_H.s}[1],[job1_digest] -+ st4 {vdig_E.s-vdig_H.s}[2],[job2_digest] -+ st4 {vdig_E.s-vdig_H.s}[3],[job3_digest] -+ -+.exit_func: -+ ldp d8, d9, [sp,16] -+ ldp d10,d11,[sp,32] -+ ldp d12,d13,[sp,48] -+ ldp d14,d15,[sp,64] -+ ldp x29, x30, [sp], STACK_SIZE -+ ret -+.consts: -+ .word 0x79cc4519 -+ .word 0x79cc4519 -+ .word 0x79cc4519 -+ .word 0x79cc4519 -+ .word 0x9d8a7a87 -+ .word 0x9d8a7a87 -+ .word 0x9d8a7a87 -+ .word 0x9d8a7a87 -+ .size sm3_mb_asimd_x4, .-sm3_mb_asimd_x4 -+ -diff --git a/drv/hash_mb/sm3_mb_sve.S b/drv/hash_mb/sm3_mb_sve.S -new file mode 100644 -index 0000000..7dd2428 ---- /dev/null -+++ b/drv/hash_mb/sm3_mb_sve.S -@@ -0,0 +1,161 @@ -+/********************************************************************** -+ Copyright(c) 2022 Arm Corporation All rights reserved. -+ -+ Redistribution and use in source and binary forms, with or without -+ modification, are permitted provided that the following conditions -+ are met: -+ * Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ * Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in -+ the documentation and/or other materials provided with the -+ distribution. -+ * Neither the name of Arm Corporation nor the names of its -+ contributors may be used to endorse or promote products derived -+ from this software without specific prior written permission. -+ -+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+**********************************************************************/ -+ .arch armv8.2-a+sve -+ -+.macro copy_mb_16words vecs:req,dest:req -+ mov src,\vecs -+ mov dst,\dest -+ mov ctr,lanes -+1: -+ ldr tmp,[src],8 -+ ldr tmp,[tmp] -+ add tmp,tmp,block_ctr,lsl 6 -+ ld1 {TMPV0.4s,TMPV1.4s,TMPV2.4s,TMPV3.4s}, [tmp] -+ st1 {TMPV0.4s,TMPV1.4s,TMPV2.4s,TMPV3.4s}, [dst],64 -+ subs ctr,ctr,1 -+ b.ne 1b -+.endm -+ -+.macro load_words windex:req -+ .if \windex == 0 -+ mov tmpw,16 -+ index VOFFS.s,0,tmpw -+ copy_mb_16words job_vec,databuf -+ mov dataptr,databuf -+ .endif -+ ld1w { WORD\windex\().s}, p0/z, [dataptr, VOFFS.s, UXTW 2] -+ add dataptr,dataptr,4 -+.endm -+ -+#include "sm3_sve_common.S" -+ -+/* int sm3_mb_sve_max_lanes() -+ * return : max lanes of SVE vector -+ */ -+ .global sm3_mb_sve_max_lanes -+ .type sm3_mb_sve_max_lanes, %function -+sm3_mb_sve_max_lanes: -+ cntw x0 -+ ret -+ .size sm3_mb_sve_max_lanes, .-sm3_mb_sve_max_lanes -+/* -+ * void sm3_mb_sve(int blocks, int total_lanes, SM3_JOB **job_vec) -+ */ -+ num_blocks .req w0 -+ total_lanes .req w1 -+ job_vec .req x2 -+ lanes .req x4 -+ src .req x5 -+ dst .req x6 -+ lane_offset .req w7 -+ lane_offset_x .req x7 -+ tmp .req x8 -+ tmpw .req w8 -+ block_ctr .req x9 -+ block_ctr_w .req w9 -+ savedsp .req x10 -+ databuf .req x11 -+ dataptr .req x12 -+ efgh_buf .req x12 -+ ctr .req x13 -+ abcd_buf .req x14 -+ sm3const_adr .req x15 -+ -+ .global sm3_mb_sve -+ .type sm3_mb_sve, %function -+sm3_mb_sve: -+ cbz num_blocks,.return -+ sm3_sve_save_stack -+ mov savedsp,sp -+ mov lane_offset, #0 -+ whilelo p0.s, wzr, total_lanes -+ // reserve (32 * max lanes) for abcdefgh buf -+ cntw tmp -+ lsl tmp, tmp, 5 -+ sub abcd_buf,sp,tmp -+ mov tmp,63 -+ bic abcd_buf,abcd_buf,tmp -+ // reserve (64 * lanes) for data buf -+ cntp lanes,p0,p0.s -+ lsl tmp,lanes,6 -+ sub databuf,abcd_buf,tmp -+ mov sp,databuf -+ adr sm3const_adr,SM3_CONSTS -+.seg_loops: -+ mov src,job_vec -+ mov dst,abcd_buf -+ cntp lanes,p0,p0.s -+ add efgh_buf,abcd_buf,lanes,lsl 4 -+ mov ctr,lanes -+.ldr_hash: -+ ldr tmp,[src],8 -+ add tmp,tmp,64 -+ ld1 {v0.16b, v1.16b},[tmp] -+ rev32 v0.16b,v0.16b -+ rev32 v1.16b,v1.16b -+ st1 {v0.16b},[dst],16 -+ st1 {v1.16b},[efgh_buf],16 -+ subs ctr,ctr,1 -+ bne .ldr_hash -+ ld4w {VA.s,VB.s,VC.s,VD.s},p0/z,[abcd_buf] -+ add tmp,abcd_buf,lanes,lsl 4 -+ ld4w {VE.s,VF.s,VG.s,VH.s},p0/z,[tmp] -+ mov block_ctr,0 -+ // always unpredicated SVE mode in current settings -+ pred_mode=0 -+.block_loop: -+ sm3_single -+ add block_ctr, block_ctr, 1 -+ cmp block_ctr_w,num_blocks -+ bne .block_loop -+ st4w {VA.s,VB.s,VC.s,VD.s},p0,[abcd_buf] -+ add efgh_buf,abcd_buf,lanes,lsl 4 -+ st4w {VE.s,VF.s,VG.s,VH.s},p0,[efgh_buf] -+ mov dst,job_vec -+ mov src,abcd_buf -+ add job_vec,job_vec,lanes,lsl 3 -+ mov ctr,lanes -+.str_hash: -+ ld1 {v0.16b},[src],16 -+ ld1 {v1.16b},[efgh_buf],16 -+ rev32 v0.16b,v0.16b -+ rev32 v1.16b,v1.16b -+ ldr tmp,[dst],8 -+ add tmp,tmp,64 -+ st1 {v0.16b,v1.16b},[tmp] -+ subs ctr,ctr,1 -+ bne .str_hash -+ incw lane_offset_x -+ whilelo p0.s, lane_offset, total_lanes -+ b.mi .seg_loops -+ mov sp,savedsp -+ sm3_sve_restore_stack -+.return: -+ ret -+ .size sm3_mb_sve, .-sm3_mb_sve -diff --git a/drv/hash_mb/sm3_sve_common.S b/drv/hash_mb/sm3_sve_common.S -new file mode 100644 -index 0000000..3d54952 ---- /dev/null -+++ b/drv/hash_mb/sm3_sve_common.S -@@ -0,0 +1,505 @@ -+/********************************************************************** -+ Copyright(c) 2022 Arm Corporation All rights reserved. -+ -+ Redistribution and use in source and binary forms, with or without -+ modification, are permitted provided that the following conditions -+ are met: -+ * Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ * Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in -+ the documentation and/or other materials provided with the -+ distribution. -+ * Neither the name of Arm Corporation nor the names of its -+ contributors may be used to endorse or promote products derived -+ from this software without specific prior written permission. -+ -+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+**********************************************************************/ -+ VA .req z0 -+ VB .req z1 -+ VC .req z2 -+ VD .req z3 -+ VE .req z4 -+ VF .req z5 -+ VG .req z6 -+ VH .req z7 -+ TMPV0 .req v8 -+ TMPV1 .req v9 -+ TMPV2 .req v10 -+ TMPV3 .req v11 -+ WORD0 .req z8 -+ WORD1 .req z9 -+ WORD2 .req z10 -+ WORD3 .req z11 -+ WORD4 .req z12 -+ WORD5 .req z13 -+ WORD6 .req z14 -+ WORD7 .req z15 -+ WORD8 .req z16 -+ WORD9 .req z17 -+ WORD10 .req z18 -+ WORD11 .req z19 -+ WORD12 .req z20 -+ WORD13 .req z21 -+ WORD14 .req z22 -+ WORD15 .req z23 -+ WORD16 .req z24 -+ VOFFS .req z24 // reuse WORD16 -+ SS1 .req z25 -+ SS2 .req z26 -+ VT .req z26 // reuse SS2 -+ TT2 .req z27 -+ VT1 .req z28 -+ VT2 .req z29 -+ VT3 .req z30 -+ VT4 .req z31 -+ VZERO .req z31 -+ TT .req z0 -+ -+.macro sve_op inst:req,regd,args:vararg -+ .if pred_mode == 1 -+ \inst \regd,p0/m,\args -+ .else -+ \inst \regd,\args -+ .endif -+.endm -+ -+.macro sve_bitop inst:req,regd:req,regm:req -+ .if pred_mode == 1 -+ \inst \regd\().s,p0/m,\regd\().s,\regm\().s -+ .else -+ \inst \regd\().d,\regd\().d,\regm\().d -+ .endif -+.endm -+ -+.macro rotate_left0 out:req,in:req,tmp:req,bits:req,args:vararg -+ .if have_sve2 == 0 -+ lsl \tmp\().s,\in\().s,\bits -+ .else -+ movprfx \out\().d,\in\().d -+ xar \out\().s,\out\().s,VZERO.s,32-\bits -+ .endif -+ -+ .ifnb \args -+ rotate_left0 \args -+ .endif -+.endm -+ -+.macro rotate_left1 out:req,in:req,tmp:req,bits:req,args:vararg -+ .if have_sve2 == 0 -+ lsr \out\().s,\in\().s,32-\bits -+ .endif -+ -+ .ifnb \args -+ rotate_left1 \args -+ .endif -+.endm -+ -+.macro rotate_left2 out:req,in:req,tmp:req,bits:req,args:vararg -+ .if have_sve2 == 0 -+ orr \out\().d,\out\().d,\tmp\().d -+ .endif -+ -+ .ifnb \args -+ rotate_left2 \args -+ .endif -+.endm -+ -+.macro rotate_left args:vararg -+ rotate_left0 \args -+ rotate_left1 \args -+ rotate_left2 \args -+.endm -+ -+.macro SVE_EOR3 rd:req,r1:req,r2:req -+ .if have_sve2 == 0 -+ sve_bitop eor,\rd,\r1 -+ sve_bitop eor,\rd,\r2 -+ .else -+ eor3 \rd\().d,\rd\().d,\r1\().d,\r2\().d -+ .endif -+.endm -+ -+.macro FUNC_EOR3 ret:req,x:req,y:req,z:req -+ .if have_sve2 == 0 -+ eor \ret\().d,\x\().d,\y\().d -+ sve_bitop eor,\ret,\z -+ .else -+ movprfx \ret\().d,\x\().d -+ eor3 \ret\().d,\ret\().d,\y\().d,\z\().d -+ .endif -+.endm -+ -+.macro FUNC_FF windex:req,ret:req,x:req,y:req,z:req,tmp1:req,tmp2:req -+ and \ret\().d,\x\().d,\y\().d -+ and \tmp1\().d,\x\().d,\z\().d -+ and \tmp2\().d,\y\().d,\z\().d -+ sve_bitop orr,\ret,\tmp1 -+ sve_bitop orr,\ret,\tmp2 -+.endm -+ -+.macro FUNC_BSL ret:req,x:req,y:req,z:req,tmp:req -+ .if have_sve2 == 0 -+ bic \ret\().d,\z\().d,\x\().d -+ and \tmp\().d,\x\().d,\y\().d -+ sve_bitop orr,\ret,\tmp -+ .else -+ movprfx \ret\().d,\x\().d -+ bsl \ret\().d,\ret\().d,\y\().d,\z\().d -+ .endif -+.endm -+ -+.altmacro -+.macro load_next_words windex -+ .if \windex < 16 -+ load_words \windex -+ .endif -+.endm -+ -+.macro SM3_STEP_00_11 windex:req,w:req,w4:req -+ // SS1 = rol32(rol32(a, 12) + e + rol32(T, (j % 32)), 7) -+ ld1rw {VT2.s},p0/z,[sm3const_adr,\windex * 4] -+ rotate_left SS1,VA,VT1,12 -+ mov SS2.s,p0/m,SS1.s -+ sve_op add,SS1.s,SS1.s,VE.s -+ sve_op add,SS1.s,SS1.s,VT2.s -+ rotate_left SS1,SS1,VT2,7 -+ // d <- TT2 = GG(index, e, f, g) + h + SS1 + W[index] -+ add VT2.s,\w\().s,VH.s -+ FUNC_EOR3 TT2,VE,VF,VG -+ // SS2 = SS1 ^ rol32(a, 12) -+ sve_bitop eor,SS2,SS1 -+ sve_op add,TT2.s,TT2.s,VT2.s -+ // h <- TT1 = FF(index, a, b, c) + d + SS2 + WB[index] -+ FUNC_EOR3 VH,VA,VB,VC -+ eor VT1.d,\w\().d,\w4\().d -+ sve_op add,VH.s,VH.s,VD.s -+ sve_op add,VH.s,VH.s,VT1.s -+ add VD.s,TT2.s,SS1.s -+ sve_op add,VH.s,VH.s,SS2.s -+ // d = P0(TT2) -+ rotate_left VT1,VD,VT2,9,VT3,VD,VT4,17 -+ SVE_EOR3 VD,VT1,VT3 -+ // b = rol32(b, 9) -+ // f = rol32(f, 19) -+ rotate_left VB,VB,VT3,9,VF,VF,VT4,19 -+.endm -+ -+.macro SM3_STEP_12_15 windex:req,w:req,w4:req,w16:req,w13:req,w9:req,w6:req,w3:req -+ // SS1 = rol32(rol32(a, 12) + e + rol32(T, (j % 32)), 7) -+ rotate_left VT,\w3,VT1,15,\w4,\w13,VT2,7,SS1,VA,VT3,12 -+ ld1rw {VT1.s},p0/z,[sm3const_adr,\windex * 4] -+ mov TT2.s,p0/m,SS1.s -+ sve_bitop eor,VT,\w16 -+ sve_op add,SS1.s,SS1.s,VE.s -+ sve_bitop eor,VT,\w9 -+ sve_op add,SS1.s,SS1.s,VT1.s -+ rotate_left VT1,VT,VT2,15,VT3,VT,VT4,23 -+ SVE_EOR3 VT,VT1,VT3 -+ rotate_left SS1,SS1,VT2,7 -+ sve_bitop eor,\w4,VT -+ // SS2 = SS1 ^ rol32(a, 12) -+ eor SS2.d,TT2.d,SS1.d -+ sve_bitop eor,\w4,\w6 -+ // d <- TT2 = GG(index, e, f, g) + h + SS1 + W[index] -+ FUNC_EOR3 TT2,VE,VF,VG -+ add VT1.s,\w\().s,VH.s -+ sve_op add,TT2.s,TT2.s,VT1.s -+ // h <- TT1 = FF(index, a, b, c) + d + SS2 + WB[index] -+ FUNC_EOR3 VH,VA,VB,VC -+ eor VT1.d,\w\().d,\w4\().d -+ sve_op add,VH.s,VH.s,VD.s -+ // b = rol32(b, 9) -+ // f = rol32(f, 19) -+ rotate_left VB,VB,VT3,9 -+ sve_op add,VH.s,VH.s,VT1.s -+ add VD.s,TT2.s,SS1.s -+ sve_op add,VH.s,VH.s,SS2.s -+ // d = P0(TT2) -+ rotate_left VT1,VD,VT2,9,VT3,VD,VT4,17,VF,VF,TT2,19 -+ SVE_EOR3 VD,VT1,VT3 -+.endm -+ -+.macro SM3_STEP_16_62 windex:req,w:req,w4:req,w16:req,w13:req,w9:req,w6:req,w3:req -+ // SS1 = rol32(rol32(a, 12) + e + rol32(T, (j % 32)), 7) -+ rotate_left VT,\w3,VT1,15,\w4,\w13,VT2,7,SS1,VA,VT3,12 -+ ld1rw {VT1.s},p0/z,[sm3const_adr,\windex * 4] -+ mov TT2.s,p0/m,SS1.s -+ sve_bitop eor,VT,\w16 -+ sve_op add,SS1.s,SS1.s,VE.s -+ sve_bitop eor,VT,\w9 -+ sve_op add,SS1.s,SS1.s,VT1.s -+ rotate_left VT1,VT,VT2,15,VT3,VT,VT4,23 -+ SVE_EOR3 \w4,VT,VT1 -+ rotate_left SS1,SS1,VT2,7 -+ sve_bitop eor,\w4,VT3 -+ // SS2 = SS1 ^ rol32(a, 12) -+ eor SS2.d,TT2.d,SS1.d -+ sve_bitop eor,\w4,\w6 -+ // d <- TT2 = GG(index, e, f, g) + h + SS1 + W[index] -+ sve_op add,SS1.s,SS1.s,\w\().s -+ FUNC_BSL TT2,VE,VF,VG,VT1 -+ sve_op add,SS1.s,SS1.s,VH.s -+ // h <- TT1 = FF(index, a, b, c) + d + SS2 + WB[index] -+ FUNC_FF \windex,VH,VA,VB,VC,VT1,VT2 -+ eor VT1.d,\w\().d,\w4\().d -+ sve_op add,VH.s,VH.s,VD.s -+ // b = rol32(b, 9) -+ // f = rol32(f, 19) -+ rotate_left VB,VB,VT2,9,VF,VF,VT4,19 -+ sve_op add,VH.s,VH.s,VT1.s -+ add VD.s,TT2.s,SS1.s -+ sve_op add,VH.s,VH.s,SS2.s -+ // d = P0(TT2) -+ rotate_left VT1,VD,VT2,9,VT3,VD,VT4,17 -+ SVE_EOR3 VD,VT1,VT3 -+.endm -+ -+.macro SM3_STEP_63 windex:req,w:req,w4:req,w16:req,w13:req,w9:req,w6:req,w3:req -+ // SS1 = rol32(rol32(a, 12) + e + rol32(T, (j % 32)), 7) -+ rotate_left VT,\w3,VT1,15,\w4,\w13,VT2,7,SS1,VA,VT3,12 -+ ld1rw {VT1.s},p0/z,[sm3const_adr,\windex * 4] -+ mov TT2.s,p0/m,SS1.s -+ sve_bitop eor,VT,\w16 -+ sve_op add,SS1.s,SS1.s,VE.s -+ sve_bitop eor,VT,\w9 -+ sve_op add,SS1.s,SS1.s,VT1.s -+ rotate_left VT1,VT,VT2,15,VT3,VT,VT4,23 -+ SVE_EOR3 VT,VT1,VT3 -+ rotate_left SS1,SS1,VT2,7 -+ sve_bitop eor,\w4,VT -+ // SS2 = SS1 ^ rol32(a, 12) -+ eor SS2.d,TT2.d,SS1.d -+ sve_bitop eor,\w4,\w6 -+ // d <- TT2 = GG(index, e, f, g) + h + SS1 + W[index] -+ FUNC_BSL TT2,VE,VF,VG,VT1 -+ add VT1.s,\w\().s,VH.s -+ .if \windex == 63 -+ ld1w {WORD0.s},p0/z,[abcd_buf, 0, MUL VL] -+ ld1w {WORD1.s},p0/z,[abcd_buf, 1, MUL VL] -+ ld1w {WORD2.s},p0/z,[abcd_buf, 2, MUL VL] -+ ld1w {WORD3.s},p0/z,[abcd_buf, 3, MUL VL] -+ ld1w {WORD4.s},p0/z,[abcd_buf, 4, MUL VL] -+ ld1w {WORD5.s},p0/z,[abcd_buf, 5, MUL VL] -+ ld1w {WORD6.s},p0/z,[abcd_buf, 6, MUL VL] -+ ld1w {WORD7.s},p0/z,[abcd_buf, 7, MUL VL] -+ .endif -+ sve_op add,TT2.s,TT2.s,VT1.s -+ // h <- TT1 = FF(index, a, b, c) + d + SS2 + WB[index] -+ FUNC_FF \windex,VH,VA,VB,VC,VT1,VT2 -+ eor VT1.d,\w\().d,\w4\().d -+ sve_op add,VH.s,VH.s,VD.s -+ // b = rol32(b, 9) -+ // f = rol32(f, 19) -+ rotate_left VB,VB,VT2,9,VF,VF,VT4,19 -+ sve_op add,VH.s,VH.s,VT1.s -+ add VD.s,TT2.s,SS1.s -+ sve_bitop eor,VA,WORD1 -+ sve_bitop eor,VB,WORD2 -+ sve_bitop eor,VC,WORD3 -+ // d = P0(TT2) -+ rotate_left VT1,VD,VT2,9,VT3,VD,VT4,17 -+ sve_bitop eor,VF,WORD6 -+ SVE_EOR3 VD,VT1,VT3 -+ sve_bitop eor,VG,WORD7 -+ sve_bitop eor,VD,WORD4 -+ sve_op add,VH.s,VH.s,SS2.s -+ sve_bitop eor,VE,WORD5 -+ sve_bitop eor,VH,WORD0 -+.endm -+ -+.macro SWAP_STATES -+ .unreq TT -+ TT .req VH -+ .unreq VH -+ VH .req VG -+ .unreq VG -+ VG .req VF -+ .unreq VF -+ VF .req VE -+ .unreq VE -+ VE .req VD -+ .unreq VD -+ VD .req VC -+ .unreq VC -+ VC .req VB -+ .unreq VB -+ VB .req VA -+ .unreq VA -+ VA .req TT -+.endm -+ -+.altmacro -+.macro SM3_STEP_WRAPPER windex:req,idx:req,idx4:req,idx16,idx13,idx9,idx6,idx3 -+ .if \windex <= 11 -+ revb WORD\idx4\().s, p0/m, WORD\idx4\().s -+ next=\idx4+1 -+ load_next_words %next -+ SM3_STEP_00_11 \windex,WORD\idx\(),WORD\idx4\() -+ .else -+ .if \windex < 16 -+ SM3_STEP_12_15 \windex,WORD\idx\(),\ -+ WORD\idx4\(),WORD\idx16\(),WORD\idx13\(),\ -+ WORD\idx9\(),WORD\idx6\(),WORD\idx3\() -+ .else -+ .if \windex == 63 -+ SM3_STEP_63 \windex,WORD\idx\(),WORD\idx4\(),\ -+ WORD\idx16\(),WORD\idx13\(),WORD\idx9\(),\ -+ WORD\idx6\(),WORD\idx3\() -+ .else -+ SM3_STEP_16_62 \windex,WORD\idx\(),WORD\idx4\(),\ -+ WORD\idx16\(),WORD\idx13\(),WORD\idx9\(),\ -+ WORD\idx6\(),WORD\idx3\() -+ .endif -+ .endif -+ .endif -+.endm -+ -+.macro exec_step windex:req -+ .if \windex <= 11 -+ idx4=\windex+4 -+ SM3_STEP_WRAPPER \windex,\windex,%idx4 -+ .else -+ idxp4=\windex + 4 -+ idx4=idxp4 % 17 -+ idx16=(idxp4 - 16) % 17 -+ idx13=(idxp4 - 13) % 17 -+ idx9=(idxp4 - 9) % 17 -+ idx6=(idxp4 - 6) % 17 -+ idx3=(idxp4 - 3) % 17 -+ idx=\windex % 17 -+ SM3_STEP_WRAPPER \windex,%idx,%idx4,%idx16,%idx13,%idx9,%idx6,%idx3 -+ .endif -+ SWAP_STATES -+.endm -+ -+.macro sm3_exec -+ current_step=0 -+ .rept 64 -+ exec_step %current_step -+ current_step=current_step+1 -+ .endr -+.endm -+ -+.macro sm3_single sve2:vararg -+ .ifnb \sve2 -+ have_sve2 = 1 -+ .else -+ have_sve2=0 -+ .endif -+ st1w {VA.s},p0,[abcd_buf, 0, MUL VL] -+ st1w {VB.s},p0,[abcd_buf, 1, MUL VL] -+ st1w {VC.s},p0,[abcd_buf, 2, MUL VL] -+ st1w {VD.s},p0,[abcd_buf, 3, MUL VL] -+ st1w {VE.s},p0,[abcd_buf, 4, MUL VL] -+ st1w {VF.s},p0,[abcd_buf, 5, MUL VL] -+ st1w {VG.s},p0,[abcd_buf, 6, MUL VL] -+ st1w {VH.s},p0,[abcd_buf, 7, MUL VL] -+ load_words 0 -+ load_words 1 -+ load_words 2 -+ load_words 3 -+ load_words 4 -+ revb WORD0.s, p0/m, WORD0.s -+ revb WORD1.s, p0/m, WORD1.s -+ revb WORD2.s, p0/m, WORD2.s -+ revb WORD3.s, p0/m, WORD3.s -+ .if have_sve2 == 1 -+ mov VZERO.s,p0/m,#0 -+ .endif -+ sm3_exec -+.endm -+ -+.macro sm3_sve_save_stack -+ stp d8,d9,[sp, -64]! -+ stp d10,d11,[sp, 16] -+ stp d12,d13,[sp, 32] -+ stp d14,d15,[sp, 48] -+.endm -+ -+.macro sm3_sve_restore_stack -+ ldp d10,d11,[sp, 16] -+ ldp d12,d13,[sp, 32] -+ ldp d14,d15,[sp, 48] -+ ldp d8,d9,[sp],64 -+.endm -+ -+ .section .rodata.cst16,"aM",@progbits,16 -+ .align 16 -+SM3_CONSTS: -+ .word 0x79CC4519 -+ .word 0xF3988A32 -+ .word 0xE7311465 -+ .word 0xCE6228CB -+ .word 0x9CC45197 -+ .word 0x3988A32F -+ .word 0x7311465E -+ .word 0xE6228CBC -+ .word 0xCC451979 -+ .word 0x988A32F3 -+ .word 0x311465E7 -+ .word 0x6228CBCE -+ .word 0xC451979C -+ .word 0x88A32F39 -+ .word 0x11465E73 -+ .word 0x228CBCE6 -+ .word 0x9D8A7A87 -+ .word 0x3B14F50F -+ .word 0x7629EA1E -+ .word 0xEC53D43C -+ .word 0xD8A7A879 -+ .word 0xB14F50F3 -+ .word 0x629EA1E7 -+ .word 0xC53D43CE -+ .word 0x8A7A879D -+ .word 0x14F50F3B -+ .word 0x29EA1E76 -+ .word 0x53D43CEC -+ .word 0xA7A879D8 -+ .word 0x4F50F3B1 -+ .word 0x9EA1E762 -+ .word 0x3D43CEC5 -+ .word 0x7A879D8A -+ .word 0xF50F3B14 -+ .word 0xEA1E7629 -+ .word 0xD43CEC53 -+ .word 0xA879D8A7 -+ .word 0x50F3B14F -+ .word 0xA1E7629E -+ .word 0x43CEC53D -+ .word 0x879D8A7A -+ .word 0x0F3B14F5 -+ .word 0x1E7629EA -+ .word 0x3CEC53D4 -+ .word 0x79D8A7A8 -+ .word 0xF3B14F50 -+ .word 0xE7629EA1 -+ .word 0xCEC53D43 -+ .word 0x9D8A7A87 -+ .word 0x3B14F50F -+ .word 0x7629EA1E -+ .word 0xEC53D43C -+ .word 0xD8A7A879 -+ .word 0xB14F50F3 -+ .word 0x629EA1E7 -+ .word 0xC53D43CE -+ .word 0x8A7A879D -+ .word 0x14F50F3B -+ .word 0x29EA1E76 -+ .word 0x53D43CEC -+ .word 0xA7A879D8 -+ .word 0x4F50F3B1 -+ .word 0x9EA1E762 -+ .word 0x3D43CEC5 -+ --- -2.25.1 - diff --git a/0033-uadk_tool-fix-aead-performance-test-issue.patch b/0033-uadk_tool-fix-aead-performance-test-issue.patch deleted file mode 100644 index c422378..0000000 --- a/0033-uadk_tool-fix-aead-performance-test-issue.patch +++ /dev/null @@ -1,38 +0,0 @@ -From f5787232f4f5cb09445bfc87d20cb2b43f5e5ea3 Mon Sep 17 00:00:00 2001 -From: Longfang Liu -Date: Mon, 11 Mar 2024 16:14:34 +0800 -Subject: [PATCH 33/44] uadk_tool: fix aead performance test issue - -In the current UADK code, due to the new support for aead stream mode, -a new msg_state state has been added. If the initial value is not -assigned, an error will occur in the block mode check. -As a result, the performance test cannot be executed. - -Signed-off-by: Longfang Liu ---- - uadk_tool/benchmark/sec_uadk_benchmark.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/uadk_tool/benchmark/sec_uadk_benchmark.c b/uadk_tool/benchmark/sec_uadk_benchmark.c -index c99ae89..92e967a 100644 ---- a/uadk_tool/benchmark/sec_uadk_benchmark.c -+++ b/uadk_tool/benchmark/sec_uadk_benchmark.c -@@ -1165,6 +1165,7 @@ static void *sec_uadk_aead_async(void *arg) - areq.mac_bytes = auth_size; - areq.assoc_bytes = SEC_AEAD_LEN; - areq.in_bytes = g_pktlen; -+ areq.msg_state = 0; - if (pdata->is_union) - areq.mac_bytes = 32; - if (areq.op_type) // decrypto -@@ -1396,6 +1397,7 @@ static void *sec_uadk_aead_sync(void *arg) - areq.assoc_bytes = SEC_AEAD_LEN; - areq.in_bytes = g_pktlen; - areq.mac_bytes = g_maclen; -+ areq.msg_state = 0; - if (areq.op_type) // decrypto - areq.out_bytes = g_pktlen + 16; // aadsize = 16; - else --- -2.25.1 - diff --git a/0034-uadk_tool-fix-the-logic-for-counting-retransmissions.patch b/0034-uadk_tool-fix-the-logic-for-counting-retransmissions.patch deleted file mode 100644 index 98c833d..0000000 --- a/0034-uadk_tool-fix-the-logic-for-counting-retransmissions.patch +++ /dev/null @@ -1,100 +0,0 @@ -From 12466753e870b9577826d238e08a744c17267a8f Mon Sep 17 00:00:00 2001 -From: Chenghai Huang -Date: Mon, 11 Mar 2024 16:19:46 +0800 -Subject: [PATCH 34/44] uadk_tool: fix the logic for counting retransmissions - when busy - -The try cnt should be set to 0 after the packet is successfully -sent, not after BUSY is returned. - -Signed-off-by: Chenghai Huang ---- - uadk_tool/benchmark/zip_uadk_benchmark.c | 8 ++++---- - uadk_tool/benchmark/zip_wd_benchmark.c | 7 +++---- - 2 files changed, 7 insertions(+), 8 deletions(-) - -diff --git a/uadk_tool/benchmark/zip_uadk_benchmark.c b/uadk_tool/benchmark/zip_uadk_benchmark.c -index 435c0b4..9681c22 100644 ---- a/uadk_tool/benchmark/zip_uadk_benchmark.c -+++ b/uadk_tool/benchmark/zip_uadk_benchmark.c -@@ -817,9 +817,8 @@ static void *zip_uadk_blk_lz77_async_run(void *arg) - - while(1) { - if (get_run_state() == 0) -- break; -+ break; - -- try_cnt = 0; - i = count % MAX_POOL_LENTH_COMP; - creq.src = uadk_pool->bds[i].src; - creq.dst = &hw_buff_out[i]; //temp out -@@ -845,6 +844,7 @@ static void *zip_uadk_blk_lz77_async_run(void *arg) - } else if (ret || creq.status) { - break; - } -+ try_cnt = 0; - count++; - } - -@@ -1037,9 +1037,8 @@ static void *zip_uadk_blk_async_run(void *arg) - - while(1) { - if (get_run_state() == 0) -- break; -+ break; - -- try_cnt = 0; - i = count % MAX_POOL_LENTH_COMP; - creq.src = uadk_pool->bds[i].src; - creq.dst = uadk_pool->bds[i].dst; -@@ -1062,6 +1061,7 @@ static void *zip_uadk_blk_async_run(void *arg) - } else if (ret || creq.status) { - break; - } -+ try_cnt = 0; - count++; - } - -diff --git a/uadk_tool/benchmark/zip_wd_benchmark.c b/uadk_tool/benchmark/zip_wd_benchmark.c -index d2340e0..d7bafd6 100644 ---- a/uadk_tool/benchmark/zip_wd_benchmark.c -+++ b/uadk_tool/benchmark/zip_wd_benchmark.c -@@ -708,9 +708,8 @@ static void *zip_wd_blk_lz77_async_run(void *arg) - - while(1) { - if (get_run_state() == 0) -- break; -+ break; - -- try_cnt = 0; - i = count % MAX_POOL_LENTH_COMP; - opdata.in = bd_pool[i].src; - opdata.out = bd_pool[i].dst; //temp out -@@ -737,6 +736,7 @@ static void *zip_wd_blk_lz77_async_run(void *arg) - opdata.status == WD_IN_EPARA || opdata.status == WD_VERIFY_ERR) { - break; - } -+ try_cnt = 0; - count++; - } - -@@ -984,7 +984,6 @@ static void *zip_wd_blk_async_run(void *arg) - opdata.in_len = bd_pool[i].src_len; - opdata.avail_out = out_len; - -- try_cnt = 0; - tag[i].ctx = ctx; - tag[i].td_id = pdata->td_id; - tag[i].bd_idx = i; -@@ -1002,7 +1001,7 @@ static void *zip_wd_blk_async_run(void *arg) - opdata.status == WD_IN_EPARA || opdata.status == WD_VERIFY_ERR) { - break; - } -- -+ try_cnt = 0; - count++; - } - --- -2.25.1 - diff --git a/0035-uadk-tools-support-the-nosva-test-of-a-specified-dev.patch b/0035-uadk-tools-support-the-nosva-test-of-a-specified-dev.patch deleted file mode 100644 index a816149..0000000 --- a/0035-uadk-tools-support-the-nosva-test-of-a-specified-dev.patch +++ /dev/null @@ -1,119 +0,0 @@ -From 17e5f25df480a5cacc3ac5e8ae88b708786eec44 Mon Sep 17 00:00:00 2001 -From: Chenghai Huang -Date: Mon, 11 Mar 2024 16:22:58 +0800 -Subject: [PATCH 35/44] uadk/tools - support the nosva test of a specified - device - -Add the description of device parameters. The input should -use the device name from '/sys/class/uacce/'. Only full -matching device names are supported. - -Signed-off-by: Chenghai Huang ---- - uadk_tool/benchmark/hpre_wd_benchmark.c | 8 ++++++++ - uadk_tool/benchmark/sec_wd_benchmark.c | 8 ++++++++ - uadk_tool/benchmark/trng_wd_benchmark.c | 8 ++++++++ - uadk_tool/benchmark/uadk_benchmark.c | 3 +++ - uadk_tool/benchmark/zip_wd_benchmark.c | 8 ++++++++ - 5 files changed, 35 insertions(+) - -diff --git a/uadk_tool/benchmark/hpre_wd_benchmark.c b/uadk_tool/benchmark/hpre_wd_benchmark.c -index 2873ffd..6dc1269 100644 ---- a/uadk_tool/benchmark/hpre_wd_benchmark.c -+++ b/uadk_tool/benchmark/hpre_wd_benchmark.c -@@ -431,6 +431,14 @@ static int init_hpre_wd_queue(struct acc_option *options) - /* nodemask need to be clean */ - g_thread_queue.bd_res[i].queue->node_mask = 0x0; - memset(g_thread_queue.bd_res[i].queue->dev_path, 0x0, PATH_STR_SIZE); -+ if (strlen(options->device) != 0) { -+ ret = snprintf(g_thread_queue.bd_res[i].queue->dev_path, -+ PATH_STR_SIZE, "%s", options->device); -+ if (ret < 0) { -+ WD_ERR("failed to copy dev file path!\n"); -+ return -WD_EINVAL; -+ } -+ } - - ret = wd_request_queue(g_thread_queue.bd_res[i].queue); - if (ret) { -diff --git a/uadk_tool/benchmark/sec_wd_benchmark.c b/uadk_tool/benchmark/sec_wd_benchmark.c -index aa03db8..2ed8493 100644 ---- a/uadk_tool/benchmark/sec_wd_benchmark.c -+++ b/uadk_tool/benchmark/sec_wd_benchmark.c -@@ -600,6 +600,14 @@ static int init_wd_queue(struct acc_option *options) - /* nodemask need to be clean */ - g_thread_queue.bd_res[i].queue->node_mask = 0x0; - memset(g_thread_queue.bd_res[i].queue->dev_path, 0x0, PATH_STR_SIZE); -+ if (strlen(options->device) != 0) { -+ ret = snprintf(g_thread_queue.bd_res[i].queue->dev_path, -+ PATH_STR_SIZE, "%s", options->device); -+ if (ret < 0) { -+ WD_ERR("failed to copy dev file path!\n"); -+ return -WD_EINVAL; -+ } -+ } - - ret = wd_request_queue(g_thread_queue.bd_res[i].queue); - if (ret) { -diff --git a/uadk_tool/benchmark/trng_wd_benchmark.c b/uadk_tool/benchmark/trng_wd_benchmark.c -index 64942f0..3ce329a 100644 ---- a/uadk_tool/benchmark/trng_wd_benchmark.c -+++ b/uadk_tool/benchmark/trng_wd_benchmark.c -@@ -51,6 +51,14 @@ static int init_trng_wd_queue(struct acc_option *options) - /* nodemask need to be clean */ - g_thread_queue.bd_res[i].queue->node_mask = 0x0; - memset(g_thread_queue.bd_res[i].queue->dev_path, 0x0, PATH_STR_SIZE); -+ if (strlen(options->device) != 0) { -+ ret = snprintf(g_thread_queue.bd_res[i].queue->dev_path, -+ PATH_STR_SIZE, "%s", options->device); -+ if (ret < 0) { -+ WD_ERR("failed to copy dev file path!\n"); -+ return -WD_EINVAL; -+ } -+ } - - g_thread_queue.bd_res[i].in_bytes = options->pktlen; - g_thread_queue.bd_res[i].out = malloc(options->pktlen); -diff --git a/uadk_tool/benchmark/uadk_benchmark.c b/uadk_tool/benchmark/uadk_benchmark.c -index cf3a93c..0ebbb68 100644 ---- a/uadk_tool/benchmark/uadk_benchmark.c -+++ b/uadk_tool/benchmark/uadk_benchmark.c -@@ -595,6 +595,7 @@ static void dump_param(struct acc_option *option) - ACC_TST_PRT(" [--engine]: %s\n", option->engine); - ACC_TST_PRT(" [--latency]: %u\n", option->latency); - ACC_TST_PRT(" [--init2]: %u\n", option->inittype); -+ ACC_TST_PRT(" [--device]: %s\n", option->device); - } - - int acc_benchmark_run(struct acc_option *option) -@@ -718,6 +719,8 @@ static void print_help(void) - ACC_TST_PRT(" test the running time of packets\n"); - ACC_TST_PRT(" [--init2]:\n"); - ACC_TST_PRT(" select init2 mode in the init interface of UADK SVA\n"); -+ ACC_TST_PRT(" [--device]:\n"); -+ ACC_TST_PRT(" select device to do task\n"); - ACC_TST_PRT(" [--help] = usage\n"); - ACC_TST_PRT("Example\n"); - ACC_TST_PRT(" ./uadk_tool benchmark --alg aes-128-cbc --mode sva --opt 0 --sync\n"); -diff --git a/uadk_tool/benchmark/zip_wd_benchmark.c b/uadk_tool/benchmark/zip_wd_benchmark.c -index d7bafd6..4424e08 100644 ---- a/uadk_tool/benchmark/zip_wd_benchmark.c -+++ b/uadk_tool/benchmark/zip_wd_benchmark.c -@@ -310,6 +310,14 @@ static int init_zip_wd_queue(struct acc_option *options) - /* nodemask need to be clean */ - g_thread_queue.bd_res[i].queue->node_mask = 0x0; - memset(g_thread_queue.bd_res[i].queue->dev_path, 0x0, PATH_STR_SIZE); -+ if (strlen(options->device) != 0) { -+ ret = snprintf(g_thread_queue.bd_res[i].queue->dev_path, -+ PATH_STR_SIZE, "%s", options->device); -+ if (ret < 0) { -+ WD_ERR("failed to copy dev file path!\n"); -+ return -WD_EINVAL; -+ } -+ } - - ret = wd_request_queue(g_thread_queue.bd_res[i].queue); - if (ret) { --- -2.25.1 - diff --git a/0036-uadk-tools-support-designated-device-testing.patch b/0036-uadk-tools-support-designated-device-testing.patch deleted file mode 100644 index 7334716..0000000 --- a/0036-uadk-tools-support-designated-device-testing.patch +++ /dev/null @@ -1,674 +0,0 @@ -From 829bc553310349ee7c654397204e8b348d7610f4 Mon Sep 17 00:00:00 2001 -From: Yang Shen -Date: Mon, 11 Mar 2024 16:27:04 +0800 -Subject: [PATCH 36/44] uadk/tools - support designated device testing - -Add a parameter 'device' to designate a device. The input should -use the device name from '/sys/class/uacce/'. Only full -matching device names are supported. - -Signed-off-by: Yang Shen ---- - uadk_tool/benchmark/hpre_uadk_benchmark.c | 86 ++++++++++++++------- - uadk_tool/benchmark/sec_uadk_benchmark.c | 86 ++++++++++++++------- - uadk_tool/benchmark/uadk_benchmark.c | 64 ++++++++------- - uadk_tool/benchmark/uadk_benchmark.h | 36 +++++---- - uadk_tool/benchmark/zip_uadk_benchmark.c | 94 ++++++++++++++++------- - 5 files changed, 237 insertions(+), 129 deletions(-) - -diff --git a/uadk_tool/benchmark/hpre_uadk_benchmark.c b/uadk_tool/benchmark/hpre_uadk_benchmark.c -index 0cbbdf2..729728f 100644 ---- a/uadk_tool/benchmark/hpre_uadk_benchmark.c -+++ b/uadk_tool/benchmark/hpre_uadk_benchmark.c -@@ -346,43 +346,66 @@ static int hpre_uadk_param_parse(thread_data *tddata, struct acc_option *options - - static int init_hpre_ctx_config(struct acc_option *options) - { -+ struct uacce_dev_list *list, *tmp; - int subtype = options->subtype; - char *alg = options->algclass; - int mode = options->syncmode; -+ struct uacce_dev *dev = NULL; - struct sched_params param; -- struct uacce_dev *dev; -- int max_node; -+ int max_node, i; -+ char *dev_name; - int ret = 0; -- int i = 0; - - max_node = numa_max_node() + 1; - if (max_node <= 0) - return -EINVAL; - -- memset(&g_ctx_cfg, 0, sizeof(struct wd_ctx_config)); -- g_ctx_cfg.ctx_num = g_ctxnum; -- g_ctx_cfg.ctxs = calloc(g_ctxnum, sizeof(struct wd_ctx)); -- if (!g_ctx_cfg.ctxs) -- return -ENOMEM; -+ list = wd_get_accel_list(alg); -+ if (!list) { -+ HPRE_TST_PRT("failed to get %s device\n", alg); -+ return -ENODEV; -+ } - -- while (i < g_ctxnum) { -- dev = wd_get_accel_dev(alg); -- if (!dev) { -- HPRE_TST_PRT("failed to get %s device\n", alg); -- ret = -EINVAL; -- goto out; -+ if (strlen(options->device) == 0) { -+ dev = list->dev; -+ } else { -+ for (tmp = list; tmp; tmp = tmp->next) { -+ dev_name = strrchr(tmp->dev->dev_root, '/') + 1; -+ if (!strcmp(dev_name, options->device)) { -+ dev = tmp->dev; -+ break; -+ } - } -+ } - -- for (; i < g_ctxnum; i++) { -- g_ctx_cfg.ctxs[i].ctx = wd_request_ctx(dev); -- if (!g_ctx_cfg.ctxs[i].ctx) -- break; -+ if (dev == NULL) { -+ HPRE_TST_PRT("failed to find device %s\n", options->device); -+ ret = -ENODEV; -+ goto free_list; -+ } -+ -+ /* If there is no numa, we defualt config to zero */ -+ if (dev->numa_id < 0) -+ dev->numa_id = 0; - -- g_ctx_cfg.ctxs[i].op_type = 0; // default op_type -- g_ctx_cfg.ctxs[i].ctx_mode = (__u8)mode; -+ memset(&g_ctx_cfg, 0, sizeof(struct wd_ctx_config)); -+ g_ctx_cfg.ctx_num = g_ctxnum; -+ g_ctx_cfg.ctxs = calloc(g_ctxnum, sizeof(struct wd_ctx)); -+ if (!g_ctx_cfg.ctxs) { -+ ret = -ENOMEM; -+ goto free_list; -+ } -+ -+ for (i = 0; i < g_ctxnum; i++) { -+ g_ctx_cfg.ctxs[i].ctx = wd_request_ctx(dev); -+ if (!g_ctx_cfg.ctxs[i].ctx) { -+ HPRE_TST_PRT("failed to alloc %dth ctx\n", i); -+ ret = -ENODEV; -+ goto free_ctx; - } - -- free(dev); -+ g_ctx_cfg.ctxs[i].op_type = 0; -+ g_ctx_cfg.ctxs[i].ctx_mode = (__u8)mode; - } - - switch(subtype) { -@@ -401,11 +424,11 @@ static int init_hpre_ctx_config(struct acc_option *options) - break; - default: - HPRE_TST_PRT("failed to parse alg subtype!\n"); -- return -EINVAL; -+ goto free_ctx; - } - if (!g_sched) { - HPRE_TST_PRT("failed to alloc sched!\n"); -- goto out; -+ goto free_ctx; - } - - g_sched->name = SCHED_SINGLE; -@@ -417,7 +440,7 @@ static int init_hpre_ctx_config(struct acc_option *options) - ret = wd_sched_rr_instance(g_sched, ¶m); - if (ret) { - HPRE_TST_PRT("failed to fill hpre sched data!\n"); -- goto out; -+ goto free_sched; - } - - /* init */ -@@ -438,17 +461,22 @@ static int init_hpre_ctx_config(struct acc_option *options) - } - if (ret) { - HPRE_TST_PRT("failed to get hpre ctx!\n"); -- goto out; -+ goto free_sched; - } - - return 0; --out: -- for (i = i - 1; i >= 0; i--) -- wd_release_ctx(g_ctx_cfg.ctxs[i].ctx); - -- free(g_ctx_cfg.ctxs); -+free_sched: - wd_sched_rr_release(g_sched); - -+free_ctx: -+ for (; i >= 0; i--) -+ wd_release_ctx(g_ctx_cfg.ctxs[i].ctx); -+ free(g_ctx_cfg.ctxs); -+ -+free_list: -+ wd_free_list_accels(list); -+ - return ret; - } - -diff --git a/uadk_tool/benchmark/sec_uadk_benchmark.c b/uadk_tool/benchmark/sec_uadk_benchmark.c -index 92e967a..105fb1a 100644 ---- a/uadk_tool/benchmark/sec_uadk_benchmark.c -+++ b/uadk_tool/benchmark/sec_uadk_benchmark.c -@@ -516,42 +516,66 @@ static int sec_uadk_param_parse(thread_data *tddata, struct acc_option *options) - - static int init_ctx_config(struct acc_option *options) - { -+ struct uacce_dev_list *list, *tmp; - struct sched_params param = {0}; -- struct uacce_dev *dev = NULL; -- char *alg = options->algclass; - int subtype = options->subtype; -+ char *alg = options->algclass; - int mode = options->syncmode; -- int max_node = 0; -+ struct uacce_dev *dev = NULL; -+ int max_node, i; -+ char *dev_name; - int ret = 0; -- int i = 0; - - max_node = numa_max_node() + 1; - if (max_node <= 0) - return -EINVAL; - -- memset(&g_ctx_cfg, 0, sizeof(struct wd_ctx_config)); -- g_ctx_cfg.ctx_num = g_ctxnum; -- g_ctx_cfg.ctxs = calloc(g_ctxnum, sizeof(struct wd_ctx)); -- if (!g_ctx_cfg.ctxs) -- return -ENOMEM; -+ list = wd_get_accel_list(alg); -+ if (!list) { -+ SEC_TST_PRT("failed to get %s device\n", alg); -+ return -ENODEV; -+ } - -- while (i < g_ctxnum) { -- dev = wd_get_accel_dev(alg); -- if (!dev) { -- SEC_TST_PRT("failed to get %s device\n", alg); -- goto out; -+ if (strlen(options->device) == 0) { -+ dev = list->dev; -+ } else { -+ for (tmp = list; tmp; tmp = tmp->next) { -+ dev_name = strrchr(tmp->dev->dev_root, '/') + 1; -+ if (!strcmp(dev_name, options->device)) { -+ dev = tmp->dev; -+ break; -+ } - } -+ } - -- for (; i < g_ctxnum; i++) { -- g_ctx_cfg.ctxs[i].ctx = wd_request_ctx(dev); -- if (!g_ctx_cfg.ctxs[i].ctx) -- break; -+ if (dev == NULL) { -+ SEC_TST_PRT("failed to find device %s\n", options->device); -+ ret = -ENODEV; -+ goto free_list; -+ } -+ -+ /* If there is no numa, we defualt config to zero */ -+ if (dev->numa_id < 0) -+ dev->numa_id = 0; -+ -+ memset(&g_ctx_cfg, 0, sizeof(struct wd_ctx_config)); -+ g_ctx_cfg.ctx_num = g_ctxnum; -+ g_ctx_cfg.ctxs = calloc(g_ctxnum, sizeof(struct wd_ctx)); -+ if (!g_ctx_cfg.ctxs) { -+ ret = -ENOMEM; -+ goto free_list; -+ } - -- g_ctx_cfg.ctxs[i].op_type = 0; // default op_type -- g_ctx_cfg.ctxs[i].ctx_mode = (__u8)mode; -+ for (i = 0; i < g_ctxnum; i++) { -+ g_ctx_cfg.ctxs[i].ctx = wd_request_ctx(dev); -+ if (!g_ctx_cfg.ctxs[i].ctx) { -+ SEC_TST_PRT("failed to alloc %dth ctx\n", i); -+ ret = -ENOMEM; -+ goto free_ctx; - } - -- free(dev); -+ g_ctx_cfg.ctxs[i].op_type = 0; -+ g_ctx_cfg.ctxs[i].ctx_mode = (__u8)mode; - } - - switch(subtype) { -@@ -566,11 +590,11 @@ static int init_ctx_config(struct acc_option *options) - break; - default: - SEC_TST_PRT("failed to parse alg subtype!\n"); -- return -EINVAL; -+ goto free_ctx; - } - if (!g_sched) { - SEC_TST_PRT("failed to alloc sched!\n"); -- goto out; -+ goto free_ctx; - } - - g_sched->name = SCHED_SINGLE; -@@ -582,7 +606,7 @@ static int init_ctx_config(struct acc_option *options) - ret = wd_sched_rr_instance(g_sched, ¶m); - if (ret) { - SEC_TST_PRT("failed to fill sched data!\n"); -- goto out; -+ goto free_sched; - } - - /* init */ -@@ -599,17 +623,21 @@ static int init_ctx_config(struct acc_option *options) - } - if (ret) { - SEC_TST_PRT("failed to cipher ctx!\n"); -- goto out; -+ goto free_sched; - } - - return 0; - --out: -- for (i--; i >= 0; i--) -- wd_release_ctx(g_ctx_cfg.ctxs[i].ctx); -+free_sched: -+ wd_sched_rr_release(g_sched); - -+free_ctx: -+ for (; i >= 0; i--) -+ wd_release_ctx(g_ctx_cfg.ctxs[i].ctx); - free(g_ctx_cfg.ctxs); -- wd_sched_rr_release(g_sched); -+ -+free_list: -+ wd_free_list_accels(list); - - return ret; - } -diff --git a/uadk_tool/benchmark/uadk_benchmark.c b/uadk_tool/benchmark/uadk_benchmark.c -index 0ebbb68..5dbe26a 100644 ---- a/uadk_tool/benchmark/uadk_benchmark.c -+++ b/uadk_tool/benchmark/uadk_benchmark.c -@@ -491,6 +491,7 @@ static void parse_alg_param(struct acc_option *option) - void cal_perfermance_data(struct acc_option *option, u32 sttime) - { - u8 palgname[MAX_ALG_NAME]; -+ char *unit = "KiB/s"; - double perfermance; - double cpu_rate; - u32 ttime = 1000; -@@ -506,8 +507,8 @@ void cal_perfermance_data(struct acc_option *option, u32 sttime) - if (option->syncmode == SYNC_MODE) { - if (get_recv_time() == option->threads) - break; -- } else { // ASYNC_MODE -- if (get_recv_time() == 1) // poll complete -+ } else { -+ if (get_recv_time() == 1) - break; - } - usleep(1000); -@@ -525,14 +526,17 @@ void cal_perfermance_data(struct acc_option *option, u32 sttime) - palgname[i] = '\0'; - - ptime = ptime - sttime; -+ cpu_rate = (double)ptime / option->times; -+ - perfdata = g_recv_data.pkg_len * g_recv_data.recv_cnt / 1024.0; -- perfops = (double)(g_recv_data.recv_cnt) / 1000.0; - perfermance = perfdata / option->times; -+ -+ perfops = g_recv_data.recv_cnt / 1000.0; - ops = perfops / option->times; -- cpu_rate = (double)ptime / option->times; -- ACC_TST_PRT("algname: length: perf: iops: CPU_rate:\n" -- "%s %-2uBytes %.1fKB/s %.1fKops %.2f%%\n", -- palgname, option->pktlen, perfermance, ops, cpu_rate); -+ -+ ACC_TST_PRT("algname:\tlength:\t\tperf:\t\tiops:\t\tCPU_rate:\n" -+ "%s\t%-2uBytes \t%.2f%s\t%.1fKops \t%.2f%%\n", -+ palgname, option->pktlen, perfermance, unit, ops, cpu_rate); - } - - static int benchmark_run(struct acc_option *option) -@@ -744,24 +748,25 @@ int acc_cmd_parse(int argc, char *argv[], struct acc_option *option) - int c; - - static struct option long_options[] = { -- {"help", no_argument, 0, 0}, -- {"alg", required_argument, 0, 1}, -- {"mode", required_argument, 0, 2}, -- {"opt", required_argument, 0, 3}, -- {"sync", no_argument, 0, 4}, -- {"async", no_argument, 0, 5}, -- {"pktlen", required_argument, 0, 6}, -- {"seconds", required_argument, 0, 7}, -- {"thread", required_argument, 0, 8}, -- {"multi", required_argument, 0, 9}, -- {"ctxnum", required_argument, 0, 10}, -- {"prefetch", no_argument, 0, 11}, -- {"engine", required_argument, 0, 12}, -- {"alglist", no_argument, 0, 13}, -- {"latency", no_argument, 0, 14}, -- {"winsize", required_argument, 0, 15}, -- {"complevel", required_argument, 0, 16}, -- {"init2", no_argument, 0, 17}, -+ {"help", no_argument, 0, 0}, -+ {"alg", required_argument, 0, 1}, -+ {"mode", required_argument, 0, 2}, -+ {"opt", required_argument, 0, 3}, -+ {"sync", no_argument, 0, 4}, -+ {"async", no_argument, 0, 5}, -+ {"pktlen", required_argument, 0, 6}, -+ {"seconds", required_argument, 0, 7}, -+ {"thread", required_argument, 0, 8}, -+ {"multi", required_argument, 0, 9}, -+ {"ctxnum", required_argument, 0, 10}, -+ {"prefetch", no_argument, 0, 11}, -+ {"engine", required_argument, 0, 12}, -+ {"alglist", no_argument, 0, 13}, -+ {"latency", no_argument, 0, 14}, -+ {"winsize", required_argument, 0, 15}, -+ {"complevel", required_argument, 0, 16}, -+ {"init2", no_argument, 0, 17}, -+ {"device", required_argument, 0, 18}, - {0, 0, 0, 0} - }; - -@@ -826,8 +831,15 @@ int acc_cmd_parse(int argc, char *argv[], struct acc_option *option) - case 17: - option->inittype = INIT2_TYPE; - break; -+ case 18: -+ if (strlen(optarg) >= MAX_DEVICE_NAME) { -+ ACC_TST_PRT("invalid: device name is %s\n", optarg); -+ goto to_exit; -+ } -+ strcpy(option->device, optarg); -+ break; - default: -- ACC_TST_PRT("bad input test parameter!\n"); -+ ACC_TST_PRT("invalid: bad input parameter!\n"); - print_help(); - goto to_exit; - } -diff --git a/uadk_tool/benchmark/uadk_benchmark.h b/uadk_tool/benchmark/uadk_benchmark.h -index 1752948..fd3ebe5 100644 ---- a/uadk_tool/benchmark/uadk_benchmark.h -+++ b/uadk_tool/benchmark/uadk_benchmark.h -@@ -6,27 +6,28 @@ - #include - #include - #include -+#include - #include --#include - #include -+#include - #include - #include --#include - #include --#include - #include - #include -+#include - --#define ACC_TST_PRT printf --#define PROCESS_NUM 32 --#define THREADS_NUM 64 --#define MAX_CTX_NUM 64 -+#define ACC_TST_PRT printf -+#define PROCESS_NUM 32 -+#define THREADS_NUM 64 -+#define MAX_CTX_NUM 64 - #define MAX_TIME_SECONDS 128 --#define BYTES_TO_MB 20 --#define MAX_OPT_TYPE 6 --#define MAX_DATA_SIZE (15 * 1024 * 1024) --#define MAX_ALG_NAME 64 --#define ACC_QUEUE_SIZE 1024 -+#define BYTES_TO_MB 20 -+#define MAX_OPT_TYPE 6 -+#define MAX_DATA_SIZE (15 * 1024 * 1024) -+#define MAX_ALG_NAME 64 -+#define ACC_QUEUE_SIZE 1024 -+#define MAX_DEVICE_NAME 64 - - #define MAX_BLOCK_NM 16384 /* BLOCK_NUM must 4 times of POOL_LENTH */ - #define MAX_POOL_LENTH 4096 -@@ -35,15 +36,15 @@ - #define SEC_2_USEC 1000000 - #define HASH_ZISE 16 - -+#define SCHED_SINGLE "sched_single" -+#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) -+#define gettid() syscall(__NR_gettid) -+ - typedef unsigned long long u64; - typedef unsigned int u32; - typedef unsigned short u16; - typedef unsigned char u8; - --#define SCHED_SINGLE "sched_single" --#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) --#define gettid() syscall(__NR_gettid) -- - /** - * struct acc_option - Define the test acc app option list. - * @algclass: 0:cipher 1:digest -@@ -55,9 +56,10 @@ typedef unsigned char u8; - * @latency: test packet running time - */ - struct acc_option { -- char algname[64]; -+ char algname[MAX_ALG_NAME]; - char algclass[64]; - char engine[64]; -+ char device[MAX_DEVICE_NAME]; - u32 algtype; - u32 modetype; - u32 optype; -diff --git a/uadk_tool/benchmark/zip_uadk_benchmark.c b/uadk_tool/benchmark/zip_uadk_benchmark.c -index 9681c22..63fbdab 100644 ---- a/uadk_tool/benchmark/zip_uadk_benchmark.c -+++ b/uadk_tool/benchmark/zip_uadk_benchmark.c -@@ -16,6 +16,7 @@ - #define MAX_POOL_LENTH_COMP 1 - #define COMPRESSION_RATIO_FACTOR 0.7 - #define CHUNK_SIZE (128 * 1024) -+ - struct uadk_bd { - u8 *src; - u8 *dst; -@@ -61,6 +62,7 @@ struct zip_file_head { - - static struct wd_ctx_config g_ctx_cfg; - static struct wd_sched *g_sched; -+static struct sched_params param; - static unsigned int g_thread_num; - static unsigned int g_ctxnum; - static unsigned int g_pktlen; -@@ -240,7 +242,7 @@ static int zip_uadk_param_parse(thread_data *tddata, struct acc_option *options) - u8 alg; - - if (optype >= WD_DIR_MAX << 1) { -- ZIP_TST_PRT("Fail to get zip optype!\n"); -+ ZIP_TST_PRT("failed to get zip optype!\n"); - return -EINVAL; - } else if (optype >= WD_DIR_MAX) { - mode = STREAM_MODE; -@@ -265,7 +267,7 @@ static int zip_uadk_param_parse(thread_data *tddata, struct acc_option *options) - optype = WD_DIR_COMPRESS; - break; - default: -- ZIP_TST_PRT("Fail to set zip alg\n"); -+ ZIP_TST_PRT("failed to set zip alg\n"); - return -EINVAL; - } - -@@ -298,21 +300,22 @@ static int init_ctx_config2(struct acc_option *options) - /* init */ - ret = wd_comp_init2(alg_name, SCHED_POLICY_RR, TASK_HW); - if (ret) { -- ZIP_TST_PRT("Fail to do comp init2!\n"); -+ ZIP_TST_PRT("failed to do comp init2!\n"); - return ret; - } - - return 0; - } - --static struct sched_params param; - static int init_ctx_config(struct acc_option *options) - { -- struct uacce_dev_list *list; -+ struct uacce_dev_list *list, *tmp; - char *alg = options->algclass; - int optype = options->optype; - int mode = options->syncmode; -- int i, max_node; -+ struct uacce_dev *dev = NULL; -+ int max_node, i; -+ char *dev_name; - int ret = 0; - - optype = optype % WD_DIR_MAX; -@@ -322,61 +325,96 @@ static int init_ctx_config(struct acc_option *options) - - list = wd_get_accel_list(alg); - if (!list) { -- ZIP_TST_PRT("Fail to get %s device\n", alg); -+ ZIP_TST_PRT("failed to get %s device\n", alg); - return -ENODEV; - } -- memset(&g_ctx_cfg, 0, sizeof(struct wd_ctx_config)); -- g_ctx_cfg.ctx_num = g_ctxnum; -- g_ctx_cfg.ctxs = calloc(g_ctxnum, sizeof(struct wd_ctx)); -- if (!g_ctx_cfg.ctxs) -- return -ENOMEM; - -- g_sched = wd_sched_rr_alloc(SCHED_POLICY_RR, 2, max_node, wd_comp_poll_ctx); -- if (!g_sched) { -- ZIP_TST_PRT("Fail to alloc sched!\n"); -- goto out; -+ if (strlen(options->device) == 0) { -+ dev = list->dev; -+ } else { -+ for (tmp = list; tmp; tmp = tmp->next) { -+ dev_name = strrchr(tmp->dev->dev_root, '/') + 1; -+ if (!strcmp(dev_name, options->device)) { -+ dev = tmp->dev; -+ break; -+ } -+ } -+ } -+ -+ if (dev == NULL) { -+ ZIP_TST_PRT("failed to find device %s\n", options->device); -+ ret = -ENODEV; -+ goto free_list; - } - - /* If there is no numa, we defualt config to zero */ -- if (list->dev->numa_id < 0) -- list->dev->numa_id = 0; -+ if (dev->numa_id < 0) -+ dev->numa_id = 0; -+ -+ memset(&g_ctx_cfg, 0, sizeof(struct wd_ctx_config)); -+ g_ctx_cfg.ctx_num = g_ctxnum; -+ g_ctx_cfg.ctxs = calloc(g_ctxnum, sizeof(struct wd_ctx)); -+ if (!g_ctx_cfg.ctxs) { -+ ret = -ENOMEM; -+ goto free_list; -+ } - - for (i = 0; i < g_ctxnum; i++) { -- g_ctx_cfg.ctxs[i].ctx = wd_request_ctx(list->dev); -- g_ctx_cfg.ctxs[i].op_type = optype; // default op_type -+ g_ctx_cfg.ctxs[i].ctx = wd_request_ctx(dev); -+ if (!g_ctx_cfg.ctxs[i].ctx) { -+ ZIP_TST_PRT("failed to alloc %dth ctx\n", i); -+ goto free_ctx; -+ } -+ -+ g_ctx_cfg.ctxs[i].op_type = optype; - g_ctx_cfg.ctxs[i].ctx_mode = (__u8)mode; - } -+ -+ g_sched = wd_sched_rr_alloc(SCHED_POLICY_RR, 2, max_node, wd_comp_poll_ctx); -+ if (!g_sched) { -+ ZIP_TST_PRT("failed to alloc sched!\n"); -+ ret = -ENOMEM; -+ goto free_ctx; -+ } -+ - g_sched->name = SCHED_SINGLE; - - /* - * All contexts for 2 modes & 2 types. - * The test only uses one kind of contexts at the same time. - */ -- param.numa_id = list->dev->numa_id; -+ param.numa_id = dev->numa_id; - param.type = optype; - param.mode = mode; - param.begin = 0; - param.end = g_ctxnum - 1; - ret = wd_sched_rr_instance(g_sched, ¶m); - if (ret) { -- ZIP_TST_PRT("Fail to fill sched data!\n"); -- goto out; -+ ZIP_TST_PRT("failed to fill sched data!\n"); -+ goto free_sched; - } - -- /* init */ - ret = wd_comp_init(&g_ctx_cfg, g_sched); - if (ret) { -- ZIP_TST_PRT("Fail to cipher ctx!\n"); -- goto out; -+ ZIP_TST_PRT("failed to cipher ctx!\n"); -+ goto free_sched; - } - - wd_free_list_accels(list); - - return 0; --out: -- free(g_ctx_cfg.ctxs); -+ -+free_sched: - wd_sched_rr_release(g_sched); - -+free_ctx: -+ for (; i >= 0; i--) -+ wd_release_ctx(g_ctx_cfg.ctxs[i].ctx); -+ free(g_ctx_cfg.ctxs); -+ -+free_list: -+ wd_free_list_accels(list); -+ - return ret; - } - --- -2.25.1 - diff --git a/0037-uadk_tool-support-sm3-ce-benchmark-and-function-test.patch b/0037-uadk_tool-support-sm3-ce-benchmark-and-function-test.patch deleted file mode 100644 index 58c0144..0000000 --- a/0037-uadk_tool-support-sm3-ce-benchmark-and-function-test.patch +++ /dev/null @@ -1,308 +0,0 @@ -From abb578a52d3bd6a34ac852afb56f7da06e8de266 Mon Sep 17 00:00:00 2001 -From: Zhiqi Song -Date: Mon, 11 Mar 2024 16:29:30 +0800 -Subject: [PATCH 37/44] uadk_tool: support sm3 ce benchmark and function test - -Support performance and function test for sm3-ce. - -Signed-off-by: Zhiqi Song ---- - uadk_tool/Makefile.am | 1 + - uadk_tool/benchmark/sec_uadk_benchmark.c | 22 +++++++++++++-- - uadk_tool/benchmark/uadk_benchmark.c | 29 ++++++++++++-------- - uadk_tool/benchmark/uadk_benchmark.h | 1 + - uadk_tool/test/test_sec.c | 35 +++++++++++++++++++++--- - 5 files changed, 69 insertions(+), 19 deletions(-) - -diff --git a/uadk_tool/Makefile.am b/uadk_tool/Makefile.am -index 7f00087..6fa0d9d 100644 ---- a/uadk_tool/Makefile.am -+++ b/uadk_tool/Makefile.am -@@ -29,6 +29,7 @@ uadk_tool_LDADD=$(libwd_la_OBJECTS) \ - ../.libs/libhisi_sec.a \ - ../.libs/libhisi_hpre.a \ - ../.libs/libhisi_zip.a \ -+ ../.libs/libisa_ce.a \ - -ldl -lnuma - else - uadk_tool_LDADD=-L../.libs -l:libwd.so.2 -l:libwd_crypto.so.2 \ -diff --git a/uadk_tool/benchmark/sec_uadk_benchmark.c b/uadk_tool/benchmark/sec_uadk_benchmark.c -index 105fb1a..c3da616 100644 ---- a/uadk_tool/benchmark/sec_uadk_benchmark.c -+++ b/uadk_tool/benchmark/sec_uadk_benchmark.c -@@ -679,6 +679,7 @@ static void uninit_ctx_config2(int subtype) - wd_aead_uninit2(); - break; - case DIGEST_TYPE: -+ case DIGEST_INSTR_TYPE: - wd_digest_uninit2(); - break; - default: -@@ -703,12 +704,23 @@ static int init_ctx_config2(struct acc_option *options) - switch(subtype) { - case CIPHER_TYPE: - ret = wd_cipher_init2(alg_name, SCHED_POLICY_RR, TASK_HW); -+ if (ret) -+ SEC_TST_PRT("failed to do cipher init2!\n"); - break; - case AEAD_TYPE: - ret = wd_aead_init2(alg_name, SCHED_POLICY_RR, TASK_HW); -+ if (ret) -+ SEC_TST_PRT("failed to do aead init2!\n"); - break; - case DIGEST_TYPE: - ret = wd_digest_init2(alg_name, SCHED_POLICY_RR, TASK_HW); -+ if (ret) -+ SEC_TST_PRT("failed to do digest init2!\n"); -+ break; -+ case DIGEST_INSTR_TYPE: -+ ret = wd_digest_init2(alg_name, SCHED_POLICY_NONE, TASK_INSTR); -+ if (ret) -+ SEC_TST_PRT("failed to do digest intruction init2!\n"); - break; - } - if (ret) { -@@ -716,7 +728,7 @@ static int init_ctx_config2(struct acc_option *options) - return ret; - } - -- return 0; -+ return ret; - } - - static void get_aead_data(u8 *addr, u32 size) -@@ -1489,8 +1501,8 @@ static void *sec_uadk_digest_sync(void *arg) - } - } - dreq.in_bytes = g_pktlen; -- dreq.out_bytes = 16; -- dreq.out_buf_bytes = 16; -+ dreq.out_bytes = 32; -+ dreq.out_buf_bytes = 32; - dreq.data_fmt = 0; - dreq.state = 0; - dreq.has_next = 0; -@@ -1536,8 +1548,12 @@ int sec_uadk_sync_threads(struct acc_option *options) - uadk_sec_sync_run = sec_uadk_aead_sync; - break; - case DIGEST_TYPE: -+ case DIGEST_INSTR_TYPE: - uadk_sec_sync_run = sec_uadk_digest_sync; - break; -+ default: -+ SEC_TST_PRT("Invalid subtype!\n"); -+ return -EINVAL; - } - - for (i = 0; i < g_thread_num; i++) { -diff --git a/uadk_tool/benchmark/uadk_benchmark.c b/uadk_tool/benchmark/uadk_benchmark.c -index 5dbe26a..9c025cf 100644 ---- a/uadk_tool/benchmark/uadk_benchmark.c -+++ b/uadk_tool/benchmark/uadk_benchmark.c -@@ -37,6 +37,7 @@ enum test_type { - SOFT_MODE = 0x4, - SVA_SOFT = 0x5, - NOSVA_SOFT = 0x6, -+ INSTR_MODE = 0x7, - INVALID_MODE = 0x8, - }; - -@@ -51,6 +52,7 @@ static struct acc_sva_item sys_name_item[] = { - {"soft", SOFT_MODE}, - {"sva-soft", SVA_SOFT}, - {"nosva-soft", NOSVA_SOFT}, -+ {"instr", INSTR_MODE}, - }; - - struct acc_alg_item { -@@ -286,7 +288,7 @@ static int get_alg_type(const char *alg_name) - - for (i = 0; i < ALG_MAX; i++) { - if (strcmp(alg_name, alg_options[i].name) == 0) { -- alg = alg_options[i].alg; -+ alg = alg_options[i].alg; - break; - } - } -@@ -482,8 +484,11 @@ static void parse_alg_param(struct acc_option *option) - option->subtype = AEAD_TYPE; - } else if (option->algtype <= SHA512_256) { - snprintf(option->algclass, MAX_ALG_NAME, "%s", "digest"); -+ if (option->modetype == INSTR_MODE) -+ option->subtype = DIGEST_INSTR_TYPE; -+ else -+ option->subtype = DIGEST_TYPE; - option->acctype = SEC_TYPE; -- option->subtype = DIGEST_TYPE; - } - } - } -@@ -545,35 +550,35 @@ static int benchmark_run(struct acc_option *option) - - switch(option->acctype) { - case SEC_TYPE: -- if (option->modetype & SVA_MODE) { -+ if ((option->modetype == SVA_MODE) || (option->modetype == INSTR_MODE)) { - ret = sec_uadk_benchmark(option); -- } else if (option->modetype & NOSVA_MODE) { -+ } else if (option->modetype == NOSVA_MODE) { - ret = sec_wd_benchmark(option); - } - usleep(20000); - #ifdef HAVE_CRYPTO -- if (option->modetype & SOFT_MODE) { -+ if (option->modetype == SOFT_MODE) { - ret = sec_soft_benchmark(option); - } - #endif - break; - case HPRE_TYPE: -- if (option->modetype & SVA_MODE) { -+ if (option->modetype == SVA_MODE) { - ret = hpre_uadk_benchmark(option); -- } else if (option->modetype & NOSVA_MODE) { -+ } else if (option->modetype == NOSVA_MODE) { - ret = hpre_wd_benchmark(option); - } - break; - case ZIP_TYPE: -- if (option->modetype & SVA_MODE) { -+ if (option->modetype == SVA_MODE) { - ret = zip_uadk_benchmark(option); -- } else if (option->modetype & NOSVA_MODE) { -+ } else if (option->modetype == NOSVA_MODE) { - ret = zip_wd_benchmark(option); - } - case TRNG_TYPE: -- if (option->modetype & SVA_MODE) -+ if (option->modetype == SVA_MODE) - ACC_TST_PRT("TRNG not support sva mode..\n"); -- else if (option->modetype & NOSVA_MODE) -+ else if (option->modetype == NOSVA_MODE) - ret = trng_wd_benchmark(option); - - break; -@@ -698,7 +703,7 @@ static void print_help(void) - ACC_TST_PRT("DESCRIPTION\n"); - ACC_TST_PRT(" [--alg aes-128-cbc ]:\n"); - ACC_TST_PRT(" The name of the algorithm for benchmarking\n"); -- ACC_TST_PRT(" [--mode sva/nosva/soft/sva-soft/nosva-soft]: start UADK or Warpdrive or Openssl mode test\n"); -+ ACC_TST_PRT(" [--mode sva/nosva/soft/sva-soft/nosva-soft/instr]: start UADK or Warpdrive or Openssl or Instruction mode test\n"); - ACC_TST_PRT(" [--sync/--async]: start asynchronous/synchronous mode test\n"); - ACC_TST_PRT(" [--opt 0,1,2,3,4,5]:\n"); - ACC_TST_PRT(" SEC/ZIP: 0/1:encryption/decryption or compression/decompression\n"); -diff --git a/uadk_tool/benchmark/uadk_benchmark.h b/uadk_tool/benchmark/uadk_benchmark.h -index fd3ebe5..e370d3e 100644 ---- a/uadk_tool/benchmark/uadk_benchmark.h -+++ b/uadk_tool/benchmark/uadk_benchmark.h -@@ -104,6 +104,7 @@ enum alg_type { - SM2_TYPE, - X25519_TYPE, - X448_TYPE, -+ DIGEST_INSTR_TYPE, - }; - - enum sync_type { -diff --git a/uadk_tool/test/test_sec.c b/uadk_tool/test/test_sec.c -index 16feaf0..87fc718 100644 ---- a/uadk_tool/test/test_sec.c -+++ b/uadk_tool/test/test_sec.c -@@ -32,7 +32,7 @@ - #define SCHED_SINGLE "sched_single" - #define SCHED_NULL_CTX_SIZE 4 - #define TEST_WORD_LEN 4096 --#define MAX_ALGO_PER_TYPE 16 -+#define MAX_ALGO_PER_TYPE 17 - #define MIN_SVA_BD_NUM 1 - #define AES_KEYSIZE_128 16 - #define AES_KEYSIZE_192 24 -@@ -83,6 +83,8 @@ enum digest_type { - LOCAL_AES_GMAC_192, - LOCAL_AES_GMAC_256, - LOCAL_AES_XCBC_MAC_96, -+ LOCAL_AES_XCBC_PRF_128, -+ LOCAL_AES_CCM, - }; - - char *digest_names[MAX_ALGO_PER_TYPE] = { -@@ -102,6 +104,7 @@ char *digest_names[MAX_ALGO_PER_TYPE] = { - "xcbc-mac-96(aes)", - "xcbc-prf-128(aes)", - "ccm(aes)", /* --digest 15: for error alg test */ -+ "sm3-ce", - }; - - char *aead_names[MAX_ALGO_PER_TYPE] = { -@@ -1464,11 +1467,14 @@ static int digest_init2(int type, int mode) - { - struct wd_ctx_params cparams = {0}; - struct wd_ctx_nums *ctx_set_num; -+ char *alg_name; - int ret; - - if (g_testalg >= MAX_ALGO_PER_TYPE) - return -WD_EINVAL; - -+ alg_name = digest_names[g_testalg]; -+ - ctx_set_num = calloc(1, sizeof(*ctx_set_num)); - if (!ctx_set_num) { - WD_ERR("failed to alloc ctx_set_size!\n"); -@@ -1492,7 +1498,10 @@ static int digest_init2(int type, int mode) - if (mode == CTX_MODE_ASYNC) - ctx_set_num->async_ctx_num = g_ctxnum; - -- ret = wd_digest_init2_(digest_names[g_testalg], 0, 0, &cparams); -+ if (!strcmp(alg_name, "sm3-ce")) -+ ret = wd_digest_init2("sm3", SCHED_POLICY_NONE, TASK_INSTR); -+ else -+ ret = wd_digest_init2_(digest_names[g_testalg], 0, 0, &cparams); - if (ret) - goto out_freebmp; - -@@ -1780,7 +1789,22 @@ int get_digest_resource(struct hash_testvec **alg_tv, int* alg, int* mode) - tv->dsize = 16; - alg_type = WD_DIGEST_AES_XCBC_PRF_128; - break; -- -+ case 16: /* SM3-CE */ -+ switch (g_alg_op_type) { -+ case 0: -+ mode_type = WD_DIGEST_NORMAL; -+ SEC_TST_PRT("test alg: %s\n", "normal(sm3-ce)"); -+ tv = &sm3_tv_template[0]; -+ break; -+ case 1: -+ mode_type = WD_DIGEST_HMAC; -+ SEC_TST_PRT("test alg: %s\n", "hmac(sm3-ce)"); -+ tv = &hmac_sm3_tv_template[0]; -+ break; -+ } -+ tv->dsize = 32; -+ alg_type = WD_DIGEST_SM3; -+ break; - default: - SEC_TST_PRT("keylenth error, default test alg: %s\n", "normal(sm3)"); - return -EINVAL; -@@ -4229,7 +4253,7 @@ static void print_help(void) - SEC_TST_PRT(" 4 : SHA224; 5 : SHA384; 6 : SHA512; 7 : SHA512_224\n"); - SEC_TST_PRT(" 8 : SHA512_256; 9 : AES_CMAC; 10 : AES_GMAC_128\n"); - SEC_TST_PRT(" 11 : AES_GMAC_192; 12 : AES_GMAC_256; 13 : AES_XCBC_MAC_96\n"); -- SEC_TST_PRT(" 14 : AES_XCBC_PRF_128\n"); -+ SEC_TST_PRT(" 14 : AES_XCBC_PRF_128; 15 : SM3-CE\n"); - SEC_TST_PRT(" [--aead ]:\n"); - SEC_TST_PRT(" specify symmetric aead algorithm\n"); - SEC_TST_PRT(" 0 : AES-CCM; 1 : AES-GCM; 2 : Hmac(sha256),cbc(aes)\n"); -@@ -4257,6 +4281,9 @@ static void print_help(void) - SEC_TST_PRT(" set the steam mode for digest\n"); - SEC_TST_PRT(" [--sglnum]:\n"); - SEC_TST_PRT(" the number of scatterlist number used by the entire test task\n"); -+ SEC_TST_PRT(" [--init]:\n"); -+ SEC_TST_PRT(" 1: use init API of uadk\n"); -+ SEC_TST_PRT(" 2: use init2 API of uadk\n"); - SEC_TST_PRT(" [--help] = usage\n"); - SEC_TST_PRT("Example\n"); - SEC_TST_PRT(" ./uadk_tool test --m sec --cipher 0 --sync --optype 0\n"); --- -2.25.1 - diff --git a/0038-uadk_tool-support-sm4-ce-benchmark-test.patch b/0038-uadk_tool-support-sm4-ce-benchmark-test.patch deleted file mode 100644 index a4523c9..0000000 --- a/0038-uadk_tool-support-sm4-ce-benchmark-test.patch +++ /dev/null @@ -1,167 +0,0 @@ -From 3ca60986407cfe3b1ddd264b0bfbe24d88856d71 Mon Sep 17 00:00:00 2001 -From: Qi Tao -Date: Mon, 11 Mar 2024 16:31:35 +0800 -Subject: [PATCH 38/44] uadk_tool: support sm4 ce benchmark test -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Support performance test for sm4-ce. Add CBC-CS1、CBC-CS2 -and CBC-CS3 mode for SM4 algorithm in benchmark tool. - -Signed-off-by: Qi Tao ---- - uadk_tool/benchmark/sec_uadk_benchmark.c | 25 ++++++++++++++++++++++++ - uadk_tool/benchmark/sec_wd_benchmark.c | 18 +++++++++++++++++ - uadk_tool/benchmark/uadk_benchmark.c | 11 ++++++++++- - uadk_tool/benchmark/uadk_benchmark.h | 4 ++++ - 4 files changed, 57 insertions(+), 1 deletion(-) - -diff --git a/uadk_tool/benchmark/sec_uadk_benchmark.c b/uadk_tool/benchmark/sec_uadk_benchmark.c -index c3da616..f8b19ba 100644 ---- a/uadk_tool/benchmark/sec_uadk_benchmark.c -+++ b/uadk_tool/benchmark/sec_uadk_benchmark.c -@@ -346,6 +346,24 @@ static int sec_uadk_param_parse(thread_data *tddata, struct acc_option *options) - mode = WD_CIPHER_CBC; - alg = WD_CIPHER_SM4; - break; -+ case SM4_128_CBC_CS1: -+ keysize = 16; -+ ivsize = 16; -+ mode = WD_CIPHER_CBC_CS1; -+ alg = WD_CIPHER_SM4; -+ break; -+ case SM4_128_CBC_CS2: -+ keysize = 16; -+ ivsize = 16; -+ mode = WD_CIPHER_CBC_CS2; -+ alg = WD_CIPHER_SM4; -+ break; -+ case SM4_128_CBC_CS3: -+ keysize = 16; -+ ivsize = 16; -+ mode = WD_CIPHER_CBC_CS3; -+ alg = WD_CIPHER_SM4; -+ break; - case SM4_128_CTR: - keysize = 16; - ivsize = 16; -@@ -673,6 +691,7 @@ static void uninit_ctx_config2(int subtype) - /* uninit2 */ - switch(subtype) { - case CIPHER_TYPE: -+ case CIPHER_INSTR_TYPE: - wd_cipher_uninit2(); - break; - case AEAD_TYPE: -@@ -707,6 +726,11 @@ static int init_ctx_config2(struct acc_option *options) - if (ret) - SEC_TST_PRT("failed to do cipher init2!\n"); - break; -+ case CIPHER_INSTR_TYPE: -+ ret = wd_cipher_init2(alg_name, SCHED_POLICY_NONE, TASK_INSTR); -+ if (ret) -+ SEC_TST_PRT("failed to do cipher intruction init2!\n"); -+ break; - case AEAD_TYPE: - ret = wd_aead_init2(alg_name, SCHED_POLICY_RR, TASK_HW); - if (ret) -@@ -1542,6 +1566,7 @@ int sec_uadk_sync_threads(struct acc_option *options) - - switch (options->subtype) { - case CIPHER_TYPE: -+ case CIPHER_INSTR_TYPE: - uadk_sec_sync_run = sec_uadk_cipher_sync; - break; - case AEAD_TYPE: -diff --git a/uadk_tool/benchmark/sec_wd_benchmark.c b/uadk_tool/benchmark/sec_wd_benchmark.c -index 2ed8493..bb47d61 100644 ---- a/uadk_tool/benchmark/sec_wd_benchmark.c -+++ b/uadk_tool/benchmark/sec_wd_benchmark.c -@@ -412,6 +412,24 @@ static int sec_wd_param_parse(thread_data *tddata, struct acc_option *options) - mode = WCRYPTO_CIPHER_CBC; - alg = WCRYPTO_CIPHER_SM4; - break; -+ case SM4_128_CBC_CS1: -+ keysize = 16; -+ ivsize = 16; -+ mode = WCRYPTO_CIPHER_CBC_CS1; -+ alg = WCRYPTO_CIPHER_SM4; -+ break; -+ case SM4_128_CBC_CS2: -+ keysize = 16; -+ ivsize = 16; -+ mode = WCRYPTO_CIPHER_CBC_CS2; -+ alg = WCRYPTO_CIPHER_SM4; -+ break; -+ case SM4_128_CBC_CS3: -+ keysize = 16; -+ ivsize = 16; -+ mode = WCRYPTO_CIPHER_CBC_CS3; -+ alg = WCRYPTO_CIPHER_SM4; -+ break; - case SM4_128_CTR: - keysize = 16; - ivsize = 16; -diff --git a/uadk_tool/benchmark/uadk_benchmark.c b/uadk_tool/benchmark/uadk_benchmark.c -index 9c025cf..f9bb69c 100644 ---- a/uadk_tool/benchmark/uadk_benchmark.c -+++ b/uadk_tool/benchmark/uadk_benchmark.c -@@ -120,6 +120,9 @@ static struct acc_alg_item alg_options[] = { - {"3des-192-cbc", DES3_192_CBC}, - {"sm4-128-ecb", SM4_128_ECB}, - {"sm4-128-cbc", SM4_128_CBC}, -+ {"sm4-128-cbc-cs1", SM4_128_CBC_CS1}, -+ {"sm4-128-cbc-cs2", SM4_128_CBC_CS2}, -+ {"sm4-128-cbc-cs3", SM4_128_CBC_CS3}, - {"sm4-128-ctr", SM4_128_CTR}, - {"sm4-128-ofb", SM4_128_OFB}, - {"sm4-128-cfb", SM4_128_CFB}, -@@ -209,6 +212,9 @@ static struct acc_alg_item alg_name_options[] = { - {"cbc(des3_ede)", DES3_192_CBC}, - {"ecb(sm4)", SM4_128_ECB}, - {"cbc(sm4)", SM4_128_CBC}, -+ {"cbc-cs1(sm4)", SM4_128_CBC_CS1}, -+ {"cbc-cs2(sm4)", SM4_128_CBC_CS2}, -+ {"cbc-cs3(sm4)", SM4_128_CBC_CS3}, - {"ctr(sm4)", SM4_128_CTR}, - {"ofb(sm4)", SM4_128_OFB}, - {"cfb(sm4)", SM4_128_CFB}, -@@ -476,8 +482,11 @@ static void parse_alg_param(struct acc_option *option) - option->subtype = ECDSA_TYPE; - } else if (option->algtype <= SM4_128_XTS_GB) { - snprintf(option->algclass, MAX_ALG_NAME, "%s", "cipher"); -+ if (option->modetype == INSTR_MODE) -+ option->subtype = CIPHER_INSTR_TYPE; -+ else -+ option->subtype = CIPHER_TYPE; - option->acctype = SEC_TYPE; -- option->subtype = CIPHER_TYPE; - } else if (option->algtype <= SM4_128_GCM) { - snprintf(option->algclass, MAX_ALG_NAME, "%s", "aead"); - option->acctype = SEC_TYPE; -diff --git a/uadk_tool/benchmark/uadk_benchmark.h b/uadk_tool/benchmark/uadk_benchmark.h -index e370d3e..ea8e437 100644 ---- a/uadk_tool/benchmark/uadk_benchmark.h -+++ b/uadk_tool/benchmark/uadk_benchmark.h -@@ -105,6 +105,7 @@ enum alg_type { - X25519_TYPE, - X448_TYPE, - DIGEST_INSTR_TYPE, -+ CIPHER_INSTR_TYPE, - }; - - enum sync_type { -@@ -172,6 +173,9 @@ enum test_alg { - DES3_192_CBC, - SM4_128_ECB, - SM4_128_CBC, -+ SM4_128_CBC_CS1, -+ SM4_128_CBC_CS2, -+ SM4_128_CBC_CS3, - SM4_128_CTR, - SM4_128_OFB, - SM4_128_CFB, --- -2.25.1 - diff --git a/0039-uadk_tool-support-sm3-md5-multibuff-benchmark-test.patch b/0039-uadk_tool-support-sm3-md5-multibuff-benchmark-test.patch deleted file mode 100644 index f78d464..0000000 --- a/0039-uadk_tool-support-sm3-md5-multibuff-benchmark-test.patch +++ /dev/null @@ -1,272 +0,0 @@ -From 7b3f79fedc187ded4dc7d6bdc976d0e560cc746d Mon Sep 17 00:00:00 2001 -From: Weili Qian -Date: Mon, 11 Mar 2024 16:33:58 +0800 -Subject: [PATCH 39/44] uadk_tool: support sm3/md5 multibuff benchmark test - -Support sm3/md5 multibuff benchmark test - -Signed-off-by: Weili Qian ---- - uadk_tool/benchmark/sec_uadk_benchmark.c | 31 +++++++++++++++--------- - uadk_tool/benchmark/uadk_benchmark.c | 26 ++++++++++++++------ - uadk_tool/benchmark/uadk_benchmark.h | 3 ++- - 3 files changed, 40 insertions(+), 20 deletions(-) - -diff --git a/uadk_tool/benchmark/sec_uadk_benchmark.c b/uadk_tool/benchmark/sec_uadk_benchmark.c -index f8b19ba..2c12c20 100644 ---- a/uadk_tool/benchmark/sec_uadk_benchmark.c -+++ b/uadk_tool/benchmark/sec_uadk_benchmark.c -@@ -53,6 +53,7 @@ typedef struct uadk_thread_res { - bool is_union; - u32 dalg; - u32 dmode; -+ u32 d_outbytes; - } thread_data; - - static struct wd_ctx_config g_ctx_cfg; -@@ -146,6 +147,7 @@ static int sec_uadk_param_parse(thread_data *tddata, struct acc_option *options) - u32 algtype = options->algtype; - u32 optype = options->optype; - bool is_union = false; -+ u32 out_bytes = 32; - u8 keysize = 0; - u8 ivsize = 0; - u8 dmode = 0; -@@ -472,45 +474,54 @@ static int sec_uadk_param_parse(thread_data *tddata, struct acc_option *options) - case SM3_ALG: // digest mode is optype - keysize = 4; - mode = optype; -+ out_bytes = 32; - alg = WD_DIGEST_SM3; - break; - case MD5_ALG: - keysize = 4; -+ out_bytes = 16; - mode = optype; - alg = WD_DIGEST_MD5; - break; - case SHA1_ALG: - keysize = 4; -+ out_bytes = 20; - mode = optype; - alg = WD_DIGEST_SHA1; - break; - case SHA256_ALG: - keysize = 4; -+ out_bytes = 32; - mode = optype; - alg = WD_DIGEST_SHA256; - break; - case SHA224_ALG: - keysize = 4; -+ out_bytes = 28; - mode = optype; - alg = WD_DIGEST_SHA224; - break; - case SHA384_ALG: - keysize = 4; -+ out_bytes = 48; - mode = optype; - alg = WD_DIGEST_SHA384; - break; - case SHA512_ALG: - keysize = 4; -+ out_bytes = 64; - mode = optype; - alg = WD_DIGEST_SHA512; - break; - case SHA512_224: - keysize = 4; -+ out_bytes = 28; - mode = optype; - alg = WD_DIGEST_SHA512_224; - break; - case SHA512_256: - keysize = 4; -+ out_bytes = 32; - mode = optype; - alg = WD_DIGEST_SHA512_256; - break; -@@ -528,6 +539,7 @@ static int sec_uadk_param_parse(thread_data *tddata, struct acc_option *options) - tddata->is_union = is_union; - tddata->optype = options->optype; - tddata->subtype = options->subtype; -+ tddata->d_outbytes = out_bytes; - - return 0; - } -@@ -698,7 +710,6 @@ static void uninit_ctx_config2(int subtype) - wd_aead_uninit2(); - break; - case DIGEST_TYPE: -- case DIGEST_INSTR_TYPE: - wd_digest_uninit2(); - break; - default: -@@ -737,15 +748,10 @@ static int init_ctx_config2(struct acc_option *options) - SEC_TST_PRT("failed to do aead init2!\n"); - break; - case DIGEST_TYPE: -- ret = wd_digest_init2(alg_name, SCHED_POLICY_RR, TASK_HW); -+ ret = wd_digest_init2(alg_name, options->sched_type, options->task_type); - if (ret) - SEC_TST_PRT("failed to do digest init2!\n"); - break; -- case DIGEST_INSTR_TYPE: -- ret = wd_digest_init2(alg_name, SCHED_POLICY_NONE, TASK_INSTR); -- if (ret) -- SEC_TST_PRT("failed to do digest intruction init2!\n"); -- break; - } - if (ret) { - SEC_TST_PRT("failed to do cipher init2!\n"); -@@ -1305,8 +1311,8 @@ static void *sec_uadk_digest_async(void *arg) - } - } - dreq.in_bytes = g_pktlen; -- dreq.out_bytes = 16; -- dreq.out_buf_bytes = 16; -+ dreq.out_bytes = pdata->d_outbytes; -+ dreq.out_buf_bytes = pdata->d_outbytes; - dreq.data_fmt = 0; - dreq.state = 0; - dreq.has_next = 0; -@@ -1525,8 +1531,8 @@ static void *sec_uadk_digest_sync(void *arg) - } - } - dreq.in_bytes = g_pktlen; -- dreq.out_bytes = 32; -- dreq.out_buf_bytes = 32; -+ dreq.out_bytes = pdata->d_outbytes; -+ dreq.out_buf_bytes = pdata->d_outbytes; - dreq.data_fmt = 0; - dreq.state = 0; - dreq.has_next = 0; -@@ -1573,7 +1579,6 @@ int sec_uadk_sync_threads(struct acc_option *options) - uadk_sec_sync_run = sec_uadk_aead_sync; - break; - case DIGEST_TYPE: -- case DIGEST_INSTR_TYPE: - uadk_sec_sync_run = sec_uadk_digest_sync; - break; - default: -@@ -1591,6 +1596,7 @@ int sec_uadk_sync_threads(struct acc_option *options) - threads_args[i].ivsize = threads_option.ivsize; - threads_args[i].optype = threads_option.optype; - threads_args[i].td_id = i; -+ threads_args[i].d_outbytes = threads_option.d_outbytes; - ret = pthread_create(&tdid[i], NULL, uadk_sec_sync_run, &threads_args[i]); - if (ret) { - SEC_TST_PRT("Create sync thread fail!\n"); -@@ -1662,6 +1668,7 @@ int sec_uadk_async_threads(struct acc_option *options) - threads_args[i].ivsize = threads_option.ivsize; - threads_args[i].optype = threads_option.optype; - threads_args[i].td_id = i; -+ threads_args[i].d_outbytes = threads_option.d_outbytes; - ret = pthread_create(&tdid[i], NULL, uadk_sec_async_run, &threads_args[i]); - if (ret) { - SEC_TST_PRT("Create async thread fail!\n"); -diff --git a/uadk_tool/benchmark/uadk_benchmark.c b/uadk_tool/benchmark/uadk_benchmark.c -index f9bb69c..c1accc6 100644 ---- a/uadk_tool/benchmark/uadk_benchmark.c -+++ b/uadk_tool/benchmark/uadk_benchmark.c -@@ -2,6 +2,8 @@ - - #include - #include -+#include "include/wd_alg_common.h" -+#include "include/wd_sched.h" - - #include "uadk_benchmark.h" - #include "sec_uadk_benchmark.h" -@@ -38,7 +40,8 @@ enum test_type { - SVA_SOFT = 0x5, - NOSVA_SOFT = 0x6, - INSTR_MODE = 0x7, -- INVALID_MODE = 0x8, -+ MULTIBUF_MODE = 0x8, -+ INVALID_MODE = 0x9, - }; - - struct acc_sva_item { -@@ -53,6 +56,7 @@ static struct acc_sva_item sys_name_item[] = { - {"sva-soft", SVA_SOFT}, - {"nosva-soft", NOSVA_SOFT}, - {"instr", INSTR_MODE}, -+ {"multibuff", MULTIBUF_MODE}, - }; - - struct acc_alg_item { -@@ -493,11 +497,15 @@ static void parse_alg_param(struct acc_option *option) - option->subtype = AEAD_TYPE; - } else if (option->algtype <= SHA512_256) { - snprintf(option->algclass, MAX_ALG_NAME, "%s", "digest"); -- if (option->modetype == INSTR_MODE) -- option->subtype = DIGEST_INSTR_TYPE; -- else -- option->subtype = DIGEST_TYPE; -+ option->subtype = DIGEST_TYPE; - option->acctype = SEC_TYPE; -+ if (option->modetype == INSTR_MODE) { -+ option->sched_type = SCHED_POLICY_NONE; -+ option->task_type = TASK_INSTR; -+ } else if (option->modetype == MULTIBUF_MODE) { -+ option->sched_type = SCHED_POLICY_SINGLE; -+ option->task_type = TASK_INSTR; -+ } - } - } - } -@@ -559,7 +567,9 @@ static int benchmark_run(struct acc_option *option) - - switch(option->acctype) { - case SEC_TYPE: -- if ((option->modetype == SVA_MODE) || (option->modetype == INSTR_MODE)) { -+ if ((option->modetype == SVA_MODE) || -+ (option->modetype == INSTR_MODE) || -+ (option->modetype == MULTIBUF_MODE)) { - ret = sec_uadk_benchmark(option); - } else if (option->modetype == NOSVA_MODE) { - ret = sec_wd_benchmark(option); -@@ -623,6 +633,8 @@ int acc_benchmark_run(struct acc_option *option) - int i, ret = 0; - int status; - -+ option->sched_type = SCHED_POLICY_RR; -+ option->task_type = TASK_HW; - parse_alg_param(option); - dump_param(option); - g_run_options = option; -@@ -712,7 +724,7 @@ static void print_help(void) - ACC_TST_PRT("DESCRIPTION\n"); - ACC_TST_PRT(" [--alg aes-128-cbc ]:\n"); - ACC_TST_PRT(" The name of the algorithm for benchmarking\n"); -- ACC_TST_PRT(" [--mode sva/nosva/soft/sva-soft/nosva-soft/instr]: start UADK or Warpdrive or Openssl or Instruction mode test\n"); -+ ACC_TST_PRT(" [--mode sva/nosva/soft/sva-soft/nosva-soft/instr/multibuff]: start UADK or Warpdrive or Openssl or Instruction mode test\n"); - ACC_TST_PRT(" [--sync/--async]: start asynchronous/synchronous mode test\n"); - ACC_TST_PRT(" [--opt 0,1,2,3,4,5]:\n"); - ACC_TST_PRT(" SEC/ZIP: 0/1:encryption/decryption or compression/decompression\n"); -diff --git a/uadk_tool/benchmark/uadk_benchmark.h b/uadk_tool/benchmark/uadk_benchmark.h -index ea8e437..c493ac3 100644 ---- a/uadk_tool/benchmark/uadk_benchmark.h -+++ b/uadk_tool/benchmark/uadk_benchmark.h -@@ -77,6 +77,8 @@ struct acc_option { - u32 complevel; - u32 inittype; - bool latency; -+ u32 sched_type; -+ int task_type; - }; - - enum acc_type { -@@ -104,7 +106,6 @@ enum alg_type { - SM2_TYPE, - X25519_TYPE, - X448_TYPE, -- DIGEST_INSTR_TYPE, - CIPHER_INSTR_TYPE, - }; - --- -2.25.1 - diff --git a/0040-uadk-tool-fix-the-msg-pool-release-bug-of-async-zip-.patch b/0040-uadk-tool-fix-the-msg-pool-release-bug-of-async-zip-.patch deleted file mode 100644 index 9eaee1f..0000000 --- a/0040-uadk-tool-fix-the-msg-pool-release-bug-of-async-zip-.patch +++ /dev/null @@ -1,467 +0,0 @@ -From 34c49db7d9eba5255f678179da95a15976dbb305 Mon Sep 17 00:00:00 2001 -From: Chenghai Huang -Date: Mon, 11 Mar 2024 16:36:13 +0800 -Subject: [PATCH 40/44] uadk tool: fix the msg pool release bug of async zip - benchmark - -Ensure that all packets in the msg pool are removed before end. -In V2, resources such as tags are released in a centralized manner -to avoid errors caused by asynchronous resource release sequence. -In V1, before the packet sending thread releases the tag, ensure -that the poll thread has ended. - -Signed-off-by: Chenghai Huang ---- - uadk_tool/benchmark/uadk_benchmark.c | 4 +- - uadk_tool/benchmark/zip_uadk_benchmark.c | 151 ++++++++++++----------- - uadk_tool/benchmark/zip_wd_benchmark.c | 25 ++-- - 3 files changed, 99 insertions(+), 81 deletions(-) - -diff --git a/uadk_tool/benchmark/uadk_benchmark.c b/uadk_tool/benchmark/uadk_benchmark.c -index c1accc6..1262a2a 100644 ---- a/uadk_tool/benchmark/uadk_benchmark.c -+++ b/uadk_tool/benchmark/uadk_benchmark.c -@@ -594,6 +594,7 @@ static int benchmark_run(struct acc_option *option) - } else if (option->modetype == NOSVA_MODE) { - ret = zip_wd_benchmark(option); - } -+ break; - case TRNG_TYPE: - if (option->modetype == SVA_MODE) - ACC_TST_PRT("TRNG not support sva mode..\n"); -@@ -727,7 +728,8 @@ static void print_help(void) - ACC_TST_PRT(" [--mode sva/nosva/soft/sva-soft/nosva-soft/instr/multibuff]: start UADK or Warpdrive or Openssl or Instruction mode test\n"); - ACC_TST_PRT(" [--sync/--async]: start asynchronous/synchronous mode test\n"); - ACC_TST_PRT(" [--opt 0,1,2,3,4,5]:\n"); -- ACC_TST_PRT(" SEC/ZIP: 0/1:encryption/decryption or compression/decompression\n"); -+ ACC_TST_PRT(" SEC: cipher,aead: 0/1:encryption/decryption; digest: 0/1:normal/hmac\n"); -+ ACC_TST_PRT(" ZIP: 0~1:block compression, block decompression; 2~3:stream compression, stream decompression\n"); - ACC_TST_PRT(" HPRE: 0~5:keygen, key compute, Enc, Dec, Sign, Verify\n"); - ACC_TST_PRT(" [--pktlen]:\n"); - ACC_TST_PRT(" set the length of BD message in bytes\n"); -diff --git a/uadk_tool/benchmark/zip_uadk_benchmark.c b/uadk_tool/benchmark/zip_uadk_benchmark.c -index 63fbdab..1dd3990 100644 ---- a/uadk_tool/benchmark/zip_uadk_benchmark.c -+++ b/uadk_tool/benchmark/zip_uadk_benchmark.c -@@ -16,7 +16,7 @@ - #define MAX_POOL_LENTH_COMP 1 - #define COMPRESSION_RATIO_FACTOR 0.7 - #define CHUNK_SIZE (128 * 1024) -- -+#define MAX_UNRECV_PACKET_NUM 2 - struct uadk_bd { - u8 *src; - u8 *dst; -@@ -37,11 +37,17 @@ enum ZIP_OP_MODE { - STREAM_MODE - }; - -+enum ZIP_THREAD_STATE { -+ THREAD_PROCESSING, -+ THREAD_COMPLETED -+}; -+ - struct zip_async_tag { - handle_t sess; - u32 td_id; - u32 bd_idx; - u32 cm_len; -+ u32 recv_cnt; - ZSTD_CCtx *cctx; - }; - -@@ -52,6 +58,10 @@ typedef struct uadk_thread_res { - u32 td_id; - u32 win_sz; - u32 comp_lv; -+ u32 send_cnt; -+ struct zip_async_tag *tag; -+ COMP_TUPLE_TAG *ftuple; -+ char *hw_buff_out; - } thread_data; - - struct zip_file_head { -@@ -67,6 +77,7 @@ static unsigned int g_thread_num; - static unsigned int g_ctxnum; - static unsigned int g_pktlen; - static unsigned int g_prefetch; -+static unsigned int g_state; - - #ifndef ZLIB_FSE - static ZSTD_CCtx* zstd_soft_fse_init(unsigned int level) -@@ -541,6 +552,7 @@ static void *zip_lz77_async_cb(struct wd_comp_req *req, void *data) - zstd_output.dst = uadk_pool->bds[idx].dst; - zstd_output.size = tag->cm_len; - zstd_output.pos = 0; -+ __atomic_add_fetch(&tag->recv_cnt, 1, __ATOMIC_RELAXED); - fse_size = zstd_soft_fse(req->priv, &zstd_input, &zstd_output, cctx, ZSTD_e_end); - - uadk_pool->bds[idx].dst_len = fse_size; -@@ -554,6 +566,7 @@ static void *zip_async_cb(struct wd_comp_req *req, void *data) - struct bd_pool *uadk_pool; - int td_id = tag->td_id; - int idx = tag->bd_idx; -+ __atomic_add_fetch(&tag->recv_cnt, 1, __ATOMIC_RELAXED); - - uadk_pool = &g_zip_pool.pool[td_id]; - uadk_pool->bds[idx].dst_len = req->dst_len; -@@ -566,15 +579,14 @@ static void *zip_uadk_poll(void *data) - thread_data *pdata = (thread_data *)data; - u32 expt = ACC_QUEUE_SIZE * g_thread_num; - u32 id = pdata->td_id; -- u32 last_time = 2; // poll need one more recv time - u32 count = 0; - u32 recv = 0; -- int ret; -+ int ret; - - if (id > g_ctxnum) - return NULL; - -- while (last_time) { -+ while (g_state == THREAD_PROCESSING) { - ret = wd_comp_poll_ctx(id, expt, &recv); - count += recv; - recv = 0; -@@ -582,9 +594,6 @@ static void *zip_uadk_poll(void *data) - ZIP_TST_PRT("poll ret: %d!\n", ret); - goto recv_error; - } -- -- if (get_run_state() == 0) -- last_time--; - } - - recv_error: -@@ -596,12 +605,11 @@ recv_error: - static void *zip_uadk_poll2(void *data) - { - u32 expt = ACC_QUEUE_SIZE * g_thread_num; -- u32 last_time = 2; // poll need one more recv time - u32 count = 0; - u32 recv = 0; - int ret; - -- while (last_time) { -+ while (g_state == THREAD_PROCESSING) { - ret = wd_comp_poll(expt, &recv); - count += recv; - recv = 0; -@@ -609,9 +617,6 @@ static void *zip_uadk_poll2(void *data) - ZIP_TST_PRT("poll ret: %d!\n", ret); - goto recv_error; - } -- -- if (get_run_state() == 0) -- last_time--; - } - - recv_error: -@@ -803,11 +808,8 @@ static void *zip_uadk_blk_lz77_async_run(void *arg) - thread_data *pdata = (thread_data *)arg; - struct wd_comp_sess_setup comp_setup = {0}; - ZSTD_CCtx *cctx = zstd_soft_fse_init(15); -- COMP_TUPLE_TAG *ftuple = NULL; - struct bd_pool *uadk_pool; - struct wd_comp_req creq; -- struct zip_async_tag *tag; -- char *hw_buff_out = NULL; - handle_t h_sess; - u32 out_len = 0; - u32 count = 0; -@@ -838,37 +840,22 @@ static void *zip_uadk_blk_lz77_async_run(void *arg) - creq.data_fmt = 0; - creq.status = 0; - -- ftuple = malloc(sizeof(COMP_TUPLE_TAG) * MAX_POOL_LENTH_COMP); -- if (!ftuple) -- goto fse_err; -- -- hw_buff_out = malloc(out_len * MAX_POOL_LENTH_COMP); -- if (!hw_buff_out) -- goto hw_buff_err; -- memset(hw_buff_out, 0x0, out_len * MAX_POOL_LENTH_COMP); -- -- tag = malloc(sizeof(*tag) * MAX_POOL_LENTH_COMP); -- if (!tag) { -- ZIP_TST_PRT("failed to malloc zip tag!\n"); -- goto tag_err; -- } -- - while(1) { - if (get_run_state() == 0) - break; - - i = count % MAX_POOL_LENTH_COMP; - creq.src = uadk_pool->bds[i].src; -- creq.dst = &hw_buff_out[i]; //temp out -+ creq.dst = &pdata->hw_buff_out[i]; //temp out - creq.src_len = uadk_pool->bds[i].src_len; - creq.dst_len = out_len; -- creq.priv = &ftuple[i]; -+ creq.priv = &pdata->ftuple[i]; - -- tag[i].td_id = pdata->td_id; -- tag[i].bd_idx = i; -- tag[i].cm_len = out_len; -- tag[i].cctx = cctx; -- creq.cb_param = &tag[i]; -+ pdata->tag[i].td_id = pdata->td_id; -+ pdata->tag[i].bd_idx = i; -+ pdata->tag[i].cm_len = out_len; -+ pdata->tag[i].cctx = cctx; -+ creq.cb_param = &pdata->tag[i]; - - ret = wd_do_comp_async(h_sess, &creq); - if (ret == -WD_EBUSY) { -@@ -884,20 +871,8 @@ static void *zip_uadk_blk_lz77_async_run(void *arg) - } - try_cnt = 0; - count++; -+ __atomic_add_fetch(&pdata->send_cnt, 1, __ATOMIC_RELAXED); - } -- -- while (1) { -- if (get_recv_time() > 0) // wait Async mode finish recv -- break; -- usleep(SEND_USLEEP); -- } -- --tag_err: -- free(tag); --hw_buff_err: -- free(hw_buff_out); --fse_err: -- free(ftuple); - wd_comp_free_sess(h_sess); - add_send_complete(); - -@@ -1033,7 +1008,6 @@ static void *zip_uadk_blk_async_run(void *arg) - thread_data *pdata = (thread_data *)arg; - struct wd_comp_sess_setup comp_setup = {0}; - struct bd_pool *uadk_pool; -- struct zip_async_tag *tag; - struct wd_comp_req creq; - handle_t h_sess; - int try_cnt = 0; -@@ -1066,13 +1040,6 @@ static void *zip_uadk_blk_async_run(void *arg) - creq.priv = 0; - creq.status = 0; - -- tag = malloc(sizeof(*tag) * MAX_POOL_LENTH_COMP); -- if (!tag) { -- ZIP_TST_PRT("failed to malloc zip tag!\n"); -- wd_comp_free_sess(h_sess); -- return NULL; -- } -- - while(1) { - if (get_run_state() == 0) - break; -@@ -1083,9 +1050,9 @@ static void *zip_uadk_blk_async_run(void *arg) - creq.src_len = uadk_pool->bds[i].src_len; - creq.dst_len = out_len; - -- tag[i].td_id = pdata->td_id; -- tag[i].bd_idx = i; -- creq.cb_param = &tag[i]; -+ pdata->tag[i].td_id = pdata->td_id; -+ pdata->tag[i].bd_idx = i; -+ creq.cb_param = &pdata->tag[i]; - - ret = wd_do_comp_async(h_sess, &creq); - if (ret == -WD_EBUSY) { -@@ -1101,15 +1068,9 @@ static void *zip_uadk_blk_async_run(void *arg) - } - try_cnt = 0; - count++; -+ __atomic_add_fetch(&pdata->send_cnt, 1, __ATOMIC_RELAXED); - } - -- while (1) { -- if (get_recv_time() > 0) // wait Async mode finish recv -- break; -- usleep(SEND_USLEEP); -- } -- -- free(tag); - wd_comp_free_sess(h_sess); - - add_send_complete(); -@@ -1215,10 +1176,35 @@ static int zip_uadk_async_threads(struct acc_option *options) - threads_args[i].win_sz = threads_option.win_sz; - threads_args[i].comp_lv = threads_option.comp_lv; - threads_args[i].td_id = i; -+ if (threads_option.alg == LZ77_ZSTD) { -+ struct bd_pool *uadk_pool = &g_zip_pool.pool[i]; -+ u32 out_len = uadk_pool->bds[0].dst_len; -+ -+ threads_args[i].ftuple = malloc(sizeof(COMP_TUPLE_TAG) * -+ MAX_POOL_LENTH_COMP); -+ if (!threads_args[i].ftuple) { -+ ZIP_TST_PRT("failed to malloc lz77 ftuple!\n"); -+ goto lz77_free; -+ } -+ -+ threads_args[i].hw_buff_out = malloc(out_len * MAX_POOL_LENTH_COMP); -+ if (!threads_args[i].hw_buff_out) { -+ ZIP_TST_PRT("failed to malloc lz77 hw_buff_out!\n"); -+ goto lz77_free; -+ } -+ memset(threads_args[i].hw_buff_out, 0x0, out_len * MAX_POOL_LENTH_COMP); -+ } -+ threads_args[i].tag = malloc(sizeof(struct zip_async_tag) * MAX_POOL_LENTH_COMP); -+ if (!threads_args[i].tag) { -+ ZIP_TST_PRT("failed to malloc zip tag!\n"); -+ goto tag_free; -+ } -+ threads_args[i].tag->recv_cnt = 0; -+ threads_args[i].send_cnt = 0; - ret = pthread_create(&tdid[i], NULL, uadk_zip_async_run, &threads_args[i]); - if (ret) { - ZIP_TST_PRT("Create async thread fail!\n"); -- goto async_error; -+ goto tag_free; - } - } - -@@ -1227,18 +1213,41 @@ static int zip_uadk_async_threads(struct acc_option *options) - ret = pthread_join(tdid[i], NULL); - if (ret) { - ZIP_TST_PRT("Join async thread fail!\n"); -- goto async_error; -+ goto tag_free; - } - } - -+ /* wait for the poll to clear packets */ -+ g_state = THREAD_PROCESSING; -+ for (i = 0; i < g_thread_num;) { -+ if (threads_args[i].send_cnt <= threads_args[i].tag->recv_cnt + MAX_UNRECV_PACKET_NUM) -+ i++; -+ } -+ g_state = THREAD_COMPLETED; // finish poll -+ - for (i = 0; i < g_ctxnum; i++) { - ret = pthread_join(pollid[i], NULL); - if (ret) { - ZIP_TST_PRT("Join poll thread fail!\n"); -- goto async_error; -+ goto tag_free; - } - } - -+tag_free: -+ for (i = 0; i < g_thread_num; i++) { -+ if (threads_args[i].tag) -+ free(threads_args[i].tag); -+ } -+lz77_free: -+ if (threads_option.alg == LZ77_ZSTD) { -+ for (i = 0; i < g_thread_num; i++) { -+ if (threads_args[i].ftuple) -+ free(threads_args[i].ftuple); -+ -+ if (threads_args[i].hw_buff_out) -+ free(threads_args[i].hw_buff_out); -+ } -+ } - async_error: - return ret; - } -diff --git a/uadk_tool/benchmark/zip_wd_benchmark.c b/uadk_tool/benchmark/zip_wd_benchmark.c -index 4424e08..cbe07fc 100644 ---- a/uadk_tool/benchmark/zip_wd_benchmark.c -+++ b/uadk_tool/benchmark/zip_wd_benchmark.c -@@ -21,6 +21,7 @@ - #define COMPRESSION_RATIO_FACTOR 0.7 - #define MAX_POOL_LENTH_COMP 512 - #define CHUNK_SIZE (128 * 1024) -+#define MAX_UNRECV_PACKET_NUM 2 - - #define __ALIGN_MASK(x, mask) (((x) + (mask)) & ~(mask)) - #define ALIGN(x, a) __ALIGN_MASK(x, (typeof(x))(a)-1) -@@ -49,6 +50,11 @@ enum ZIP_OP_MODE { - STREAM_MODE - }; - -+enum ZIP_THREAD_STATE { -+ THREAD_PROCESSING, -+ THREAD_COMPLETED -+}; -+ - struct zip_async_tag { - void *ctx; - u32 td_id; -@@ -75,6 +81,8 @@ struct zip_file_head { - - static unsigned int g_thread_num; - static unsigned int g_pktlen; -+static unsigned int g_send_cnt[THREADS_NUM]; -+static unsigned int g_recv_state[THREADS_NUM]; - - static int save_file_data(const char *alg, u32 pkg_len, u32 optype) - { -@@ -470,9 +478,10 @@ static void *zip_wd_poll(void *data) - count += recv; - recv = 0; - -- if (get_run_state() == 0) -+ if (get_run_state() == 0 && g_send_cnt[id] <= count + MAX_UNRECV_PACKET_NUM) - last_time--; - } -+ g_recv_state[id] = THREAD_COMPLETED; - - recv_error: - add_recv_data(count, g_pktlen); -@@ -746,13 +755,11 @@ static void *zip_wd_blk_lz77_async_run(void *arg) - } - try_cnt = 0; - count++; -+ __atomic_add_fetch(&g_send_cnt[pdata->td_id], 1, __ATOMIC_RELAXED); - } - -- while (1) { -- if (get_recv_time() > 0) // wait Async mode finish recv -- break; -+ while (g_recv_state[pdata->td_id] == THREAD_PROCESSING) - usleep(SEND_USLEEP); -- } - - free(tag); - tag_err: -@@ -1011,13 +1018,11 @@ static void *zip_wd_blk_async_run(void *arg) - } - try_cnt = 0; - count++; -+ __atomic_add_fetch(&g_send_cnt[pdata->td_id], 1, __ATOMIC_RELAXED); - } - -- while (1) { -- if (get_recv_time() > 0) // wait Async mode finish recv -- break; -+ while (g_recv_state[pdata->td_id] == THREAD_PROCESSING) - usleep(SEND_USLEEP); -- } - - tag_release: - free(tag); -@@ -1107,6 +1112,7 @@ static int zip_wd_async_threads(struct acc_option *options) - - for (i = 0; i < g_thread_num; i++) { - threads_args[i].td_id = i; -+ g_recv_state[i] = THREAD_PROCESSING; - /* poll thread */ - ret = pthread_create(&pollid[i], NULL, zip_wd_poll, &threads_args[i]); - if (ret) { -@@ -1122,6 +1128,7 @@ static int zip_wd_async_threads(struct acc_option *options) - threads_args[i].comp_lv = threads_option.comp_lv; - threads_args[i].win_size = threads_option.win_size; - threads_args[i].td_id = i; -+ g_send_cnt[i] = 0; - ret = pthread_create(&tdid[i], NULL, wd_zip_async_run, &threads_args[i]); - if (ret) { - ZIP_TST_PRT("Create async thread fail!\n"); --- -2.25.1 - diff --git a/0041-uadk_tool-fix-queue-application-failure-from-multipl.patch b/0041-uadk_tool-fix-queue-application-failure-from-multipl.patch deleted file mode 100644 index d0b59b8..0000000 --- a/0041-uadk_tool-fix-queue-application-failure-from-multipl.patch +++ /dev/null @@ -1,641 +0,0 @@ -From 5210ac8a3f616f381d3990e3ca3f92bf23383f25 Mon Sep 17 00:00:00 2001 -From: Qi Tao -Date: Mon, 11 Mar 2024 16:41:41 +0800 -Subject: [PATCH 41/44] uadk_tool: fix queue application failure from multiple - devices - -Specified device: apply queues from a designated device. -No specified device: apply queues from multiple devices. - -Signed-off-by: Qi Tao ---- - uadk_tool/benchmark/hpre_uadk_benchmark.c | 143 ++++++++++++++++----- - uadk_tool/benchmark/sec_uadk_benchmark.c | 141 +++++++++++++++----- - uadk_tool/benchmark/zip_uadk_benchmark.c | 150 ++++++++++++++++------ - 3 files changed, 329 insertions(+), 105 deletions(-) - -diff --git a/uadk_tool/benchmark/hpre_uadk_benchmark.c b/uadk_tool/benchmark/hpre_uadk_benchmark.c -index 729728f..0148e56 100644 ---- a/uadk_tool/benchmark/hpre_uadk_benchmark.c -+++ b/uadk_tool/benchmark/hpre_uadk_benchmark.c -@@ -344,21 +344,17 @@ static int hpre_uadk_param_parse(thread_data *tddata, struct acc_option *options - return 0; - } - --static int init_hpre_ctx_config(struct acc_option *options) -+static int specified_device_request_ctx(struct acc_option *options) - { -- struct uacce_dev_list *list, *tmp; -- int subtype = options->subtype; -+ struct uacce_dev_list *list = NULL; -+ struct uacce_dev_list *tmp = NULL; - char *alg = options->algclass; - int mode = options->syncmode; - struct uacce_dev *dev = NULL; -- struct sched_params param; -- int max_node, i; -+ int avail_ctx = 0; - char *dev_name; - int ret = 0; -- -- max_node = numa_max_node() + 1; -- if (max_node <= 0) -- return -EINVAL; -+ int i = 0; - - list = wd_get_accel_list(alg); - if (!list) { -@@ -366,15 +362,11 @@ static int init_hpre_ctx_config(struct acc_option *options) - return -ENODEV; - } - -- if (strlen(options->device) == 0) { -- dev = list->dev; -- } else { -- for (tmp = list; tmp; tmp = tmp->next) { -- dev_name = strrchr(tmp->dev->dev_root, '/') + 1; -- if (!strcmp(dev_name, options->device)) { -- dev = tmp->dev; -- break; -- } -+ for (tmp = list; tmp != NULL; tmp = tmp->next) { -+ dev_name = strrchr(tmp->dev->dev_root, '/') + 1; -+ if (!strcmp(dev_name, options->device)) { -+ dev = tmp->dev; -+ break; - } - } - -@@ -384,30 +376,114 @@ static int init_hpre_ctx_config(struct acc_option *options) - goto free_list; - } - -- /* If there is no numa, we defualt config to zero */ -- if (dev->numa_id < 0) -- dev->numa_id = 0; -- -- memset(&g_ctx_cfg, 0, sizeof(struct wd_ctx_config)); -- g_ctx_cfg.ctx_num = g_ctxnum; -- g_ctx_cfg.ctxs = calloc(g_ctxnum, sizeof(struct wd_ctx)); -- if (!g_ctx_cfg.ctxs) { -- ret = -ENOMEM; -+ avail_ctx = wd_get_avail_ctx(dev); -+ if (avail_ctx < 0) { -+ HPRE_TST_PRT("failed to get the number of available ctx from %s\n", options->device); -+ ret = avail_ctx; -+ goto free_list; -+ } else if (avail_ctx < g_ctxnum) { -+ HPRE_TST_PRT("error: not enough ctx available in %s\n", options->device); -+ ret = -ENODEV; - goto free_list; - } - -+ /* If there is no numa, we default config to zero */ -+ if (dev->numa_id < 0) -+ dev->numa_id = 0; -+ - for (i = 0; i < g_ctxnum; i++) { - g_ctx_cfg.ctxs[i].ctx = wd_request_ctx(dev); - if (!g_ctx_cfg.ctxs[i].ctx) { - HPRE_TST_PRT("failed to alloc %dth ctx\n", i); -- ret = -ENODEV; -+ ret = -ENOMEM; - goto free_ctx; - } -- - g_ctx_cfg.ctxs[i].op_type = 0; - g_ctx_cfg.ctxs[i].ctx_mode = (__u8)mode; - } - -+ wd_free_list_accels(list); -+ return 0; -+ -+free_ctx: -+ for (; i >= 0; i--) -+ wd_release_ctx(g_ctx_cfg.ctxs[i].ctx); -+ -+free_list: -+ wd_free_list_accels(list); -+ -+ return ret; -+} -+ -+static int non_specified_device_request_ctx(struct acc_option *options) -+{ -+ char *alg = options->algclass; -+ int mode = options->syncmode; -+ struct uacce_dev *dev = NULL; -+ int ret = 0; -+ int i = 0; -+ -+ while (i < g_ctxnum) { -+ dev = wd_get_accel_dev(alg); -+ if (!dev) { -+ HPRE_TST_PRT("failed to get %s device\n", alg); -+ ret = -ENODEV; -+ goto free_ctx; -+ } -+ -+ /* If there is no numa, we default config to zero */ -+ if (dev->numa_id < 0) -+ dev->numa_id = 0; -+ -+ for (; i < g_ctxnum; i++) { -+ g_ctx_cfg.ctxs[i].ctx = wd_request_ctx(dev); -+ if (!g_ctx_cfg.ctxs[i].ctx) -+ break; -+ -+ g_ctx_cfg.ctxs[i].op_type = 0; -+ g_ctx_cfg.ctxs[i].ctx_mode = (__u8)mode; -+ } -+ -+ free(dev); -+ } -+ -+ return 0; -+ -+free_ctx: -+ for (; i >= 0; i--) -+ wd_release_ctx(g_ctx_cfg.ctxs[i].ctx); -+ -+ return ret; -+} -+ -+static int init_hpre_ctx_config(struct acc_option *options) -+{ -+ struct sched_params param = {0}; -+ int subtype = options->subtype; -+ int mode = options->syncmode; -+ int max_node; -+ int ret = 0; -+ -+ max_node = numa_max_node() + 1; -+ if (max_node <= 0) -+ return -EINVAL; -+ -+ memset(&g_ctx_cfg, 0, sizeof(struct wd_ctx_config)); -+ g_ctx_cfg.ctx_num = g_ctxnum; -+ g_ctx_cfg.ctxs = calloc(g_ctxnum, sizeof(struct wd_ctx)); -+ if (!g_ctx_cfg.ctxs) -+ return -ENOMEM; -+ -+ if (strlen(options->device) != 0) -+ ret = specified_device_request_ctx(options); -+ else -+ ret = non_specified_device_request_ctx(options); -+ -+ if (ret) { -+ HPRE_TST_PRT("failed to request hpre ctx!\n"); -+ goto free_ctxs; -+ } -+ - switch(subtype) { - case RSA_TYPE: - g_sched = wd_sched_rr_alloc(SCHED_POLICY_RR, 1, max_node, wd_rsa_poll_ctx); -@@ -460,7 +536,7 @@ static int init_hpre_ctx_config(struct acc_option *options) - break; - } - if (ret) { -- HPRE_TST_PRT("failed to get hpre ctx!\n"); -+ HPRE_TST_PRT("failed to init hpre ctx!\n"); - goto free_sched; - } - -@@ -470,12 +546,11 @@ free_sched: - wd_sched_rr_release(g_sched); - - free_ctx: -- for (; i >= 0; i--) -+ for (int i = g_ctxnum; i >= 0; i--) - wd_release_ctx(g_ctx_cfg.ctxs[i].ctx); -- free(g_ctx_cfg.ctxs); - --free_list: -- wd_free_list_accels(list); -+free_ctxs: -+ free(g_ctx_cfg.ctxs); - - return ret; - } -diff --git a/uadk_tool/benchmark/sec_uadk_benchmark.c b/uadk_tool/benchmark/sec_uadk_benchmark.c -index 2c12c20..56f4fa6 100644 ---- a/uadk_tool/benchmark/sec_uadk_benchmark.c -+++ b/uadk_tool/benchmark/sec_uadk_benchmark.c -@@ -544,21 +544,17 @@ static int sec_uadk_param_parse(thread_data *tddata, struct acc_option *options) - return 0; - } - --static int init_ctx_config(struct acc_option *options) -+static int specified_device_request_ctx(struct acc_option *options) - { -- struct uacce_dev_list *list, *tmp; -- struct sched_params param = {0}; -- int subtype = options->subtype; -+ struct uacce_dev_list *list = NULL; -+ struct uacce_dev_list *tmp = NULL; - char *alg = options->algclass; - int mode = options->syncmode; - struct uacce_dev *dev = NULL; -- int max_node, i; -+ int avail_ctx = 0; - char *dev_name; - int ret = 0; -- -- max_node = numa_max_node() + 1; -- if (max_node <= 0) -- return -EINVAL; -+ int i = 0; - - list = wd_get_accel_list(alg); - if (!list) { -@@ -566,15 +562,11 @@ static int init_ctx_config(struct acc_option *options) - return -ENODEV; - } - -- if (strlen(options->device) == 0) { -- dev = list->dev; -- } else { -- for (tmp = list; tmp; tmp = tmp->next) { -- dev_name = strrchr(tmp->dev->dev_root, '/') + 1; -- if (!strcmp(dev_name, options->device)) { -- dev = tmp->dev; -- break; -- } -+ for (tmp = list; tmp != NULL; tmp = tmp->next) { -+ dev_name = strrchr(tmp->dev->dev_root, '/') + 1; -+ if (!strcmp(dev_name, options->device)) { -+ dev = tmp->dev; -+ break; - } - } - -@@ -584,18 +576,21 @@ static int init_ctx_config(struct acc_option *options) - goto free_list; - } - -- /* If there is no numa, we defualt config to zero */ -- if (dev->numa_id < 0) -- dev->numa_id = 0; -- -- memset(&g_ctx_cfg, 0, sizeof(struct wd_ctx_config)); -- g_ctx_cfg.ctx_num = g_ctxnum; -- g_ctx_cfg.ctxs = calloc(g_ctxnum, sizeof(struct wd_ctx)); -- if (!g_ctx_cfg.ctxs) { -- ret = -ENOMEM; -+ avail_ctx = wd_get_avail_ctx(dev); -+ if (avail_ctx < 0) { -+ SEC_TST_PRT("failed to get the number of available ctx from %s\n", options->device); -+ ret = avail_ctx; -+ goto free_list; -+ } else if (avail_ctx < g_ctxnum) { -+ SEC_TST_PRT("error: not enough ctx available in %s\n", options->device); -+ ret = -ENODEV; - goto free_list; - } - -+ /* If there is no numa, we default config to zero */ -+ if (dev->numa_id < 0) -+ dev->numa_id = 0; -+ - for (i = 0; i < g_ctxnum; i++) { - g_ctx_cfg.ctxs[i].ctx = wd_request_ctx(dev); - if (!g_ctx_cfg.ctxs[i].ctx) { -@@ -603,11 +598,92 @@ static int init_ctx_config(struct acc_option *options) - ret = -ENOMEM; - goto free_ctx; - } -- - g_ctx_cfg.ctxs[i].op_type = 0; - g_ctx_cfg.ctxs[i].ctx_mode = (__u8)mode; - } - -+ wd_free_list_accels(list); -+ return 0; -+ -+free_ctx: -+ for (; i >= 0; i--) -+ wd_release_ctx(g_ctx_cfg.ctxs[i].ctx); -+ -+free_list: -+ wd_free_list_accels(list); -+ -+ return ret; -+} -+ -+static int non_specified_device_request_ctx(struct acc_option *options) -+{ -+ char *alg = options->algclass; -+ int mode = options->syncmode; -+ struct uacce_dev *dev = NULL; -+ int ret = 0; -+ int i = 0; -+ -+ while (i < g_ctxnum) { -+ dev = wd_get_accel_dev(alg); -+ if (!dev) { -+ SEC_TST_PRT("failed to get %s device\n", alg); -+ ret = -ENODEV; -+ goto free_ctx; -+ } -+ -+ /* If there is no numa, we default config to zero */ -+ if (dev->numa_id < 0) -+ dev->numa_id = 0; -+ -+ for (; i < g_ctxnum; i++) { -+ g_ctx_cfg.ctxs[i].ctx = wd_request_ctx(dev); -+ if (!g_ctx_cfg.ctxs[i].ctx) -+ break; -+ -+ g_ctx_cfg.ctxs[i].op_type = 0; -+ g_ctx_cfg.ctxs[i].ctx_mode = (__u8)mode; -+ } -+ -+ free(dev); -+ } -+ -+ return 0; -+ -+free_ctx: -+ for (; i >= 0; i--) -+ wd_release_ctx(g_ctx_cfg.ctxs[i].ctx); -+ -+ return ret; -+} -+ -+static int init_ctx_config(struct acc_option *options) -+{ -+ struct sched_params param = {0}; -+ int subtype = options->subtype; -+ int mode = options->syncmode; -+ int max_node; -+ int ret = 0; -+ -+ max_node = numa_max_node() + 1; -+ if (max_node <= 0) -+ return -EINVAL; -+ -+ memset(&g_ctx_cfg, 0, sizeof(struct wd_ctx_config)); -+ g_ctx_cfg.ctx_num = g_ctxnum; -+ g_ctx_cfg.ctxs = calloc(g_ctxnum, sizeof(struct wd_ctx)); -+ if (!g_ctx_cfg.ctxs) -+ return -ENOMEM; -+ -+ if (strlen(options->device) != 0) -+ ret = specified_device_request_ctx(options); -+ else -+ ret = non_specified_device_request_ctx(options); -+ -+ if (ret) { -+ SEC_TST_PRT("failed to request sec ctx!\n"); -+ goto free_ctxs; -+ } -+ - switch(subtype) { - case CIPHER_TYPE: - g_sched = wd_sched_rr_alloc(SCHED_POLICY_RR, 1, max_node, wd_cipher_poll_ctx); -@@ -652,7 +728,7 @@ static int init_ctx_config(struct acc_option *options) - break; - } - if (ret) { -- SEC_TST_PRT("failed to cipher ctx!\n"); -+ SEC_TST_PRT("failed to init sec ctx!\n"); - goto free_sched; - } - -@@ -662,12 +738,11 @@ free_sched: - wd_sched_rr_release(g_sched); - - free_ctx: -- for (; i >= 0; i--) -+ for (int i = g_ctxnum; i >= 0; i--) - wd_release_ctx(g_ctx_cfg.ctxs[i].ctx); -- free(g_ctx_cfg.ctxs); - --free_list: -- wd_free_list_accels(list); -+free_ctxs: -+ free(g_ctx_cfg.ctxs); - - return ret; - } -diff --git a/uadk_tool/benchmark/zip_uadk_benchmark.c b/uadk_tool/benchmark/zip_uadk_benchmark.c -index 1dd3990..e2876a9 100644 ---- a/uadk_tool/benchmark/zip_uadk_benchmark.c -+++ b/uadk_tool/benchmark/zip_uadk_benchmark.c -@@ -318,21 +318,17 @@ static int init_ctx_config2(struct acc_option *options) - return 0; - } - --static int init_ctx_config(struct acc_option *options) -+static int specified_device_request_ctx(struct acc_option *options) - { -- struct uacce_dev_list *list, *tmp; -+ struct uacce_dev_list *list = NULL; -+ struct uacce_dev_list *tmp = NULL; - char *alg = options->algclass; -- int optype = options->optype; - int mode = options->syncmode; - struct uacce_dev *dev = NULL; -- int max_node, i; -+ int avail_ctx = 0; - char *dev_name; - int ret = 0; -- -- optype = optype % WD_DIR_MAX; -- max_node = numa_max_node() + 1; -- if (max_node <= 0) -- return -EINVAL; -+ int i = 0; - - list = wd_get_accel_list(alg); - if (!list) { -@@ -340,15 +336,11 @@ static int init_ctx_config(struct acc_option *options) - return -ENODEV; - } - -- if (strlen(options->device) == 0) { -- dev = list->dev; -- } else { -- for (tmp = list; tmp; tmp = tmp->next) { -- dev_name = strrchr(tmp->dev->dev_root, '/') + 1; -- if (!strcmp(dev_name, options->device)) { -- dev = tmp->dev; -- break; -- } -+ for (tmp = list; tmp != NULL; tmp = tmp->next) { -+ dev_name = strrchr(tmp->dev->dev_root, '/') + 1; -+ if (!strcmp(dev_name, options->device)) { -+ dev = tmp->dev; -+ break; - } - } - -@@ -358,29 +350,114 @@ static int init_ctx_config(struct acc_option *options) - goto free_list; - } - -- /* If there is no numa, we defualt config to zero */ -- if (dev->numa_id < 0) -- dev->numa_id = 0; -- -- memset(&g_ctx_cfg, 0, sizeof(struct wd_ctx_config)); -- g_ctx_cfg.ctx_num = g_ctxnum; -- g_ctx_cfg.ctxs = calloc(g_ctxnum, sizeof(struct wd_ctx)); -- if (!g_ctx_cfg.ctxs) { -- ret = -ENOMEM; -+ avail_ctx = wd_get_avail_ctx(dev); -+ if (avail_ctx < 0) { -+ ZIP_TST_PRT("failed to get the number of available ctx from %s\n", options->device); -+ ret = avail_ctx; -+ goto free_list; -+ } else if (avail_ctx < g_ctxnum) { -+ ZIP_TST_PRT("error: not enough ctx available in %s\n", options->device); -+ ret = -ENODEV; - goto free_list; - } - -- for (i = 0; i < g_ctxnum; i++) { -+ /* If there is no numa, we default config to zero */ -+ if (dev->numa_id < 0) -+ dev->numa_id = 0; -+ -+ for (; i < g_ctxnum; i++) { - g_ctx_cfg.ctxs[i].ctx = wd_request_ctx(dev); - if (!g_ctx_cfg.ctxs[i].ctx) { - ZIP_TST_PRT("failed to alloc %dth ctx\n", i); -+ ret = -ENOMEM; - goto free_ctx; - } -- -- g_ctx_cfg.ctxs[i].op_type = optype; -+ g_ctx_cfg.ctxs[i].op_type = 0; - g_ctx_cfg.ctxs[i].ctx_mode = (__u8)mode; - } - -+ wd_free_list_accels(list); -+ return 0; -+ -+free_ctx: -+ for (; i >= 0; i--) -+ wd_release_ctx(g_ctx_cfg.ctxs[i].ctx); -+ -+free_list: -+ wd_free_list_accels(list); -+ -+ return ret; -+} -+ -+static int non_specified_device_request_ctx(struct acc_option *options) -+{ -+ char *alg = options->algclass; -+ int mode = options->syncmode; -+ struct uacce_dev *dev = NULL; -+ int ret = 0; -+ int i = 0; -+ -+ while (i < g_ctxnum) { -+ dev = wd_get_accel_dev(alg); -+ if (!dev) { -+ ZIP_TST_PRT("failed to get %s device\n", alg); -+ ret = -ENODEV; -+ goto free_ctx; -+ } -+ -+ /* If there is no numa, we default config to zero */ -+ if (dev->numa_id < 0) -+ dev->numa_id = 0; -+ -+ for (; i < g_ctxnum; i++) { -+ g_ctx_cfg.ctxs[i].ctx = wd_request_ctx(dev); -+ if (!g_ctx_cfg.ctxs[i].ctx) -+ break; -+ -+ g_ctx_cfg.ctxs[i].op_type = 0; -+ g_ctx_cfg.ctxs[i].ctx_mode = (__u8)mode; -+ } -+ -+ free(dev); -+ } -+ -+ return 0; -+ -+free_ctx: -+ for (; i >= 0; i--) -+ wd_release_ctx(g_ctx_cfg.ctxs[i].ctx); -+ -+ return ret; -+} -+ -+static int init_ctx_config(struct acc_option *options) -+{ -+ int optype = options->optype; -+ int mode = options->syncmode; -+ int max_node; -+ int ret = 0; -+ -+ optype = optype % WD_DIR_MAX; -+ max_node = numa_max_node() + 1; -+ if (max_node <= 0) -+ return -EINVAL; -+ -+ memset(&g_ctx_cfg, 0, sizeof(struct wd_ctx_config)); -+ g_ctx_cfg.ctx_num = g_ctxnum; -+ g_ctx_cfg.ctxs = calloc(g_ctxnum, sizeof(struct wd_ctx)); -+ if (!g_ctx_cfg.ctxs) -+ return -ENOMEM; -+ -+ if (strlen(options->device) != 0) -+ ret = specified_device_request_ctx(options); -+ else -+ ret = non_specified_device_request_ctx(options); -+ -+ if (ret) { -+ ZIP_TST_PRT("failed to request zip ctx!\n"); -+ goto free_ctxs; -+ } -+ - g_sched = wd_sched_rr_alloc(SCHED_POLICY_RR, 2, max_node, wd_comp_poll_ctx); - if (!g_sched) { - ZIP_TST_PRT("failed to alloc sched!\n"); -@@ -394,7 +471,7 @@ static int init_ctx_config(struct acc_option *options) - * All contexts for 2 modes & 2 types. - * The test only uses one kind of contexts at the same time. - */ -- param.numa_id = dev->numa_id; -+ param.numa_id = 0; - param.type = optype; - param.mode = mode; - param.begin = 0; -@@ -407,24 +484,21 @@ static int init_ctx_config(struct acc_option *options) - - ret = wd_comp_init(&g_ctx_cfg, g_sched); - if (ret) { -- ZIP_TST_PRT("failed to cipher ctx!\n"); -+ ZIP_TST_PRT("failed to init zip ctx!\n"); - goto free_sched; - } - -- wd_free_list_accels(list); -- - return 0; - - free_sched: - wd_sched_rr_release(g_sched); - - free_ctx: -- for (; i >= 0; i--) -+ for (int i = g_ctxnum; i >= 0; i--) - wd_release_ctx(g_ctx_cfg.ctxs[i].ctx); -- free(g_ctx_cfg.ctxs); - --free_list: -- wd_free_list_accels(list); -+free_ctxs: -+ free(g_ctx_cfg.ctxs); - - return ret; - } --- -2.25.1 - diff --git a/0042-ecc-check-need_debug-before-calling-WD_DEBUG.patch b/0042-ecc-check-need_debug-before-calling-WD_DEBUG.patch deleted file mode 100644 index fff8e56..0000000 --- a/0042-ecc-check-need_debug-before-calling-WD_DEBUG.patch +++ /dev/null @@ -1,54 +0,0 @@ -From ba54780c666c7f655cf6b18d0072e1e892656252 Mon Sep 17 00:00:00 2001 -From: Weili Qian -Date: Wed, 3 Apr 2024 11:24:52 +0800 -Subject: [PATCH 42/44] ecc: check need_debug before calling WD_DEBUG - -Before calling WD_DEBUG, check whether debug logs need to be recorded -to prevent the syslog syscall from affecting the performance. - -Signed-off-by: Weili Qian -Signed-off-by: JiangShui Yang ---- - wd_ecc.c | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - -diff --git a/wd_ecc.c b/wd_ecc.c -index e75bca0..65727e7 100644 ---- a/wd_ecc.c -+++ b/wd_ecc.c -@@ -997,20 +997,19 @@ static int fill_user_curve_cfg(struct wd_ecc_curve *param, - struct wd_ecc_sess_setup *setup) - { - struct wd_ecc_curve *src_param = setup->cv.cfg.pparam; -- __u32 curve_id; -+ bool need_debug = wd_need_debug(); -+ __u32 curve_id = 0; - int ret = 0; - - if (setup->cv.type == WD_CV_CFG_ID) { - curve_id = setup->cv.cfg.id; - ret = fill_param_by_id(param, setup->key_bits, curve_id); -- WD_DEBUG("set curve id %u!\n", curve_id); - } else if (setup->cv.type == WD_CV_CFG_PARAM) { - ret = set_key_cv(param, src_param); - if (ret) { - WD_ERR("failed to set key cv!\n"); - return ret; - } -- WD_DEBUG("set curve by user param!\n"); - } else { - WD_ERR("invalid: fill curve cfg type %u is error!\n", setup->cv.type); - return -WD_EINVAL; -@@ -1022,6 +1021,9 @@ static int fill_user_curve_cfg(struct wd_ecc_curve *param, - return -WD_EINVAL; - } - -+ if (need_debug) -+ WD_DEBUG("curve cfg type is %u, curve_id is %u!\n", setup->cv.type, curve_id); -+ - return ret; - } - --- -2.25.1 - diff --git a/0043-uadk-remove-unused-ioctl-cmd.patch b/0043-uadk-remove-unused-ioctl-cmd.patch deleted file mode 100644 index a0bfc71..0000000 --- a/0043-uadk-remove-unused-ioctl-cmd.patch +++ /dev/null @@ -1,28 +0,0 @@ -From b6aaaaf9eeb1061806c1a00faddd1ce91e5afa33 Mon Sep 17 00:00:00 2001 -From: Weili Qian -Date: Wed, 3 Apr 2024 11:24:53 +0800 -Subject: [PATCH 43/44] uadk: remove unused ioctl cmd - -Remove unused ioctl cmd UACCE_CMD_GET_SS_DMA. - -Signed-off-by: Weili Qian -Signed-off-by: JiangShui Yang ---- - include/uacce.h | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/include/uacce.h b/include/uacce.h -index fb3fb22..bb8d740 100644 ---- a/include/uacce.h -+++ b/include/uacce.h -@@ -15,7 +15,6 @@ extern "C" { - - #define UACCE_CMD_START _IO('W', 0) - #define UACCE_CMD_PUT_Q _IO('W', 1) --#define UACCE_CMD_GET_SS_DMA _IOR('W', 100, unsigned long) - - /** - * UACCE Device flags: --- -2.25.1 - diff --git a/0044-uadk-v1-remove-dummy.patch b/0044-uadk-v1-remove-dummy.patch deleted file mode 100644 index ab6968b..0000000 --- a/0044-uadk-v1-remove-dummy.patch +++ /dev/null @@ -1,247 +0,0 @@ -From deec45b9919adbdf968eae688003b96e69a77011 Mon Sep 17 00:00:00 2001 -From: Wenkai Lin -Date: Wed, 3 Apr 2024 11:24:54 +0800 -Subject: [PATCH 44/44] uadk: v1: remove dummy - -dummy is no longer use, remove it. - -Signed-off-by: Wenkai Lin -Signed-off-by: JiangShui Yang ---- - Makefile.am | 1 - - v1/internal/wd_dummy_usr_if.h | 45 ------------ - v1/test/test_dummy.c | 126 ---------------------------------- - v1/wd_adapter.c | 13 ---- - 4 files changed, 185 deletions(-) - delete mode 100644 v1/internal/wd_dummy_usr_if.h - delete mode 100644 v1/test/test_dummy.c - -diff --git a/Makefile.am b/Makefile.am -index 68f3106..1049639 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -60,7 +60,6 @@ libwd_la_SOURCES=wd.c wd_mempool.c wd.h wd_alg.c wd_alg.h \ - v1/wd_bmm.c v1/wd_bmm.h \ - v1/wd_ecc.c v1/wd_ecc.h \ - v1/wd_sgl.c v1/wd_sgl.h \ -- v1/drv/dummy_drv.c v1/drv/dummy_drv.h \ - v1/drv/hisi_qm_udrv.c v1/drv/hisi_qm_udrv.h \ - v1/drv/hisi_zip_udrv.c v1/drv/hisi_zip_udrv.h \ - v1/drv/hisi_hpre_udrv.c v1/drv/hisi_hpre_udrv.h \ -diff --git a/v1/internal/wd_dummy_usr_if.h b/v1/internal/wd_dummy_usr_if.h -deleted file mode 100644 -index b5673ec..0000000 ---- a/v1/internal/wd_dummy_usr_if.h -+++ /dev/null -@@ -1,45 +0,0 @@ --/* -- * Copyright 2019 Huawei Technologies Co.,Ltd.All rights reserved. -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/* -- * This file defines the dummy algo interface between the user -- * and kernel space -- */ -- --#ifndef __DUMMY_USR_IF_H --#define __DUMMY_USR_IF_H -- -- --/* Algorithm name */ --#define AN_DUMMY_MEMCPY "memcopy" -- --#define AAN_AFLAGS "aflags" --#define AAN_MAX_COPY_SIZE "max_copy_size" -- --struct wd_dummy_cpy_param { -- int flags; -- int max_copy_size; --}; -- --struct wd_dummy_cpy_msg { -- char *src_addr; -- char *tgt_addr; -- size_t size; -- void *ptr; -- __u32 ret; --}; -- --#endif -diff --git a/v1/test/test_dummy.c b/v1/test/test_dummy.c -deleted file mode 100644 -index 75ab33a..0000000 ---- a/v1/test/test_dummy.c -+++ /dev/null -@@ -1,126 +0,0 @@ --/* -- * Copyright 2018-2019 Huawei Technologies Co.,Ltd.All rights reserved. -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#include "../config.h" --#include --#include --#include --#include --#include -- --#include "wd_sched.h" --#include "wd_dummy_usr_if.h" --#include "dummy_hw_usr_if.h" -- --#define CPSZ 4096 -- --#define SYS_ERR_COND(cond, msg) if(cond) { \ -- perror(msg); \ -- exit(EXIT_FAILURE); } -- --struct wd_dummy_cpy_msg *msgs; -- --int wd_dummy_memcpy(struct wd_queue *q, void *dst, void *src, size_t size) --{ -- struct wd_dummy_cpy_msg req, *resp; -- int ret; -- -- req.src_addr = src; -- req.tgt_addr = dst; -- req.size = size; -- -- ret = wd_send(q, (void *)&req); -- if (ret) -- return ret; -- -- return wd_recv_sync(q, (void **)&resp, 1000); --} -- --static void wd_dummy_sched_init_cache(struct wd_scheduler *sched, int i) --{ -- sched->msgs[i].msg = &msgs[i]; -- msgs[i].src_addr = sched->msgs[i].data_in; -- msgs[i].tgt_addr = sched->msgs[i].data_out; -- msgs[i].size = sched->msg_data_size; --} -- --static int input_num = 10; --static int wd_dummy_sched_input(struct wd_msg *msg, void *priv) --{ -- SYS_ERR_COND(input_num <= 0, "input"); -- input_num--; -- memset(msg->data_in, '0'+input_num, CPSZ); -- memset(msg->data_out, 'x', CPSZ); -- -- return 0; --} -- --static int wd_dummy_sched_output(struct wd_msg *msg, void *priv) --{ -- int i; -- char *in, *out; -- -- for (i = 0; i < CPSZ; i++) { -- in = (char *)msg->data_in; -- out = (char *)msg->data_out; -- if(in[i] != out[i]) { -- printf("verify result fail on %d\n", i); -- break; -- } -- -- } -- printf("verify result (%d) success (remained=%d)\n", in[0], input_num); -- -- return 0; --} -- --struct wd_scheduler sched = { -- .q_num = 1, -- .ss_region_size = 0, -- .msg_cache_num = 4, -- .msg_data_size = CPSZ, -- .init_cache = wd_dummy_sched_init_cache, -- .input = wd_dummy_sched_input, -- .output = wd_dummy_sched_output, --}; -- --int main(int argc, char *argv[]) --{ -- int ret, i; -- int max_step = 20; -- -- sched.qs = calloc(sched.q_num, sizeof(*sched.qs)); -- SYS_ERR_COND(!sched.qs, "calloc"); -- -- msgs = calloc(sched.msg_cache_num, sizeof(*msgs)); -- SYS_ERR_COND(!msgs, "calloc"); -- -- for (i = 0; i < sched.q_num; i++) -- sched.qs[i].capa.alg = "memcpy"; -- -- ret = wd_sched_init(&sched); -- SYS_ERR_COND(ret, "wd_sched_init"); -- -- while(input_num || !wd_sched_empty(&sched)) { -- ret = wd_sched_work(&sched, input_num); -- SYS_ERR_COND(ret < 0, "wd_sched_work"); -- SYS_ERR_COND(max_step-- < 0, "max_step"); -- } -- -- wd_sched_fini(&sched); -- free(sched.qs); -- return EXIT_SUCCESS; --} -diff --git a/v1/wd_adapter.c b/v1/wd_adapter.c -index d574200..b9b841d 100644 ---- a/v1/wd_adapter.c -+++ b/v1/wd_adapter.c -@@ -20,7 +20,6 @@ - - #include "config.h" - #include "v1/wd_util.h" --#include "v1/drv/dummy_drv.h" - #include "v1/drv/hisi_qm_udrv.h" - #include "v1/drv/hisi_rng_udrv.h" - #include "v1/wd_adapter.h" -@@ -29,18 +28,6 @@ - #define ALIGN(x, a) __ALIGN_MASK(x, (typeof(x))(a)-1) - - static const struct wd_drv_dio_if hw_dio_tbl[] = { { -- .hw_type = "dummy_v1", -- .open = dummy_set_queue_dio, -- .close = dummy_unset_queue_dio, -- .send = dummy_add_to_dio_q, -- .recv = dummy_get_from_dio_q, -- }, { -- .hw_type = "dummy_v2", -- .open = dummy_set_queue_dio, -- .close = dummy_unset_queue_dio, -- .send = dummy_add_to_dio_q, -- .recv = dummy_get_from_dio_q, -- }, { - .hw_type = HISI_QM_API_VER_BASE WD_UACCE_API_VER_NOIOMMU_SUBFIX, - .open = qm_init_queue, - .close = qm_uninit_queue, --- -2.25.1 - diff --git a/0045-cipher-optimze-input-lengths-check.patch b/0045-cipher-optimze-input-lengths-check.patch deleted file mode 100644 index b0cec55..0000000 --- a/0045-cipher-optimze-input-lengths-check.patch +++ /dev/null @@ -1,114 +0,0 @@ -From 4e1a4eb28f0e476cf4587d56b5cef4350b33ab82 Mon Sep 17 00:00:00 2001 -From: Wenkai Lin -Date: Fri, 29 Mar 2024 16:53:04 +0800 -Subject: [PATCH 45/52] cipher: optimze input lengths check - -It is more reasonable to check the input lengths of various cipher -algorithms at the algorithm layer. - -Signed-off-by: Wenkai Lin -Signed-off-by: Qi Tao ---- - drv/hisi_sec.c | 19 +++++-------------- - wd_cipher.c | 26 ++++++++++++++++++++++++++ - 2 files changed, 31 insertions(+), 14 deletions(-) - -diff --git a/drv/hisi_sec.c b/drv/hisi_sec.c -index 852340d..6625c41 100644 ---- a/drv/hisi_sec.c -+++ b/drv/hisi_sec.c -@@ -960,10 +960,9 @@ static void parse_cipher_bd2(struct hisi_qp *qp, struct hisi_sec_sqe *sqe, - dump_sec_msg(temp_msg, "cipher"); - } - --static int aes_sm4_len_check(struct wd_cipher_msg *msg) -+static int aes_len_check(struct wd_cipher_msg *msg) - { -- if (msg->alg == WD_CIPHER_AES && -- msg->in_bytes <= AES_BLOCK_SIZE && -+ if (msg->in_bytes <= AES_BLOCK_SIZE && - (msg->mode == WD_CIPHER_CBC_CS1 || - msg->mode == WD_CIPHER_CBC_CS2 || - msg->mode == WD_CIPHER_CBC_CS3)) { -@@ -972,13 +971,6 @@ static int aes_sm4_len_check(struct wd_cipher_msg *msg) - return -WD_EINVAL; - } - -- if ((msg->in_bytes & (AES_BLOCK_SIZE - 1)) && -- (msg->mode == WD_CIPHER_CBC || msg->mode == WD_CIPHER_ECB)) { -- WD_ERR("failed to check input bytes of AES or SM4, size = %u\n", -- msg->in_bytes); -- return -WD_EINVAL; -- } -- - return 0; - } - -@@ -986,8 +978,7 @@ static int cipher_len_check(struct wd_cipher_msg *msg) - { - int ret; - -- if (msg->in_bytes > MAX_INPUT_DATA_LEN || -- !msg->in_bytes) { -+ if (msg->in_bytes > MAX_INPUT_DATA_LEN) { - WD_ERR("input cipher length is error, size = %u\n", - msg->in_bytes); - return -WD_EINVAL; -@@ -1016,8 +1007,8 @@ static int cipher_len_check(struct wd_cipher_msg *msg) - return 0; - } - -- if (msg->alg == WD_CIPHER_AES || msg->alg == WD_CIPHER_SM4) { -- ret = aes_sm4_len_check(msg); -+ if (msg->alg == WD_CIPHER_AES) { -+ ret = aes_len_check(msg); - if (ret) - return ret; - } -diff --git a/wd_cipher.c b/wd_cipher.c -index f35ce6f..279ca8b 100644 ---- a/wd_cipher.c -+++ b/wd_cipher.c -@@ -565,6 +565,28 @@ static int cipher_iv_len_check(struct wd_cipher_req *req, - return ret; - } - -+static int cipher_len_check(handle_t h_sess, struct wd_cipher_req *req) -+{ -+ struct wd_cipher_sess *sess = (struct wd_cipher_sess *)h_sess; -+ -+ if (!req->in_bytes) { -+ WD_ERR("invalid: cipher input length is zero!\n"); -+ return -WD_EINVAL; -+ } -+ -+ if (sess->alg != WD_CIPHER_AES && sess->alg != WD_CIPHER_SM4) -+ return 0; -+ -+ if ((req->in_bytes & (AES_BLOCK_SIZE - 1)) && -+ (sess->mode == WD_CIPHER_CBC || sess->mode == WD_CIPHER_ECB)) { -+ WD_ERR("failed to check input bytes of AES or SM4, size = %u\n", -+ req->in_bytes); -+ return -WD_EINVAL; -+ } -+ -+ return 0; -+} -+ - static int wd_cipher_check_params(handle_t h_sess, - struct wd_cipher_req *req, __u8 mode) - { -@@ -587,6 +609,10 @@ static int wd_cipher_check_params(handle_t h_sess, - return -WD_EINVAL; - } - -+ ret = cipher_len_check(h_sess, req); -+ if (unlikely(ret)) -+ return ret; -+ - ret = wd_check_src_dst(req->src, req->in_bytes, req->dst, req->out_bytes); - if (unlikely(ret)) { - WD_ERR("invalid: src/dst addr is NULL when src/dst size is non-zero!\n"); --- -2.25.1 - diff --git a/0046-uadk-v1-improve-the-judgment-conditions-of-tag.patch b/0046-uadk-v1-improve-the-judgment-conditions-of-tag.patch deleted file mode 100644 index eacd21e..0000000 --- a/0046-uadk-v1-improve-the-judgment-conditions-of-tag.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 628139bccaff2499d35cb530f54519f0aa744923 Mon Sep 17 00:00:00 2001 -From: Longfang Liu -Date: Fri, 29 Mar 2024 16:54:41 +0800 -Subject: [PATCH 46/52] uadk/v1: improve the judgment conditions of tag - -Before calling this function, it is guaranteed that the tag is -not empty. - -In addition, some alarm issues in hpre have been modified. - -Signed-off-by: Longfang Liu -Signed-off-by: Qi Tao ---- - v1/drv/hisi_hpre_udrv.c | 4 ++-- - v1/drv/hisi_sec_udrv.c | 3 +-- - 2 files changed, 3 insertions(+), 4 deletions(-) - -diff --git a/v1/drv/hisi_hpre_udrv.c b/v1/drv/hisi_hpre_udrv.c -index de614f2..eaee4b1 100644 ---- a/v1/drv/hisi_hpre_udrv.c -+++ b/v1/drv/hisi_hpre_udrv.c -@@ -212,13 +212,13 @@ static int qm_fill_rsa_pubkey(struct wcrypto_rsa_pubkey *pubkey, void **data) - wd_e->bsize, wd_e->dsize, "rsa pubkey e"); - if (unlikely(ret)) - return ret; -- wd_e->dsize = wd_e->dsize; -+ wd_e->dsize = wd_e->bsize; - - ret = qm_crypto_bin_to_hpre_bin(wd_n->data, (const char *)wd_n->data, - wd_n->bsize, wd_n->dsize, "rsa pubkey n"); - if (unlikely(ret)) - return ret; -- wd_n->dsize = wd_n->dsize; -+ wd_n->dsize = wd_n->bsize; - - *data = wd_e->data; - return (int)(wd_n->bsize + wd_e->bsize); -diff --git a/v1/drv/hisi_sec_udrv.c b/v1/drv/hisi_sec_udrv.c -index d046327..c0bd73d 100644 ---- a/v1/drv/hisi_sec_udrv.c -+++ b/v1/drv/hisi_sec_udrv.c -@@ -759,8 +759,7 @@ static int fill_cipher_bd2(struct wd_queue *q, struct hisi_sec_sqe *sqe, - return ret; - } - -- if (tag) -- sqe->type2.tag = tag->wcrypto_tag.ctx_id; -+ sqe->type2.tag = tag->wcrypto_tag.ctx_id; - - return ret; - } --- -2.25.1 - diff --git a/0047-uadk-v1-fix-for-sec-cipher-bd1-ci_gen-configuration.patch b/0047-uadk-v1-fix-for-sec-cipher-bd1-ci_gen-configuration.patch deleted file mode 100644 index ab3160a..0000000 --- a/0047-uadk-v1-fix-for-sec-cipher-bd1-ci_gen-configuration.patch +++ /dev/null @@ -1,39 +0,0 @@ -From f59a72aefeb714c95bddca71431e95746094d6f7 Mon Sep 17 00:00:00 2001 -From: Wenkai Lin -Date: Fri, 29 Mar 2024 16:56:43 +0800 -Subject: [PATCH 47/52] uadk/v1: fix for sec cipher bd1 ci_gen configuration - -In storage scenarios, the XTS mode is used for encrypting and decrypting -data on and off disks. According to the definition of this mode, the input -parameter to genarate IV is the LBA, so update SEC bd1 xts mode CI_GEN -from 0 to 3, which means use LBA mode. - -Signed-off-by: Wenkai Lin -Signed-off-by: Qi Tao ---- - v1/drv/hisi_sec_udrv.c | 9 ++++----- - 1 file changed, 4 insertions(+), 5 deletions(-) - -diff --git a/v1/drv/hisi_sec_udrv.c b/v1/drv/hisi_sec_udrv.c -index c0bd73d..d4e090a 100644 ---- a/v1/drv/hisi_sec_udrv.c -+++ b/v1/drv/hisi_sec_udrv.c -@@ -312,11 +312,10 @@ static int fill_cipher_bd1_type(struct wcrypto_cipher_msg *msg, - - fill_bd_addr_type(msg->data_fmt, sqe); - -- /* -- * BD1 cipher only provides ci_gen=0 for compatibility, so user -- * should prepare iv[gran_num] and iv_bytes is sum of all grans -- */ -- sqe->type1.ci_gen = CI_GEN_BY_ADDR; -+ if (msg->mode == WCRYPTO_CIPHER_XTS) -+ sqe->type1.ci_gen = CI_GEN_BY_LBA; -+ else -+ sqe->type1.ci_gen = CI_GEN_BY_ADDR; - - return WD_SUCCESS; - } --- -2.25.1 - diff --git a/0048-uadk-fix-for-shmget-shmflag.patch b/0048-uadk-fix-for-shmget-shmflag.patch deleted file mode 100644 index bb23b44..0000000 --- a/0048-uadk-fix-for-shmget-shmflag.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 0fc17f5c160cb6ea2d1f4b08e9884f29ff75b2dc Mon Sep 17 00:00:00 2001 -From: Wenkai Lin -Date: Fri, 29 Mar 2024 16:58:23 +0800 -Subject: [PATCH 48/52] uadk: fix for shmget shmflag - -The shmflag should be 0600 in octal, not 600 in decimal. - -Signed-off-by: Wenkai Lin -Signed-off-by: Qi Tao ---- - uadk_tool/dfx/uadk_dfx.c | 2 +- - wd_util.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/uadk_tool/dfx/uadk_dfx.c b/uadk_tool/dfx/uadk_dfx.c -index 796135a..9c54b7b 100644 ---- a/uadk_tool/dfx/uadk_dfx.c -+++ b/uadk_tool/dfx/uadk_dfx.c -@@ -16,7 +16,7 @@ - - #define uadk_build_date() printf("built on: %s %s\n", __DATE__, __TIME__) - #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) --#define PRIVILEGE_FLAG 666 -+#define PRIVILEGE_FLAG 0666 - - struct uadk_env_var { - const char *module; -diff --git a/wd_util.c b/wd_util.c -index fb58167..2635dc3 100644 ---- a/wd_util.c -+++ b/wd_util.c -@@ -19,7 +19,7 @@ - #define WD_BALANCE_THRHD 1280 - #define WD_RECV_MAX_CNT_SLEEP 60000000 - #define WD_RECV_MAX_CNT_NOSLEEP 200000000 --#define PRIVILEGE_FLAG 600 -+#define PRIVILEGE_FLAG 0600 - #define MIN(a, b) ((a) > (b) ? (b) : (a)) - #define MAX(a, b) ((a) > (b) ? (a) : (b)) - --- -2.25.1 - diff --git a/0049-sec-optimze-for-directly-assigning-values-to-structu.patch b/0049-sec-optimze-for-directly-assigning-values-to-structu.patch deleted file mode 100644 index 016f5c4..0000000 --- a/0049-sec-optimze-for-directly-assigning-values-to-structu.patch +++ /dev/null @@ -1,100 +0,0 @@ -From 705e33d624defc335cdb1c96335da684868858a3 Mon Sep 17 00:00:00 2001 -From: Wenkai Lin -Date: Fri, 29 Mar 2024 16:59:34 +0800 -Subject: [PATCH 49/52] sec: optimze for directly assigning values to - structures - -It is more reasonable to use pointers for value assignment. - -Signed-off-by: Wenkai Lin -Signed-off-by: Qi Tao ---- - drv/hisi_sec.c | 36 ++++++++++++------------------------ - 1 file changed, 12 insertions(+), 24 deletions(-) - -diff --git a/drv/hisi_sec.c b/drv/hisi_sec.c -index 6625c41..b218cd8 100644 ---- a/drv/hisi_sec.c -+++ b/drv/hisi_sec.c -@@ -542,66 +542,54 @@ static int hisi_sec_aead_recv_v3(struct wd_alg_driver *drv, handle_t ctx, void * - - static int cipher_send(struct wd_alg_driver *drv, handle_t ctx, void *msg) - { -- handle_t h_qp = (handle_t)wd_ctx_get_priv(ctx); -- struct hisi_qp *qp = (struct hisi_qp *)h_qp; -- struct hisi_qm_queue_info q_info = qp->q_info; -+ struct hisi_qp *qp = (struct hisi_qp *)wd_ctx_get_priv(ctx); - -- if (q_info.hw_type == HISI_QM_API_VER2_BASE) -+ if (qp->q_info.hw_type == HISI_QM_API_VER2_BASE) - return hisi_sec_cipher_send(drv, ctx, msg); - return hisi_sec_cipher_send_v3(drv, ctx, msg); - } - - static int cipher_recv(struct wd_alg_driver *drv, handle_t ctx, void *msg) - { -- handle_t h_qp = (handle_t)wd_ctx_get_priv(ctx); -- struct hisi_qp *qp = (struct hisi_qp *)h_qp; -- struct hisi_qm_queue_info q_info = qp->q_info; -+ struct hisi_qp *qp = (struct hisi_qp *)wd_ctx_get_priv(ctx); - -- if (q_info.hw_type == HISI_QM_API_VER2_BASE) -+ if (qp->q_info.hw_type == HISI_QM_API_VER2_BASE) - return hisi_sec_cipher_recv(drv, ctx, msg); - return hisi_sec_cipher_recv_v3(drv, ctx, msg); - } - - static int digest_send(struct wd_alg_driver *drv, handle_t ctx, void *msg) - { -- handle_t h_qp = (handle_t)wd_ctx_get_priv(ctx); -- struct hisi_qp *qp = (struct hisi_qp *)h_qp; -- struct hisi_qm_queue_info q_info = qp->q_info; -+ struct hisi_qp *qp = (struct hisi_qp *)wd_ctx_get_priv(ctx); - -- if (q_info.hw_type == HISI_QM_API_VER2_BASE) -+ if (qp->q_info.hw_type == HISI_QM_API_VER2_BASE) - return hisi_sec_digest_send(drv, ctx, msg); - return hisi_sec_digest_send_v3(drv, ctx, msg); - } - - static int digest_recv(struct wd_alg_driver *drv, handle_t ctx, void *msg) - { -- handle_t h_qp = (handle_t)wd_ctx_get_priv(ctx); -- struct hisi_qp *qp = (struct hisi_qp *)h_qp; -- struct hisi_qm_queue_info q_info = qp->q_info; -+ struct hisi_qp *qp = (struct hisi_qp *)wd_ctx_get_priv(ctx); - -- if (q_info.hw_type == HISI_QM_API_VER2_BASE) -+ if (qp->q_info.hw_type == HISI_QM_API_VER2_BASE) - return hisi_sec_digest_recv(drv, ctx, msg); - return hisi_sec_digest_recv_v3(drv, ctx, msg); - } - - static int aead_send(struct wd_alg_driver *drv, handle_t ctx, void *msg) - { -- handle_t h_qp = (handle_t)wd_ctx_get_priv(ctx); -- struct hisi_qp *qp = (struct hisi_qp *)h_qp; -- struct hisi_qm_queue_info q_info = qp->q_info; -+ struct hisi_qp *qp = (struct hisi_qp *)wd_ctx_get_priv(ctx); - -- if (q_info.hw_type == HISI_QM_API_VER2_BASE) -+ if (qp->q_info.hw_type == HISI_QM_API_VER2_BASE) - return hisi_sec_aead_send(drv, ctx, msg); - return hisi_sec_aead_send_v3(drv, ctx, msg); - } - - static int aead_recv(struct wd_alg_driver *drv, handle_t ctx, void *msg) - { -- handle_t h_qp = (handle_t)wd_ctx_get_priv(ctx); -- struct hisi_qp *qp = (struct hisi_qp *)h_qp; -- struct hisi_qm_queue_info q_info = qp->q_info; -+ struct hisi_qp *qp = (struct hisi_qp *)wd_ctx_get_priv(ctx); - -- if (q_info.hw_type == HISI_QM_API_VER2_BASE) -+ if (qp->q_info.hw_type == HISI_QM_API_VER2_BASE) - return hisi_sec_aead_recv(drv, ctx, msg); - return hisi_sec_aead_recv_v3(drv, ctx, msg); - } --- -2.25.1 - diff --git a/0050-util-optimize-for-wd_handle_msg_sync.patch b/0050-util-optimize-for-wd_handle_msg_sync.patch deleted file mode 100644 index b38f6d2..0000000 --- a/0050-util-optimize-for-wd_handle_msg_sync.patch +++ /dev/null @@ -1,61 +0,0 @@ -From f36aa5f7e8f82a90aa0cb729bf00cc51f76970d5 Mon Sep 17 00:00:00 2001 -From: Wenkai Lin -Date: Fri, 29 Mar 2024 17:01:03 +0800 -Subject: [PATCH 50/52] util: optimize for wd_handle_msg_sync - -1. Separate rx_cnt auto-increment and judgment. -2. Reduce the condition judgment in the case of eagain. - -Signed-off-by: Wenkai Lin -Signed-off-by: Qi Tao ---- - wd_util.c | 26 +++++++++++++++----------- - 1 file changed, 15 insertions(+), 11 deletions(-) - -diff --git a/wd_util.c b/wd_util.c -index 2635dc3..0744ff0 100644 ---- a/wd_util.c -+++ b/wd_util.c -@@ -1822,24 +1822,28 @@ int wd_handle_msg_sync(struct wd_alg_driver *drv, struct wd_msg_handle *msg_hand - do { - if (epoll_en) { - ret = wd_ctx_wait(ctx, POLL_TIME); -- if (ret < 0) -+ if (unlikely(ret < 0)) - WD_ERR("wd ctx wait timeout(%d)!\n", ret); - } - - ret = msg_handle->recv(drv, ctx, msg); -- if (ret == -WD_EAGAIN) { -- if (unlikely(rx_cnt++ >= timeout)) { -- WD_ERR("failed to recv msg: timeout!\n"); -- return -WD_ETIMEDOUT; -+ if (ret != -WD_EAGAIN) { -+ if (unlikely(ret < 0)) { -+ WD_ERR("failed to recv msg: error = %d!\n", ret); -+ return ret; - } -+ break; -+ } - -- if (balance && *balance > WD_BALANCE_THRHD) -- usleep(1); -- } else if (unlikely(ret < 0)) { -- WD_ERR("failed to recv msg: error = %d!\n", ret); -- return ret; -+ rx_cnt++; -+ if (unlikely(rx_cnt >= timeout)) { -+ WD_ERR("failed to recv msg: timeout!\n"); -+ return -WD_ETIMEDOUT; - } -- } while (ret < 0); -+ -+ if (balance && *balance > WD_BALANCE_THRHD) -+ usleep(1); -+ } while (1); - - if (balance) - *balance = rx_cnt; --- -2.25.1 - diff --git a/0051-uadk-drv_hisi-optimize-qm-recv-function.patch b/0051-uadk-drv_hisi-optimize-qm-recv-function.patch deleted file mode 100644 index b070b8e..0000000 --- a/0051-uadk-drv_hisi-optimize-qm-recv-function.patch +++ /dev/null @@ -1,115 +0,0 @@ -From ace1da03900d04a1e14d61200a89c539ff78856d Mon Sep 17 00:00:00 2001 -From: Wenkai Lin -Date: Fri, 29 Mar 2024 17:02:23 +0800 -Subject: [PATCH 51/52] uadk: drv_hisi - optimize qm recv function - -Ensure that the value written by the hardware is -read from the memory each time, reduce the number -of packet receiving times by half. -Also sqe address is only need calculated when packets -are received. - -Signed-off-by: Wenkai Lin -Signed-off-by: Qi Tao ---- - drv/hisi_qm_udrv.c | 45 +++++++++++++++++++++++---------------------- - 1 file changed, 23 insertions(+), 22 deletions(-) - -diff --git a/drv/hisi_qm_udrv.c b/drv/hisi_qm_udrv.c -index d8b5271..304764e 100644 ---- a/drv/hisi_qm_udrv.c -+++ b/drv/hisi_qm_udrv.c -@@ -21,8 +21,8 @@ - #define QM_DBELL_SQN_MASK 0x3ff - #define QM_DBELL_CMD_MASK 0xf - #define QM_Q_DEPTH 1024 --#define CQE_PHASE(cq) (__le16_to_cpu((cq)->w7) & 0x1) --#define CQE_SQ_HEAD_INDEX(cq) (__le16_to_cpu((cq)->sq_head) & 0xffff) -+#define CQE_PHASE(cqe) (__le16_to_cpu((cqe)->w7) & 0x1) -+#define CQE_SQ_HEAD_INDEX(cqe) (__le16_to_cpu((cqe)->sq_head) & 0xffff) - #define VERSION_ID_SHIFT 9 - - #define UACCE_CMD_QM_SET_QP_CTX _IOWR('H', 10, struct hisi_qp_ctx) -@@ -505,32 +505,33 @@ int hisi_qm_send(handle_t h_qp, const void *req, __u16 expect, __u16 *count) - return 0; - } - --static int hisi_qm_recv_single(struct hisi_qm_queue_info *q_info, void *resp) -+static int hisi_qm_recv_single(struct hisi_qm_queue_info *q_info, handle_t h_ctx, -+ void *resp, __u16 idx) - { -- struct hisi_qp *qp = container_of(q_info, struct hisi_qp, q_info); -+ __u16 i, j, cqe_phase; - struct cqe *cqe; -- __u16 i, j; - - pthread_spin_lock(&q_info->rv_lock); - i = q_info->cq_head_index; - cqe = q_info->cq_base + i * sizeof(struct cqe); -+ cqe_phase = CQE_PHASE(cqe); -+ /* Use dsb to read from memory and improve the receiving efficiency. */ -+ rmb(); - -- if (q_info->cqc_phase == CQE_PHASE(cqe)) { -- /* Make sure cqe valid bit is set */ -- rmb(); -- j = CQE_SQ_HEAD_INDEX(cqe); -- if (unlikely(j >= q_info->sq_depth)) { -- pthread_spin_unlock(&q_info->rv_lock); -- WD_DEV_ERR(qp->h_ctx, "CQE_SQ_HEAD_INDEX(%u) error!\n", j); -- return -WD_EIO; -- } -- memcpy(resp, (void *)((uintptr_t)q_info->sq_base + -- j * q_info->sqe_size), q_info->sqe_size); -- } else { -+ if (q_info->cqc_phase != cqe_phase) { - pthread_spin_unlock(&q_info->rv_lock); - return -WD_EAGAIN; - } - -+ j = CQE_SQ_HEAD_INDEX(cqe); -+ if (unlikely(j >= q_info->sq_depth)) { -+ pthread_spin_unlock(&q_info->rv_lock); -+ WD_DEV_ERR(h_ctx, "CQE_SQ_HEAD_INDEX(%u) error!\n", j); -+ return -WD_EIO; -+ } -+ memcpy((void *)((uintptr_t)resp + idx * q_info->sqe_size), -+ (void *)((uintptr_t)q_info->sq_base + j * q_info->sqe_size), q_info->sqe_size); -+ - if (i == q_info->cq_depth - 1) { - q_info->cqc_phase = !(q_info->cqc_phase); - i = 0; -@@ -544,7 +545,7 @@ static int hisi_qm_recv_single(struct hisi_qm_queue_info *q_info, void *resp) - */ - if (unlikely(wd_ioread32(q_info->ds_rx_base) == 1)) { - pthread_spin_unlock(&q_info->rv_lock); -- WD_DEV_ERR(qp->h_ctx, "wd queue hw error happened after qm receive!\n"); -+ WD_DEV_ERR(h_ctx, "wd queue hw error happened before qm receive!\n"); - return -WD_HW_EACCESS; - } - -@@ -565,8 +566,9 @@ int hisi_qm_recv(handle_t h_qp, void *resp, __u16 expect, __u16 *count) - { - struct hisi_qp *qp = (struct hisi_qp *)h_qp; - struct hisi_qm_queue_info *q_info; -- int recv_num = 0; -- int i, ret, offset; -+ __u16 recv_num = 0; -+ __u16 i; -+ int ret; - - if (unlikely(!resp || !qp || !count)) - return -WD_EINVAL; -@@ -581,8 +583,7 @@ int hisi_qm_recv(handle_t h_qp, void *resp, __u16 expect, __u16 *count) - } - - for (i = 0; i < expect; i++) { -- offset = i * q_info->sqe_size; -- ret = hisi_qm_recv_single(q_info, resp + offset); -+ ret = hisi_qm_recv_single(q_info, qp->h_ctx, resp, i); - if (ret) - break; - recv_num++; --- -2.25.1 - diff --git a/0052-uadk-modify-uadk-static-compile.patch b/0052-uadk-modify-uadk-static-compile.patch deleted file mode 100644 index 00b7cf3..0000000 --- a/0052-uadk-modify-uadk-static-compile.patch +++ /dev/null @@ -1,1307 +0,0 @@ -From a282605e6550b5572072f9968370fd01502a04f5 Mon Sep 17 00:00:00 2001 -From: Longfang Liu -Date: Fri, 29 Mar 2024 17:04:01 +0800 -Subject: [PATCH 52/52] uadk: modify uadk static compile - -After the UADK framework supports dynamic loading. Device drivers are -all default used in the form of dynamic libraries. - -Static compilation requires static declaration and cannot declare -unknown device drivers. Therefore, static compilation only supports -HiSilicon device drivers. - -Signed-off-by: Longfang Liu -Signed-off-by: Qi Tao ---- - drv/hisi_comp.c | 8 ++++++ - drv/hisi_hpre.c | 9 ++++++ - drv/hisi_sec.c | 8 ++++++ - include/wd_alg.h | 26 +++++++++++++---- - include/wd_alg_common.h | 17 +++++++---- - wd_aead.c | 61 ++++++++++++++++++++++++++------------- - wd_alg.c | 25 +++++++++++++++- - wd_cipher.c | 61 ++++++++++++++++++++++++++------------- - wd_comp.c | 63 ++++++++++++++++++++++++++++------------- - wd_dh.c | 61 ++++++++++++++++++++++++++------------- - wd_digest.c | 63 ++++++++++++++++++++++++++++------------- - wd_ecc.c | 61 ++++++++++++++++++++++++++------------- - wd_rsa.c | 61 ++++++++++++++++++++++++++------------- - 13 files changed, 377 insertions(+), 147 deletions(-) - -diff --git a/drv/hisi_comp.c b/drv/hisi_comp.c -index a1af567..2fa5eff 100644 ---- a/drv/hisi_comp.c -+++ b/drv/hisi_comp.c -@@ -1109,7 +1109,11 @@ static struct wd_alg_driver zip_alg_driver[] = { - GEN_ZIP_ALG_DRIVER("lz77_zstd"), - }; - -+#ifdef WD_STATIC_DRV -+void hisi_zip_probe(void) -+#else - static void __attribute__((constructor)) hisi_zip_probe(void) -+#endif - { - int alg_num = ARRAY_SIZE(zip_alg_driver); - int i, ret; -@@ -1124,7 +1128,11 @@ static void __attribute__((constructor)) hisi_zip_probe(void) - } - } - -+#ifdef WD_STATIC_DRV -+void hisi_zip_remove(void) -+#else - static void __attribute__((destructor)) hisi_zip_remove(void) -+#endif - { - int alg_num = ARRAY_SIZE(zip_alg_driver); - int i; -diff --git a/drv/hisi_hpre.c b/drv/hisi_hpre.c -index babc795..68a11ae 100644 ---- a/drv/hisi_hpre.c -+++ b/drv/hisi_hpre.c -@@ -1,3 +1,4 @@ -+ - /* SPDX-License-Identifier: Apache-2.0 */ - /* Copyright 2020-2021 Huawei Technologies Co.,Ltd. All rights reserved. */ - -@@ -2547,7 +2548,11 @@ static struct wd_alg_driver hpre_dh_driver = { - .get_usage = hpre_get_usage, - }; - -+#ifdef WD_STATIC_DRV -+void hisi_hpre_probe(void) -+#else - static void __attribute__((constructor)) hisi_hpre_probe(void) -+#endif - { - __u32 alg_num = ARRAY_SIZE(hpre_ecc_driver); - __u32 i; -@@ -2569,7 +2574,11 @@ static void __attribute__((constructor)) hisi_hpre_probe(void) - } - } - -+#ifdef WD_STATIC_DRV -+void hisi_hpre_remove(void) -+#else - static void __attribute__((destructor)) hisi_hpre_remove(void) -+#endif - { - __u32 alg_num = ARRAY_SIZE(hpre_ecc_driver); - __u32 i; -diff --git a/drv/hisi_sec.c b/drv/hisi_sec.c -index b218cd8..aba4185 100644 ---- a/drv/hisi_sec.c -+++ b/drv/hisi_sec.c -@@ -3087,7 +3087,11 @@ static void hisi_sec_exit(struct wd_alg_driver *drv) - drv->priv = NULL; - } - -+#ifdef WD_STATIC_DRV -+void hisi_sec2_probe(void) -+#else - static void __attribute__((constructor)) hisi_sec2_probe(void) -+#endif - { - int alg_num; - int i, ret; -@@ -3119,7 +3123,11 @@ static void __attribute__((constructor)) hisi_sec2_probe(void) - } - } - -+#ifdef WD_STATIC_DRV -+void hisi_sec2_remove(void) -+#else - static void __attribute__((destructor)) hisi_sec2_remove(void) -+#endif - { - int alg_num; - int i; -diff --git a/include/wd_alg.h b/include/wd_alg.h -index 861b7d9..1735896 100644 ---- a/include/wd_alg.h -+++ b/include/wd_alg.h -@@ -69,7 +69,7 @@ enum alg_dev_type { - UADK_ALG_HW = 0x3 - }; - --/** -+/* - * @drv_name: name of the current device driver - * @alg_name: name of the algorithm supported by the driver - * @priority: priority of the type of algorithm supported by the driver -@@ -133,7 +133,7 @@ inline int wd_alg_driver_recv(struct wd_alg_driver *drv, handle_t ctx, void *msg - return drv->recv(drv, ctx, msg); - } - --/** -+/* - * wd_alg_driver_register() - Register a device driver. - * @wd_alg_driver: a device driver that supports an algorithm. - * -@@ -142,7 +142,7 @@ inline int wd_alg_driver_recv(struct wd_alg_driver *drv, handle_t ctx, void *msg - int wd_alg_driver_register(struct wd_alg_driver *drv); - void wd_alg_driver_unregister(struct wd_alg_driver *drv); - --/** -+/* - * @alg_name: name of the algorithm supported by the driver - * @drv_name: name of the current device driver - * @available: Indicates whether the current driver still has resources available -@@ -165,7 +165,7 @@ struct wd_alg_list { - struct wd_alg_list *next; - }; - --/** -+/* - * wd_request_drv() - Apply for an algorithm driver. - * @alg_name: task algorithm name. - * @hw_mask: the flag of shield hardware device drivers. -@@ -175,7 +175,7 @@ struct wd_alg_list { - struct wd_alg_driver *wd_request_drv(const char *alg_name, bool hw_mask); - void wd_release_drv(struct wd_alg_driver *drv); - --/** -+/* - * wd_drv_alg_support() - Check the algorithms supported by the driver. - * @alg_name: task algorithm name. - * @drv: a device driver that supports an algorithm. -@@ -185,7 +185,7 @@ void wd_release_drv(struct wd_alg_driver *drv); - bool wd_drv_alg_support(const char *alg_name, - struct wd_alg_driver *drv); - --/** -+/* - * wd_enable_drv() - Re-enable use of the current device driver. - * @drv: a device driver that supports an algorithm. - */ -@@ -194,6 +194,20 @@ void wd_disable_drv(struct wd_alg_driver *drv); - - struct wd_alg_list *wd_get_alg_head(void); - -+#ifdef WD_STATIC_DRV -+/* -+ * duplicate drivers will be skipped when it register to alg_list -+ */ -+void hisi_sec2_probe(void); -+void hisi_hpre_probe(void); -+void hisi_zip_probe(void); -+ -+void hisi_sec2_remove(void); -+void hisi_hpre_remove(void); -+void hisi_zip_remove(void); -+ -+#endif -+ - #ifdef __cplusplus - } - #endif -diff --git a/include/wd_alg_common.h b/include/wd_alg_common.h -index 32b8630..1235f1d 100644 ---- a/include/wd_alg_common.h -+++ b/include/wd_alg_common.h -@@ -55,7 +55,12 @@ enum wd_ctx_mode { - CTX_MODE_MAX, - }; - --/** -+enum wd_init_type { -+ WD_TYPE_V1, -+ WD_TYPE_V2, -+}; -+ -+/* - * struct wd_ctx - Define one ctx and related type. - * @ctx: The ctx itself. - * @op_type: Define the operation type of this specific ctx. -@@ -69,7 +74,7 @@ struct wd_ctx { - __u8 ctx_mode; - }; - --/** -+/* - * struct wd_cap_config - Capabilities. - * @ctx_msg_num: number of asynchronous msg pools that the user wants to allocate. - * Optional, user can set ctx_msg_num based on the number of requests -@@ -82,7 +87,7 @@ struct wd_cap_config { - __u32 resv; - }; - --/** -+/* - * struct wd_ctx_config - Define a ctx set and its related attributes, which - * will be used in the scope of current process. - * @ctx_num: The ctx number in below ctx array. -@@ -98,7 +103,7 @@ struct wd_ctx_config { - struct wd_cap_config *cap; - }; - --/** -+/* - * struct wd_ctx_nums - Define the ctx sets numbers. - * @sync_ctx_num: The ctx numbers which are used for sync mode for each - * ctx sets. -@@ -110,7 +115,7 @@ struct wd_ctx_nums { - __u32 async_ctx_num; - }; - --/** -+/* - * struct wd_ctx_params - Define the ctx sets params which are used for init - * algorithms. - * @op_type_num: Used for index of ctx_set_num, the order is the same as -@@ -144,7 +149,7 @@ struct wd_ctx_config_internal { - unsigned long *msg_cnt; - }; - --/** -+/* - * struct wd_comp_sched - Define a scheduler. - * @name: Name of this scheduler. - * @sched_policy: Method for scheduler to perform scheduling -diff --git a/wd_aead.c b/wd_aead.c -index 57daa80..daed761 100644 ---- a/wd_aead.c -+++ b/wd_aead.c -@@ -62,22 +62,48 @@ struct wd_aead_sess { - struct wd_env_config wd_aead_env_config; - static struct wd_init_attrs wd_aead_init_attrs; - --static void wd_aead_close_driver(void) -+static void wd_aead_close_driver(int init_type) - { -+#ifndef WD_STATIC_DRV -+ if (init_type == WD_TYPE_V2) { -+ wd_dlclose_drv(wd_aead_setting.dlh_list); -+ return; -+ } -+ - if (wd_aead_setting.dlhandle) { - wd_release_drv(wd_aead_setting.driver); - dlclose(wd_aead_setting.dlhandle); - wd_aead_setting.dlhandle = NULL; - } -+#else -+ wd_release_drv(wd_aead_setting.driver); -+ hisi_sec2_remove(); -+#endif - } - --static int wd_aead_open_driver(void) -+static int wd_aead_open_driver(int init_type) - { - struct wd_alg_driver *driver = NULL; - const char *alg_name = "gcm(aes)"; -+#ifndef WD_STATIC_DRV - char lib_path[PATH_MAX]; - int ret; - -+ if (init_type == WD_TYPE_V2) { -+ /* -+ * Driver lib file path could set by env param. -+ * then open tham by wd_dlopen_drv() -+ * use NULL means dynamic query path -+ */ -+ wd_aead_setting.dlh_list = wd_dlopen_drv(NULL); -+ if (!wd_aead_setting.dlh_list) { -+ WD_ERR("fail to open driver lib files.\n"); -+ return -WD_EINVAL; -+ } -+ -+ return WD_SUCCESS; -+ } -+ - ret = wd_get_lib_file_path("libhisi_sec.so", lib_path, false); - if (ret) - return ret; -@@ -87,17 +113,21 @@ static int wd_aead_open_driver(void) - WD_ERR("failed to open libhisi_sec.so, %s\n", dlerror()); - return -WD_EINVAL; - } -- -+#else -+ hisi_sec2_probe(); -+ if (init_type == WD_TYPE_V2) -+ return WD_SUCCESS; -+#endif - driver = wd_request_drv(alg_name, false); - if (!driver) { -- wd_aead_close_driver(); -+ wd_aead_close_driver(WD_TYPE_V1); - WD_ERR("failed to get %s driver support\n", alg_name); - return -WD_EINVAL; - } - - wd_aead_setting.driver = driver; - -- return 0; -+ return WD_SUCCESS; - } - - static int aes_key_len_check(__u32 length) -@@ -466,7 +496,7 @@ int wd_aead_init(struct wd_ctx_config *config, struct wd_sched *sched) - if (ret) - goto out_clear_init; - -- ret = wd_aead_open_driver(); -+ ret = wd_aead_open_driver(WD_TYPE_V1); - if (ret) - goto out_clear_init; - -@@ -479,7 +509,7 @@ int wd_aead_init(struct wd_ctx_config *config, struct wd_sched *sched) - return 0; - - out_close_driver: -- wd_aead_close_driver(); -+ wd_aead_close_driver(WD_TYPE_V1); - out_clear_init: - wd_alg_clear_init(&wd_aead_setting.status); - return ret; -@@ -509,7 +539,7 @@ void wd_aead_uninit(void) - if (ret) - return; - -- wd_aead_close_driver(); -+ wd_aead_close_driver(WD_TYPE_V1); - wd_alg_clear_init(&wd_aead_setting.status); - } - -@@ -551,16 +581,9 @@ int wd_aead_init2_(char *alg, __u32 sched_type, int task_type, - goto out_uninit; - } - -- /* -- * Driver lib file path could set by env param. -- * then open them by wd_dlopen_drv() -- * use NULL means dynamic query path -- */ -- wd_aead_setting.dlh_list = wd_dlopen_drv(NULL); -- if (!wd_aead_setting.dlh_list) { -- WD_ERR("failed to open driver lib files.\n"); -+ state = wd_aead_open_driver(WD_TYPE_V2); -+ if (state) - goto out_uninit; -- } - - while (ret != 0) { - memset(&wd_aead_setting.config, 0, sizeof(struct wd_ctx_config_internal)); -@@ -613,7 +636,7 @@ out_params_uninit: - out_driver: - wd_alg_drv_unbind(wd_aead_setting.driver); - out_dlopen: -- wd_dlclose_drv(wd_aead_setting.dlh_list); -+ wd_aead_close_driver(WD_TYPE_V2); - out_uninit: - wd_alg_clear_init(&wd_aead_setting.status); - return ret; -@@ -629,7 +652,7 @@ void wd_aead_uninit2(void) - - wd_alg_attrs_uninit(&wd_aead_init_attrs); - wd_alg_drv_unbind(wd_aead_setting.driver); -- wd_dlclose_drv(wd_aead_setting.dlh_list); -+ wd_aead_close_driver(WD_TYPE_V2); - wd_aead_setting.dlh_list = NULL; - wd_alg_clear_init(&wd_aead_setting.status); - } -diff --git a/wd_alg.c b/wd_alg.c -index f34a407..0a15fe8 100644 ---- a/wd_alg.c -+++ b/wd_alg.c -@@ -150,6 +150,26 @@ static bool wd_alg_driver_match(struct wd_alg_driver *drv, - return true; - } - -+static bool wd_alg_repeat_check(struct wd_alg_driver *drv) -+{ -+ struct wd_alg_list *npre = &alg_list_head; -+ struct wd_alg_list *pnext = NULL; -+ -+ pthread_mutex_lock(&mutex); -+ pnext = npre->next; -+ while (pnext) { -+ if (wd_alg_driver_match(drv, pnext)) { -+ pthread_mutex_unlock(&mutex); -+ return true; -+ } -+ npre = pnext; -+ pnext = pnext->next; -+ } -+ pthread_mutex_unlock(&mutex); -+ -+ return false; -+} -+ - int wd_alg_driver_register(struct wd_alg_driver *drv) - { - struct wd_alg_list *new_alg; -@@ -164,6 +184,9 @@ int wd_alg_driver_register(struct wd_alg_driver *drv) - return -WD_EINVAL; - } - -+ if (wd_alg_repeat_check(drv)) -+ return 0; -+ - new_alg = calloc(1, sizeof(struct wd_alg_list)); - if (!new_alg) { - WD_ERR("failed to alloc alg driver memory!\n"); -@@ -238,7 +261,7 @@ bool wd_drv_alg_support(const char *alg_name, - struct wd_alg_list *head = &alg_list_head; - struct wd_alg_list *pnext = head->next; - -- if (!alg_name) -+ if (!alg_name || !drv) - return false; - - while (pnext) { -diff --git a/wd_cipher.c b/wd_cipher.c -index 279ca8b..9b6e884 100644 ---- a/wd_cipher.c -+++ b/wd_cipher.c -@@ -72,22 +72,48 @@ struct wd_cipher_sess { - struct wd_env_config wd_cipher_env_config; - static struct wd_init_attrs wd_cipher_init_attrs; - --static void wd_cipher_close_driver(void) -+static void wd_cipher_close_driver(int init_type) - { -+#ifndef WD_STATIC_DRV -+ if (init_type == WD_TYPE_V2) { -+ wd_dlclose_drv(wd_cipher_setting.dlh_list); -+ return; -+ } -+ - if (wd_cipher_setting.dlhandle) { - wd_release_drv(wd_cipher_setting.driver); - dlclose(wd_cipher_setting.dlhandle); - wd_cipher_setting.dlhandle = NULL; - } -+#else -+ wd_release_drv(wd_cipher_setting.driver); -+ hisi_sec2_remove(); -+#endif - } - --static int wd_cipher_open_driver(void) -+static int wd_cipher_open_driver(int init_type) - { - struct wd_alg_driver *driver = NULL; - const char *alg_name = "cbc(aes)"; -+#ifndef WD_STATIC_DRV - char lib_path[PATH_MAX]; - int ret; - -+ if (init_type == WD_TYPE_V2) { -+ /* -+ * Driver lib file path could set by env param. -+ * then open tham by wd_dlopen_drv() -+ * use NULL means dynamic query path -+ */ -+ wd_cipher_setting.dlh_list = wd_dlopen_drv(NULL); -+ if (!wd_cipher_setting.dlh_list) { -+ WD_ERR("fail to open driver lib files.\n"); -+ return -WD_EINVAL; -+ } -+ -+ return WD_SUCCESS; -+ } -+ - ret = wd_get_lib_file_path("libhisi_sec.so", lib_path, false); - if (ret) - return ret; -@@ -97,17 +123,21 @@ static int wd_cipher_open_driver(void) - WD_ERR("failed to open libhisi_sec.so, %s\n", dlerror()); - return -WD_EINVAL; - } -- -+#else -+ hisi_sec2_probe(); -+ if (init_type == WD_TYPE_V2) -+ return WD_SUCCESS; -+#endif - driver = wd_request_drv(alg_name, false); - if (!driver) { -- wd_cipher_close_driver(); -+ wd_cipher_close_driver(WD_TYPE_V1); - WD_ERR("failed to get %s driver support\n", alg_name); - return -WD_EINVAL; - } - - wd_cipher_setting.driver = driver; - -- return 0; -+ return WD_SUCCESS; - } - - static bool is_des_weak_key(const __u8 *key) -@@ -365,7 +395,7 @@ int wd_cipher_init(struct wd_ctx_config *config, struct wd_sched *sched) - if (ret) - goto out_clear_init; - -- ret = wd_cipher_open_driver(); -+ ret = wd_cipher_open_driver(WD_TYPE_V1); - if (ret) - goto out_clear_init; - -@@ -378,7 +408,7 @@ int wd_cipher_init(struct wd_ctx_config *config, struct wd_sched *sched) - return 0; - - out_close_driver: -- wd_cipher_close_driver(); -+ wd_cipher_close_driver(WD_TYPE_V1); - out_clear_init: - wd_alg_clear_init(&wd_cipher_setting.status); - return ret; -@@ -392,7 +422,7 @@ void wd_cipher_uninit(void) - if (ret) - return; - -- wd_cipher_close_driver(); -+ wd_cipher_close_driver(WD_TYPE_V1); - wd_alg_clear_init(&wd_cipher_setting.status); - } - -@@ -421,16 +451,9 @@ int wd_cipher_init2_(char *alg, __u32 sched_type, int task_type, struct wd_ctx_p - goto out_uninit; - } - -- /* -- * Driver lib file path could set by env param. -- * then open tham by wd_dlopen_drv() -- * use NULL means dynamic query path -- */ -- wd_cipher_setting.dlh_list = wd_dlopen_drv(NULL); -- if (!wd_cipher_setting.dlh_list) { -- WD_ERR("fail to open driver lib files.\n"); -+ state = wd_cipher_open_driver(WD_TYPE_V2); -+ if (state) - goto out_uninit; -- } - - while (ret != 0) { - memset(&wd_cipher_setting.config, 0, sizeof(struct wd_ctx_config_internal)); -@@ -484,7 +507,7 @@ out_params_uninit: - out_driver: - wd_alg_drv_unbind(wd_cipher_setting.driver); - out_dlopen: -- wd_dlclose_drv(wd_cipher_setting.dlh_list); -+ wd_cipher_close_driver(WD_TYPE_V2); - out_uninit: - wd_alg_clear_init(&wd_cipher_setting.status); - return ret; -@@ -500,7 +523,7 @@ void wd_cipher_uninit2(void) - - wd_alg_attrs_uninit(&wd_cipher_init_attrs); - wd_alg_drv_unbind(wd_cipher_setting.driver); -- wd_dlclose_drv(wd_cipher_setting.dlh_list); -+ wd_cipher_close_driver(WD_TYPE_V2); - wd_cipher_setting.dlh_list = NULL; - wd_alg_clear_init(&wd_cipher_setting.status); - } -diff --git a/wd_comp.c b/wd_comp.c -index cabd17f..459223e 100644 ---- a/wd_comp.c -+++ b/wd_comp.c -@@ -54,22 +54,48 @@ struct wd_comp_setting { - struct wd_env_config wd_comp_env_config; - static struct wd_init_attrs wd_comp_init_attrs; - --static void wd_comp_close_driver(void) -+static void wd_comp_close_driver(int init_type) - { -+#ifndef WD_STATIC_DRV -+ if (init_type == WD_TYPE_V2) { -+ wd_dlclose_drv(wd_comp_setting.dlh_list); -+ return; -+ } -+ - if (wd_comp_setting.dlhandle) { - wd_release_drv(wd_comp_setting.driver); - dlclose(wd_comp_setting.dlhandle); - wd_comp_setting.dlhandle = NULL; - } -+#else -+ wd_release_drv(wd_comp_setting.driver); -+ hisi_zip_remove(); -+#endif - } - --static int wd_comp_open_driver(void) -+static int wd_comp_open_driver(int init_type) - { - struct wd_alg_driver *driver = NULL; -- char lib_path[PATH_MAX]; - const char *alg_name = "zlib"; -+#ifndef WD_STATIC_DRV -+ char lib_path[PATH_MAX]; - int ret; - -+ if (init_type == WD_TYPE_V2) { -+ /* -+ * Driver lib file path could set by env param. -+ * then open them by wd_dlopen_drv() -+ * use NULL means dynamic query path -+ */ -+ wd_comp_setting.dlh_list = wd_dlopen_drv(NULL); -+ if (!wd_comp_setting.dlh_list) { -+ WD_ERR("fail to open driver lib files.\n"); -+ return -WD_EINVAL; -+ } -+ -+ return WD_SUCCESS; -+ } -+ - ret = wd_get_lib_file_path("libhisi_zip.so", lib_path, false); - if (ret) - return ret; -@@ -79,17 +105,21 @@ static int wd_comp_open_driver(void) - WD_ERR("failed to open libhisi_zip.so, %s\n", dlerror()); - return -WD_EINVAL; - } -- -+#else -+ hisi_zip_probe(); -+ if (init_type == WD_TYPE_V2) -+ return WD_SUCCESS; -+#endif - driver = wd_request_drv(alg_name, false); - if (!driver) { -- wd_comp_close_driver(); -+ wd_comp_close_driver(WD_TYPE_V1); - WD_ERR("failed to get %s driver support\n", alg_name); - return -WD_EINVAL; - } - - wd_comp_setting.driver = driver; - -- return 0; -+ return WD_SUCCESS; - } - - static void wd_comp_clear_status(void) -@@ -185,7 +215,7 @@ int wd_comp_init(struct wd_ctx_config *config, struct wd_sched *sched) - if (ret) - goto out_clear_init; - -- ret = wd_comp_open_driver(); -+ ret = wd_comp_open_driver(WD_TYPE_V1); - if (ret) - goto out_clear_init; - -@@ -198,7 +228,7 @@ int wd_comp_init(struct wd_ctx_config *config, struct wd_sched *sched) - return 0; - - out_clear_driver: -- wd_comp_close_driver(); -+ wd_comp_close_driver(WD_TYPE_V1); - out_clear_init: - wd_alg_clear_init(&wd_comp_setting.status); - return ret; -@@ -212,7 +242,7 @@ void wd_comp_uninit(void) - if (ret) - return; - -- wd_comp_close_driver(); -+ wd_comp_close_driver(WD_TYPE_V1); - wd_alg_clear_init(&wd_comp_setting.status); - } - -@@ -241,16 +271,9 @@ int wd_comp_init2_(char *alg, __u32 sched_type, int task_type, struct wd_ctx_par - goto out_uninit; - } - -- /* -- * Driver lib file path could set by env param. -- * then open tham by wd_dlopen_drv() -- * use NULL means dynamic query path -- */ -- wd_comp_setting.dlh_list = wd_dlopen_drv(NULL); -- if (!wd_comp_setting.dlh_list) { -- WD_ERR("fail to open driver lib files.\n"); -+ state = wd_comp_open_driver(WD_TYPE_V2); -+ if (state) - goto out_uninit; -- } - - while (ret != 0) { - memset(&wd_comp_setting.config, 0, sizeof(struct wd_ctx_config_internal)); -@@ -303,7 +326,7 @@ out_params_uninit: - out_unbind_drv: - wd_alg_drv_unbind(wd_comp_setting.driver); - out_dlclose: -- wd_dlclose_drv(wd_comp_setting.dlh_list); -+ wd_comp_close_driver(WD_TYPE_V2); - out_uninit: - wd_alg_clear_init(&wd_comp_setting.status); - return ret; -@@ -319,7 +342,7 @@ void wd_comp_uninit2(void) - - wd_alg_attrs_uninit(&wd_comp_init_attrs); - wd_alg_drv_unbind(wd_comp_setting.driver); -- wd_dlclose_drv(wd_comp_setting.dlh_list); -+ wd_comp_close_driver(WD_TYPE_V2); - wd_comp_setting.dlh_list = NULL; - wd_alg_clear_init(&wd_comp_setting.status); - } -diff --git a/wd_dh.c b/wd_dh.c -index 4d08de6..36b0cd7 100644 ---- a/wd_dh.c -+++ b/wd_dh.c -@@ -41,23 +41,49 @@ static struct wd_dh_setting { - struct wd_env_config wd_dh_env_config; - static struct wd_init_attrs wd_dh_init_attrs; - --static void wd_dh_close_driver(void) -+static void wd_dh_close_driver(int init_type) - { -+#ifndef WD_STATIC_DRV -+ if (init_type == WD_TYPE_V2) { -+ wd_dlclose_drv(wd_dh_setting.dlh_list); -+ return; -+ } -+ - if (!wd_dh_setting.dlhandle) - return; - - wd_release_drv(wd_dh_setting.driver); - dlclose(wd_dh_setting.dlhandle); - wd_dh_setting.dlhandle = NULL; -+#else -+ wd_release_drv(wd_dh_setting.driver); -+ hisi_hpre_remove(); -+#endif - } - --static int wd_dh_open_driver(void) -+static int wd_dh_open_driver(int init_type) - { - struct wd_alg_driver *driver = NULL; -- char lib_path[PATH_MAX]; - const char *alg_name = "dh"; -+#ifndef WD_STATIC_DRV -+ char lib_path[PATH_MAX]; - int ret; - -+ if (init_type == WD_TYPE_V2) { -+ /* -+ * Driver lib file path could set by env param. -+ * then open them by wd_dlopen_drv() -+ * default dir in the /root/lib/xxx.so and then dlopen -+ */ -+ wd_dh_setting.dlh_list = wd_dlopen_drv(NULL); -+ if (!wd_dh_setting.dlh_list) { -+ WD_ERR("failed to open driver lib files.\n"); -+ return -WD_EINVAL; -+ } -+ -+ return WD_SUCCESS; -+ } -+ - ret = wd_get_lib_file_path("libhisi_hpre.so", lib_path, false); - if (ret) - return ret; -@@ -67,10 +93,14 @@ static int wd_dh_open_driver(void) - WD_ERR("failed to open libhisi_hpre.so, %s!\n", dlerror()); - return -WD_EINVAL; - } -- -+#else -+ hisi_hpre_probe(); -+ if (init_type == WD_TYPE_V2) -+ return WD_SUCCESS; -+#endif - driver = wd_request_drv(alg_name, false); - if (!driver) { -- wd_dh_close_driver(); -+ wd_dh_close_driver(WD_TYPE_V1); - WD_ERR("failed to get %s driver support\n", alg_name); - return -WD_EINVAL; - } -@@ -158,7 +188,7 @@ int wd_dh_init(struct wd_ctx_config *config, struct wd_sched *sched) - if (ret) - goto out_clear_init; - -- ret = wd_dh_open_driver(); -+ ret = wd_dh_open_driver(WD_TYPE_V1); - if (ret) - goto out_clear_init; - -@@ -171,7 +201,7 @@ int wd_dh_init(struct wd_ctx_config *config, struct wd_sched *sched) - return WD_SUCCESS; - - out_close_driver: -- wd_dh_close_driver(); -+ wd_dh_close_driver(WD_TYPE_V1); - out_clear_init: - wd_alg_clear_init(&wd_dh_setting.status); - return ret; -@@ -185,7 +215,7 @@ void wd_dh_uninit(void) - if (ret) - return; - -- wd_dh_close_driver(); -+ wd_dh_close_driver(WD_TYPE_V1); - wd_alg_clear_init(&wd_dh_setting.status); - } - -@@ -212,16 +242,9 @@ int wd_dh_init2_(char *alg, __u32 sched_type, int task_type, struct wd_ctx_param - goto out_clear_init; - } - -- /* -- * Driver lib file path could set by env param. -- * than open tham by wd_dlopen_drv() -- * default dir in the /root/lib/xxx.so and then dlopen -- */ -- wd_dh_setting.dlh_list = wd_dlopen_drv(NULL); -- if (!wd_dh_setting.dlh_list) { -- WD_ERR("failed to open driver lib files!\n"); -+ state = wd_dh_open_driver(WD_TYPE_V2); -+ if (state) - goto out_clear_init; -- } - - while (ret) { - memset(&wd_dh_setting.config, 0, sizeof(struct wd_ctx_config_internal)); -@@ -275,7 +298,7 @@ out_params_uninit: - out_driver: - wd_alg_drv_unbind(wd_dh_setting.driver); - out_dlopen: -- wd_dlclose_drv(wd_dh_setting.dlh_list); -+ wd_dh_close_driver(WD_TYPE_V2); - out_clear_init: - wd_alg_clear_init(&wd_dh_setting.status); - return ret; -@@ -291,7 +314,7 @@ void wd_dh_uninit2(void) - - wd_alg_attrs_uninit(&wd_dh_init_attrs); - wd_alg_drv_unbind(wd_dh_setting.driver); -- wd_dlclose_drv(wd_dh_setting.dlh_list); -+ wd_dh_close_driver(WD_TYPE_V2); - wd_dh_setting.dlh_list = NULL; - wd_alg_clear_init(&wd_dh_setting.status); - } -diff --git a/wd_digest.c b/wd_digest.c -index 0df7204..7449259 100644 ---- a/wd_digest.c -+++ b/wd_digest.c -@@ -73,22 +73,48 @@ struct wd_digest_sess { - struct wd_env_config wd_digest_env_config; - static struct wd_init_attrs wd_digest_init_attrs; - --static void wd_digest_close_driver(void) -+static void wd_digest_close_driver(int init_type) - { -+#ifndef WD_STATIC_DRV -+ if (init_type == WD_TYPE_V2) { -+ wd_dlclose_drv(wd_digest_setting.dlh_list); -+ return; -+ } -+ - if (wd_digest_setting.dlhandle) { - wd_release_drv(wd_digest_setting.driver); - dlclose(wd_digest_setting.dlhandle); - wd_digest_setting.dlhandle = NULL; - } -+#else -+ wd_release_drv(wd_digest_setting.driver); -+ hisi_sec2_remove(); -+#endif - } - --static int wd_digest_open_driver(void) -+static int wd_digest_open_driver(int init_type) - { - struct wd_alg_driver *driver = NULL; - const char *alg_name = "sm3"; -+#ifndef WD_STATIC_DRV - char lib_path[PATH_MAX]; - int ret; - -+ if (init_type == WD_TYPE_V2) { -+ /* -+ * Driver lib file path could set by env param. -+ * then open tham by wd_dlopen_drv() -+ * use NULL means dynamic query path -+ */ -+ wd_digest_setting.dlh_list = wd_dlopen_drv(NULL); -+ if (!wd_digest_setting.dlh_list) { -+ WD_ERR("fail to open driver lib files.\n"); -+ return -WD_EINVAL; -+ } -+ -+ return WD_SUCCESS; -+ } -+ - ret = wd_get_lib_file_path("libhisi_sec.so", lib_path, false); - if (ret) - return ret; -@@ -98,17 +124,21 @@ static int wd_digest_open_driver(void) - WD_ERR("failed to open libhisi_sec.so, %s\n", dlerror()); - return -WD_EINVAL; - } -- -+#else -+ hisi_sec2_probe(); -+ if (init_type == WD_TYPE_V2) -+ return WD_SUCCESS; -+#endif - driver = wd_request_drv(alg_name, false); - if (!driver) { -- wd_digest_close_driver(); -+ wd_digest_close_driver(WD_TYPE_V1); - WD_ERR("failed to get %s driver support\n", alg_name); - return -WD_EINVAL; - } - - wd_digest_setting.driver = driver; - -- return 0; -+ return WD_SUCCESS; - } - - static int aes_key_len_check(__u32 length) -@@ -277,7 +307,7 @@ int wd_digest_init(struct wd_ctx_config *config, struct wd_sched *sched) - if (ret) - goto out_clear_init; - -- ret = wd_digest_open_driver(); -+ ret = wd_digest_open_driver(WD_TYPE_V1); - if (ret) - goto out_clear_init; - -@@ -290,7 +320,7 @@ int wd_digest_init(struct wd_ctx_config *config, struct wd_sched *sched) - return 0; - - out_close_driver: -- wd_digest_close_driver(); -+ wd_digest_close_driver(WD_TYPE_V1); - out_clear_init: - wd_alg_clear_init(&wd_digest_setting.status); - return ret; -@@ -319,7 +349,7 @@ void wd_digest_uninit(void) - if (ret) - return; - -- wd_digest_close_driver(); -+ wd_digest_close_driver(WD_TYPE_V1); - wd_alg_clear_init(&wd_digest_setting.status); - } - -@@ -356,16 +386,11 @@ int wd_digest_init2_(char *alg, __u32 sched_type, int task_type, - WD_ERR("invalid: digest:%s unsupported!\n", alg); - goto out_uninit; - } -- /* -- * Driver lib file path could set by env param. -- * then open them by wd_dlopen_drv() -- * use NULL means dynamic query path -- */ -- wd_digest_setting.dlh_list = wd_dlopen_drv(NULL); -- if (!wd_digest_setting.dlh_list) { -- WD_ERR("failed to open driver lib files.\n"); -+ -+ state = wd_digest_open_driver(WD_TYPE_V2); -+ if (state) - goto out_uninit; -- } -+ - - while (ret != 0) { - memset(&wd_digest_setting.config, 0, sizeof(struct wd_ctx_config_internal)); -@@ -417,7 +442,7 @@ out_params_uninit: - out_driver: - wd_alg_drv_unbind(wd_digest_setting.driver); - out_dlopen: -- wd_dlclose_drv(wd_digest_setting.dlh_list); -+ wd_digest_close_driver(WD_TYPE_V2); - out_uninit: - wd_alg_clear_init(&wd_digest_setting.status); - return ret; -@@ -433,7 +458,7 @@ void wd_digest_uninit2(void) - - wd_alg_attrs_uninit(&wd_digest_init_attrs); - wd_alg_drv_unbind(wd_digest_setting.driver); -- wd_dlclose_drv(wd_digest_setting.dlh_list); -+ wd_digest_close_driver(WD_TYPE_V2); - wd_digest_setting.dlh_list = NULL; - wd_alg_clear_init(&wd_digest_setting.status); - } -diff --git a/wd_ecc.c b/wd_ecc.c -index e75bca0..24f167f 100644 ---- a/wd_ecc.c -+++ b/wd_ecc.c -@@ -95,23 +95,49 @@ static const struct curve_param_desc curve_pram_list[] = { - { ECC_CURVE_G, offsetof(struct wd_ecc_prikey, g), offsetof(struct wd_ecc_pubkey, g) } - }; - --static void wd_ecc_close_driver(void) -+static void wd_ecc_close_driver(int init_type) - { -+#ifndef WD_STATIC_DRV -+ if (init_type == WD_TYPE_V2) { -+ wd_dlclose_drv(wd_ecc_setting.dlh_list); -+ return; -+ } -+ - if (!wd_ecc_setting.dlhandle) - return; - - wd_release_drv(wd_ecc_setting.driver); - dlclose(wd_ecc_setting.dlhandle); - wd_ecc_setting.dlhandle = NULL; -+#else -+ wd_release_drv(wd_ecc_setting.driver); -+ hisi_hpre_remove(); -+#endif - } - --static int wd_ecc_open_driver(void) -+static int wd_ecc_open_driver(int init_type) - { - struct wd_alg_driver *driver = NULL; -- char lib_path[PATH_MAX]; - const char *alg_name = "sm2"; -+#ifndef WD_STATIC_DRV -+ char lib_path[PATH_MAX]; - int ret; - -+ if (init_type == WD_TYPE_V2) { -+ /* -+ * Driver lib file path could set by env param. -+ * then open them by wd_dlopen_drv() -+ * default dir in the /root/lib/xxx.so and then dlopen -+ */ -+ wd_ecc_setting.dlh_list = wd_dlopen_drv(NULL); -+ if (!wd_ecc_setting.dlh_list) { -+ WD_ERR("failed to open driver lib files.\n"); -+ return -WD_EINVAL; -+ } -+ -+ return WD_SUCCESS; -+ } -+ - ret = wd_get_lib_file_path("libhisi_hpre.so", lib_path, false); - if (ret) - return ret; -@@ -121,10 +147,14 @@ static int wd_ecc_open_driver(void) - WD_ERR("failed to open libhisi_hpre.so, %s!\n", dlerror()); - return -WD_EINVAL; - } -- -+#else -+ hisi_hpre_probe(); -+ if (init_type == WD_TYPE_V2) -+ return WD_SUCCESS; -+#endif - driver = wd_request_drv(alg_name, false); - if (!driver) { -- wd_ecc_close_driver(); -+ wd_ecc_close_driver(WD_TYPE_V1); - WD_ERR("failed to get %s driver support\n", alg_name); - return -WD_EINVAL; - } -@@ -221,7 +251,7 @@ int wd_ecc_init(struct wd_ctx_config *config, struct wd_sched *sched) - if (ret) - goto out_clear_init; - -- ret = wd_ecc_open_driver(); -+ ret = wd_ecc_open_driver(WD_TYPE_V1); - if (ret) - goto out_clear_init; - -@@ -234,7 +264,7 @@ int wd_ecc_init(struct wd_ctx_config *config, struct wd_sched *sched) - return WD_SUCCESS; - - out_close_driver: -- wd_ecc_close_driver(); -+ wd_ecc_close_driver(WD_TYPE_V1); - out_clear_init: - wd_alg_clear_init(&wd_ecc_setting.status); - return ret; -@@ -248,7 +278,7 @@ void wd_ecc_uninit(void) - if (ret) - return; - -- wd_ecc_close_driver(); -+ wd_ecc_close_driver(WD_TYPE_V1); - wd_alg_clear_init(&wd_ecc_setting.status); - } - -@@ -277,16 +307,9 @@ int wd_ecc_init2_(char *alg, __u32 sched_type, int task_type, struct wd_ctx_para - goto out_clear_init; - } - -- /* -- * Driver lib file path could set by env param. -- * than open tham by wd_dlopen_drv() -- * default dir in the /root/lib/xxx.so and then dlopen -- */ -- wd_ecc_setting.dlh_list = wd_dlopen_drv(NULL); -- if (!wd_ecc_setting.dlh_list) { -- WD_ERR("failed to open driver lib files!\n"); -+ state = wd_ecc_open_driver(WD_TYPE_V2); -+ if (state) - goto out_clear_init; -- } - - while (ret) { - memset(&wd_ecc_setting.config, 0, sizeof(struct wd_ctx_config_internal)); -@@ -340,7 +363,7 @@ out_params_uninit: - out_driver: - wd_alg_drv_unbind(wd_ecc_setting.driver); - out_dlopen: -- wd_dlclose_drv(wd_ecc_setting.dlh_list); -+ wd_ecc_close_driver(WD_TYPE_V2); - out_clear_init: - wd_alg_clear_init(&wd_ecc_setting.status); - return ret; -@@ -356,7 +379,7 @@ void wd_ecc_uninit2(void) - - wd_alg_attrs_uninit(&wd_ecc_init_attrs); - wd_alg_drv_unbind(wd_ecc_setting.driver); -- wd_dlclose_drv(wd_ecc_setting.dlh_list); -+ wd_ecc_close_driver(WD_TYPE_V2); - wd_ecc_setting.dlh_list = NULL; - wd_alg_clear_init(&wd_ecc_setting.status); - } -diff --git a/wd_rsa.c b/wd_rsa.c -index 8e51177..f7f815c 100644 ---- a/wd_rsa.c -+++ b/wd_rsa.c -@@ -82,23 +82,49 @@ static struct wd_rsa_setting { - struct wd_env_config wd_rsa_env_config; - static struct wd_init_attrs wd_rsa_init_attrs; - --static void wd_rsa_close_driver(void) -+static void wd_rsa_close_driver(int init_type) - { -+#ifndef WD_STATIC_DRV -+ if (init_type == WD_TYPE_V2) { -+ wd_dlclose_drv(wd_rsa_setting.dlh_list); -+ return; -+ } -+ - if (!wd_rsa_setting.dlhandle) - return; - - wd_release_drv(wd_rsa_setting.driver); - dlclose(wd_rsa_setting.dlhandle); - wd_rsa_setting.dlhandle = NULL; -+#else -+ wd_release_drv(wd_rsa_setting.driver); -+ hisi_hpre_remove(); -+#endif - } - --static int wd_rsa_open_driver(void) -+static int wd_rsa_open_driver(int init_type) - { - struct wd_alg_driver *driver = NULL; -- char lib_path[PATH_MAX]; - const char *alg_name = "rsa"; -+#ifndef WD_STATIC_DRV -+ char lib_path[PATH_MAX]; - int ret; - -+ if (init_type == WD_TYPE_V2) { -+ /* -+ * Driver lib file path could set by env param. -+ * then open them by wd_dlopen_drv() -+ * default dir in the /root/lib/xxx.so and then dlopen -+ */ -+ wd_rsa_setting.dlh_list = wd_dlopen_drv(NULL); -+ if (!wd_rsa_setting.dlh_list) { -+ WD_ERR("failed to open driver lib files.\n"); -+ return -WD_EINVAL; -+ } -+ -+ return WD_SUCCESS; -+ } -+ - ret = wd_get_lib_file_path("libhisi_hpre.so", lib_path, false); - if (ret) - return ret; -@@ -108,10 +134,14 @@ static int wd_rsa_open_driver(void) - WD_ERR("failed to open libhisi_hpre.so, %s!\n", dlerror()); - return -WD_EINVAL; - } -- -+#else -+ hisi_hpre_probe(); -+ if (init_type == WD_TYPE_V2) -+ return WD_SUCCESS; -+#endif - driver = wd_request_drv(alg_name, false); - if (!driver) { -- wd_rsa_close_driver(); -+ wd_rsa_close_driver(WD_TYPE_V1); - WD_ERR("failed to get %s driver support!\n", alg_name); - return -WD_EINVAL; - } -@@ -198,7 +228,7 @@ int wd_rsa_init(struct wd_ctx_config *config, struct wd_sched *sched) - if (ret) - goto out_clear_init; - -- ret = wd_rsa_open_driver(); -+ ret = wd_rsa_open_driver(WD_TYPE_V1); - if (ret) - goto out_clear_init; - -@@ -211,7 +241,7 @@ int wd_rsa_init(struct wd_ctx_config *config, struct wd_sched *sched) - return WD_SUCCESS; - - out_close_driver: -- wd_rsa_close_driver(); -+ wd_rsa_close_driver(WD_TYPE_V1); - out_clear_init: - wd_alg_clear_init(&wd_rsa_setting.status); - return ret; -@@ -225,7 +255,7 @@ void wd_rsa_uninit(void) - if (ret) - return; - -- wd_rsa_close_driver(); -+ wd_rsa_close_driver(WD_TYPE_V1); - wd_alg_clear_init(&wd_rsa_setting.status); - } - -@@ -252,16 +282,9 @@ int wd_rsa_init2_(char *alg, __u32 sched_type, int task_type, struct wd_ctx_para - goto out_clear_init; - } - -- /* -- * Driver lib file path could set by env param. -- * than open tham by wd_dlopen_drv() -- * default dir in the /root/lib/xxx.so and then dlopen -- */ -- wd_rsa_setting.dlh_list = wd_dlopen_drv(NULL); -- if (!wd_rsa_setting.dlh_list) { -- WD_ERR("failed to open driver lib files!\n"); -+ state = wd_rsa_open_driver(WD_TYPE_V2); -+ if (state) - goto out_clear_init; -- } - - while (ret) { - memset(&wd_rsa_setting.config, 0, sizeof(struct wd_ctx_config_internal)); -@@ -315,7 +338,7 @@ out_params_uninit: - out_driver: - wd_alg_drv_unbind(wd_rsa_setting.driver); - out_dlopen: -- wd_dlclose_drv(wd_rsa_setting.dlh_list); -+ wd_rsa_close_driver(WD_TYPE_V2); - out_clear_init: - wd_alg_clear_init(&wd_rsa_setting.status); - return ret; -@@ -331,7 +354,7 @@ void wd_rsa_uninit2(void) - - wd_alg_attrs_uninit(&wd_rsa_init_attrs); - wd_alg_drv_unbind(wd_rsa_setting.driver); -- wd_dlclose_drv(wd_rsa_setting.dlh_list); -+ wd_rsa_close_driver(WD_TYPE_V2); - wd_rsa_setting.dlh_list = NULL; - wd_alg_clear_init(&wd_rsa_setting.status); - } --- -2.25.1 - diff --git a/libwd-2.6.0.tar.gz b/libwd-2.6.0.tar.gz deleted file mode 100644 index d531d16cb78584d0e479267f2a7481b6b93d7174..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 738576 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

cF3=?MjI+%2k<^C)&Wz8$$*}v7U>w>$hYROvFqG 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

XmVwp)Zv;$bC>4=b@G%|-{?&7?#Yoe6+BEui{{ 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

dT{zYD&lpGaFz+a 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 z

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 w%pcXKyA>97y0N&x6Y$8$Pnbj}wNRVLA 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 T_xTtR`tai-yt0M(1epF0(qOF5 literal 0 HcmV?d00001 diff --git a/libwd.spec b/libwd.spec index 5a06c72..a8b573e 100644 --- a/libwd.spec +++ b/libwd.spec @@ -1,8 +1,8 @@ %define soversion 2 Name: libwd Summary: User Space Accelerator Development Kit -Version: 2.6.0 -Release: 3 +Version: 2.7.0 +Release: 1 License: Apache-2.0 Source: %{name}-%{version}.tar.gz @@ -12,63 +12,27 @@ URL: https://support.huawei.com BuildRoot: %{_tmppath}/%{name}-%{version}-root Conflicts: %{name} < %{version}-%{release} Provides: %{name} = %{version}-%{release} -BuildRequires: numactl-devel, compat-openssl11-devel, zlib-devel +BuildRequires: numactl-devel, openssl-devel, zlib-devel BuildRequires: automake, autoconf, libtool, chrpath BuildRequires: gcc, make ExclusiveArch: aarch64 -Patch01: 0001-uadk-fix-build-issue-of-pthread_atfork.patch -Patch02: 0002-uadk-fix-static-build-error.patch -Patch03: 0003-uadk-add-secure-compilation-option.patch -Patch04: 0004-uadk_tool-fix-build-error.patch -Patch05: 0005-v1-fix-build-error.patch -Patch06: 0006-wd_mempool-fix-build-error.patch -Patch07: 0007-wd_rsa-fix-build-error.patch -Patch08: 0008-test-fix-build-error.patch -Patch0009: 0009-uadk-sec-move-function-to-wd_digest_drv.h.patch -Patch0010: 0010-uadk-digest-add-partial_block-to-store-partial-data.patch -Patch0011: 0011-uadk-digest-add-wd_ctx_spin_lock-function.patch -Patch0012: 0012-uadk-remove-redundant-header-file-in-makefile.patch -Patch0013: 0013-uadk-isa-ce-support-sm3-ce-instruction.patch -Patch0014: 0014-uadk-fix-control-range-of-environmemt-variable.patch -Patch0015: 0015-uadk-util-use-default-sched_type-for-instruction-tas.patch -Patch0016: 0016-uadk-digest-modify-spelling-errors.patch -Patch0017: 0017-uadk-drv-hisi-fix-failed-to-init-drv-after-fork.patch -Patch0018: 0018-wd_rsa-fix-wd_rsa_common_uninit-re-entry.patch -Patch0019: 0019-wd_dh-Fix-wd_aead_uninit-re-entry.patch -Patch0020: 0020-wd_ecc-Fix-wd_ecc_uninit-re-entry.patch -Patch0021: 0021-wd_digest-uninit-check-status-in-one-func.patch -Patch0022: 0022-wd_aead-uninit-check-status-in-one-func.patch -Patch0023: 0023-makefile-install-wd_zlibwrapper.h-to-system.patch -Patch0024: 0024-conf-fix-includedir.patch -Patch0025: 0025-cipher-add-support-for-SM4-CBC-and-CTR-modes-in-CE-i.patch -Patch0026: 0026-cipher-add-support-for-SM4-CFB-and-XTS-modes-in-CE-i.patch -Patch0027: 0027-cipher-add-support-for-SM4-ECB-algorithm-in-CE-instr.patch -Patch0028: 0028-uadk-cipher-isa_ce-support-SM4-cbc_cts-mode.patch -Patch0029: 0029-uadk-wd_alg-check-whether-the-platform-supports-SVE.patch -Patch0030: 0030-uadk-sched-fix-async-mode-ctx-id.patch -Patch0031: 0031-uadk-initializes-ctx-resources-in-SVE-mode.patch -Patch0032: 0032-uadk-hash_mb-support-multi-buffer-calculation-for-sm.patch -Patch0033: 0033-uadk_tool-fix-aead-performance-test-issue.patch -Patch0034: 0034-uadk_tool-fix-the-logic-for-counting-retransmissions.patch -Patch0035: 0035-uadk-tools-support-the-nosva-test-of-a-specified-dev.patch -Patch0036: 0036-uadk-tools-support-designated-device-testing.patch -Patch0037: 0037-uadk_tool-support-sm3-ce-benchmark-and-function-test.patch -Patch0038: 0038-uadk_tool-support-sm4-ce-benchmark-test.patch -Patch0039: 0039-uadk_tool-support-sm3-md5-multibuff-benchmark-test.patch -Patch0040: 0040-uadk-tool-fix-the-msg-pool-release-bug-of-async-zip-.patch -Patch0041: 0041-uadk_tool-fix-queue-application-failure-from-multipl.patch -Patch0042: 0042-ecc-check-need_debug-before-calling-WD_DEBUG.patch -Patch0043: 0043-uadk-remove-unused-ioctl-cmd.patch -Patch0044: 0044-uadk-v1-remove-dummy.patch -Patch0045: 0045-cipher-optimze-input-lengths-check.patch -Patch0046: 0046-uadk-v1-improve-the-judgment-conditions-of-tag.patch -Patch0047: 0047-uadk-v1-fix-for-sec-cipher-bd1-ci_gen-configuration.patch -Patch0048: 0048-uadk-fix-for-shmget-shmflag.patch -Patch0049: 0049-sec-optimze-for-directly-assigning-values-to-structu.patch -Patch0050: 0050-util-optimize-for-wd_handle_msg_sync.patch -Patch0051: 0051-uadk-drv_hisi-optimize-qm-recv-function.patch -Patch0052: 0052-uadk-modify-uadk-static-compile.patch +Patch0001: 0001-uadk_tool-benchmark-skip-sm4-benchmark-if-openssl-wi.patch +Patch0002: 0002-uadk-v1-hpre-remove-redundant-comments.patch +Patch0003: 0003-uadk-v1-fix-for-atomic-memory-order.patch +Patch0004: 0004-uadk-replace-wd_lock-to-pthread_spinlock.patch +Patch0005: 0005-uadk-v1-fix-for-wd_lock-implementation.patch +Patch0006: 0006-uadk-fix-for-env-uninit-segment-fault.patch +Patch0007: 0007-uadk-v1-drv-hisi_zip_udrv-fix-the-wrong-literal-buff.patch +Patch0008: 0008-uadk-v1-replace-wd_spinlock-to-pthread_spin_lock.patch +Patch0009: 0009-uadk_tools-add-segfault-locating-function.patch +Patch0010: 0010-uadk-bugfix-CE-driver-initialization-problem.patch +Patch0011: 0011-uadk-v1-fix-for-sec_dump_bd.patch +Patch0012: 0012-uadk-v1-fix-for-wd_recv_sync-print.patch +Patch0013: 0013-uadk-v1-update-the-symbol-table-for-libraries.patch +Patch0014: 0014-uadk-modify-address-check.patch +Patch0015: 0015-uadk-check-calloc-return-value.patch +Patch0016: 0016-drv-hisi-sec-modify-minor-errors-in-hisi_sec.c.patch %description This package contains the User Space Accelerator Library @@ -88,6 +52,7 @@ make mkdir -p ${RPM_BUILD_ROOT}%{_libdir}/uadk install -b -m755 .libs/libwd*.so.%{version} ${RPM_BUILD_ROOT}%{_libdir} install -b -m755 .libs/libhisi_*.so.%{version} ${RPM_BUILD_ROOT}%{_libdir}/uadk +install -b -m755 .libs/libisa_*.so.%{version} ${RPM_BUILD_ROOT}%{_libdir}/uadk # create symbolic link for lib in $RPM_BUILD_ROOT%{_libdir}/*.so.%{version} ; do @@ -101,9 +66,9 @@ done chrpath -d ${RPM_BUILD_ROOT}%{_libdir}/libwd*.so.%{version} chrpath -d ${RPM_BUILD_ROOT}%{_libdir}/uadk/libhisi_*.so.%{version} +chrpath -d ${RPM_BUILD_ROOT}%{_libdir}/uadk/libisa_*.so.%{version} -mkdir -p ${RPM_BUILD_ROOT}%{_includedir}/warpdrive/include -cp v1/uacce.h ${RPM_BUILD_ROOT}%{_includedir}/warpdrive/include +mkdir -p ${RPM_BUILD_ROOT}%{_includedir}/warpdrive cp v1/*.h ${RPM_BUILD_ROOT}%{_includedir}/warpdrive mkdir -p ${RPM_BUILD_ROOT}%{_includedir}/uadk/v1 @@ -125,17 +90,17 @@ rm -rf ${RPM_BUILD_ROOT} %{_libdir}/uadk/libhisi_*.so.%{version} %{_libdir}/uadk/libhisi_*.so %{_libdir}/uadk/libhisi_*.so.%{soversion} +%{_libdir}/uadk/libisa_*.so.%{version} +%{_libdir}/uadk/libisa_*.so +%{_libdir}/uadk/libisa_*.so.%{soversion} %defattr(644,root,root) -%{_includedir}/warpdrive/include/uacce.h %{_includedir}/warpdrive/*.h %{_includedir}/uadk/*.h %{_includedir}/uadk/v1/*.h %{_libdir}/pkgconfig/*.pc -%exclude %{_includedir}/warpdrive/uacce.h %exclude %{_includedir}/warpdrive/wd_util.h %exclude %{_includedir}/warpdrive/wd_adapter.h %exclude %{_includedir}/uadk/wd_util.h -%exclude %{_includedir}/uadk/hisi_qm_udrv.h %exclude %{_includedir}/uadk/v1/wd_util.h %exclude %{_includedir}/uadk/v1/wd_adapter.h @@ -146,6 +111,9 @@ rm -rf ${RPM_BUILD_ROOT} /sbin/ldconfig %changelog +* Fri Aug 23 2024 JiangShui Yang 2.7.0-1 +- libwd: update the source code to 2.7.0 + * Sun Apr 7 2024 JiangShui Yang 2.6.0-3 - libwd: update the source code

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%0AAMA?)!!KJP&qe_piTcj9DI;NsTaB1~U5tl?O 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%0Da%&<+ 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%0AC9#3 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∋lwMZJ#_c^X&*@7gbR zs(MKM?#F028eDbS0{>baQ0RVE!JgrvTHw!Fr`wr)gqL4<(jH+0Yl>vERZYYNR#_JOYCi*5F()|J?`*jTgyXx4v3bSEyH9lK7>-`WL^V8cT5>uMDsM zF`~6MIegsU1IW30rk861JNQjH;hjV3cmY zfWSx|%2|z^9?vRuN;h&tsgrj|u2iNvKdI9#`n!?T=@$LnQ0nB_TeH9B7->q-A;Gb(fI$#i9~ z`OB!xZ5Zv!dgi16tf**#_GNzR|tt$AfskUIUqwQe$^&U8ZY^YniC_3Yb!*N037jumR~EE%(rc+g;|t z>li7a$1n)71N?Y2PP*q0N$IK`jax}yFm9m8Eru~{BCDNeM%*1nSp3?+oK{t2yV?mKijqYED*4&>F)J)P|GWn z!v){+T&0e}&Q+&B16ZNTX~0}z0XR0daF;7hkth{S0<@+Mi72Fl4}!34eZBNa&0X6& z=}JH%_)+50IMc_=^*3;VcXf;MY`CMu_e6%60q8)CO17r*oBFM%NQ8} z!?Cp3!)@0e^gS0K1d78Fm}IlTbYJ1QNgoPqgOOc((4aj_NDJ(r1PX^QC})xDVq}{p z*vGocH7E2ka8K5IUBJr>yuOihz+zq!z`vdKewikv)DjpJcnE4wkkKXvI?f0==H;I; z;+V%UTtWjqsw2+k0uBe0NVbdKD#A4=Bwt%g!S= z=cFsSs_LJJfz+fr%}f_VJ{((WV1=$PQZOurr%@1mM%~D72R;AXMr`5M_FsGCtCUME zdNOq5Jtkt1zGO5jB6g?bMAE(9P~PL#4#GU^HK3Mv4XAyhYk*#CF9&DSmn&m+QV9eP zF3#FIV{=*B^yoQ9d!ylZt_qA^z{dw4VqI0Sn{ck_wdR~_-a@;KbK%3yxr&Ezn(hnX z9TT{=>!UGnb;njy$L8OQe5-CO=7DL*1vVI_MSkBNhJ7f4OX0e+=U{`8BL$om8M~f_A(#dj9&d`|88nKn@)3BS?Weh_B7p#mORt+ zFscd|i%wRtu{X9~r2PEAIAM5#uR1wcRp&0ENCH~fopFTdeme_0&jUQ{))NcN+Qu}o8Dz)3ZtJG$ESCObUD~+_()$KT4Ms<`NGSFt+ zZydfneWf?<9h-*uwyE5kpcf!^EPffI5Rs;1H5hZd5 zDbEfxn05~j?^v;4LF?g9KCKT9yTAyyatA2R8!lt^u_rwWQpN8~-VkUr*>-;k`Dp6# z#Y1O$p&)T7(Vs_hTJuXz_g7) z{>_acGi}M|u)XG}MjlompNH!Br&JohwYqp%QG6~c;`34tpOaen%DnZ##YPde<|Nlm z?Vb$ffLlB)CeL_`NoErHy!aSv@*51nkiix5lA8pD2Do6gDBCa#4fz)qmPgI!Gn#s2G zA7C^3iM;XL*sRK5y@1&ix4m+!i@e<4nblRm-iq=BzDnm3x|Hn?HLoXbnso!CERqD} zwGe_e<(f8kUNWY2yTG(MCS*CrRdX>LyFni_n~L3_k2yFc%6fyy=dBBgfH)zXzZl3P z!>Qj=hQsx1!Xjs%Xc@&3T&V2j!GM3N2iH06#ZTU1oPnW!kx zJ+w7z|9J0nBsjO30kH;Q5K`hEjO}|vQ4ff3VZ>76f_5r!Oj?%7`RC?MERDkiJAA~2 zkEG1g#@pcbK_KTP=6G)$jPm)nS^E9{-*$HMCh!w_Bbvj~Oh%nyH;LO{ZiVJC3Q06t zgWlNmKZ0qPF;Z57B!~AGe*lSvb3@Jj+_9GdQwVq7Nm0V z*baT@sZx^ehL+I^({HQnvmYpngl-qv4DeEfwwKWn#(bdyW2-<7TscbYFGmz<1eCJ- z1J))t;3O=$ch7aN0KAV9-lfe2fMLQhBiBT}{guA8_o2*Np{VIaID%a&oWKH)A>alP zC?N!P7!(1A^4VX2B*;t3e>hpNT%~>^8#dX{KE-ai$8)N~V@9ZjnrR`|CdjT?Pmu;K z^vflMv(Z8;n0AWj%s_P%*_navINo-BBhx7E8C^YVc(P)Ny-vE)5CW<0z_j>j=%HCi z813xDQB7}N)%pyCl`+9G=1~U!D@*k3fEs6Q8D#xWpAH}pgy%+*?F1uAsryMkgV<3q z(U+x-#d>mr1sRRvv$mG6E8|Ph*GebX{LpQP{Ae=#m_+S?IP&|52`rEyM9 zG}whPj2lOlXxMDMOE7w)^di#cEuOXWlp0NR`a2fDz=_`Rs4l}0UVuX;8pG{CM$b;j zCKS`XWSUtJ>5PeC4gNl20i(EV*j1~Qbm;Kt_+V?_QTu92B^xIcoZ8TDH{DmeK;sa~ zEZ8&))|P6RZ?-*qvstrsbE^c!Ps;&z1y;g|a?4FeahE59NwbTgw@Hc2<)LM($V0Qw zMOf*@^wt7Q_31lkHN^d+!U0Bjy0gw+nsODIzQ*BBYVK}2Kc9JatQ}^y(8K4rkF_7gWh=}9?+ME_bxC^rFpc^= zt7KJYYE`C{l5ZU=Hrp?j*yTd-`HtNZW4F=SHdN+T>@I@aba~@~_19B_L%XZ(SkxAl!2oG&t2V zAn=aae+2R*)oy!$bf7Pzou4HzQ^Taa^0he6EbPF`9A7g6V9rXf=57(&Tef|zfV*j< zrzk9_{fz#QzxlwOqYqpU5x=b=T!^y!t~WPz6qbHbzNy!+<`lKifKf$Z*!I@`_M82! z(}r?pD$r2+F>Q}0_ems84uqJJ6lyPt>dJwT^eae?N=?)Zy;~)uP8c*x^~Yi0^3{G) z%vE4_b9Y|B9zEt_1$$)(c?oOcT#y($kQS*#c;meNFl@_ESYY zvSk@heHPDBf}8^T1~}M42hjJ$*ZV4FQfCa#oyW~y0)Ov|GWW|6d9a1n_ro(oO9P1P zF~PE(G#M_-i@%1Kx;6F|@=g}8=ThUdNuZ*{<>-CLT^KWTy0Obr?;HlF(02QjHGf4+ zXZ*gLqA-5m%#0?z!TiUNheKBO*PVVpNx7%-l8c$>1-tmv?2FI*ZaiO!TbmnRcxss! zp5mf_q6a8igZxM#{f?0-40)#^pE>D#mCrV2 zDCCeLgD1BqDPU;e<7sd1X2Ncwn5Tz1`$=#K&`s8MzDw($Vu^XT(4otsw|wye?{lok z%+kvnPwi*C|1NTEBnUG>L4qX#GIxJTjU0N$v&}=1-KY}Nu%&V31D@qw^p{oW>Zy^5 z<+CqBG;iAVsSrFsn{IyJo?#~_^73eTFs!D3Yd)0W_0zWqA({A_UBJd|%PgV9aKOI$PxwCXs zot2+eM|GYW>7P#HduEmI!cLrQXGXU6pi4}Psb8~=@1-qYss45NVDazC`VC%TQ)c(` z(-jG5qc}=~&%#QBme;>f+1JOrVEdh0cpIdrd4*nDZ+SiqGR3(y#c@Zv6@@xrB^`2LqGSX-3eGReGq%1DP}S{?+UCE zNCIa?8{7i+I)Z(_zD&@`AvOaHIGn zibx(snp`!cf}=^P))XF*zC__IvUBBEw(+Rhgz9utb>^UiRAB0C6{OqG&}W{XTc{yf zBe}6QQf4ckS}AGf3z*jl;7!iR8Fh9(iMGyHpvanfM~knDupkRQf7-6s3ts5o=~1ol zbJ~orX_mt;n~Y>QOA8ddjbkwDp`w11XEuvHyyIce{Jhd)J`oR0Dfn6gK`b;b%7ZYr z?46)2Cu>1+f6KQXIfYrFIc9Q~mW3Poy(Nej9tEz@GijJ+q;)&<3CE4JMC&)v615p> zv|M7r5DHvbSVV*(mzM0}aBV4tOrf~OrF#+KI;%Iag(@^$Jvou9<$5Pr3AR^>jXb*} zHB+4yR~;4ui^F0Y$3o) z&ggg_a@a=j)u~D|`6hM_|UgNbQq6jJS^zO4p;7_gcc;Ce#Xfg(&h|QgfXv_@75= zSzaG}kY_o4DD3m0s5eIc0P22+6`%912C(IJPc?}A_+t5q;$)l8%=}jzYB=W#T{Qz% zU1<;cC?$d0?yH~UQ^6R-J4c5NaKXTeA+00764o&!s)1Ek^qo8{p}A+358r(#M+ub1 z&v@UsOOPS|?DSs_^aPk-#sh0No_3`ozPQ3SUT+<5+1Traor7{NTCi^8WXHB`+qP{x zS+UJOE6Iv&+qP}nw(XO9AK;v-S^WfE)m8KB9s|DGS^kr%Hi5^x<4z&!pli$EV5^ER zaR^)|cC?J!}9t_3}93Ns~O{0Ey_w%3Vbjp-pN5+X~<{uQtd!r$z zM%a@M&xXnsLjH$W1S(5$4w?xEQHF$MBDAx_f}JZ8G6p-A$ZV2lelVCo%<0*r++r=E z%o`$3eH*UTR(Hybp(UXO{(s_ht*Udrthli4N;Zjq*DheJy$EbJCCvShT@#88qcms~ zRwiCcDXK?)rKO*cjFJ=TX%sF5hD{%WWC<{{8?g*th^_Zy(91)w!of<7i%25Xb`dB~ zAFLy?Dqlbk1iY~|l}=W#vcIz~P%CKYZ1$pDdpuvwG005sW4+ig0871Up7cUXKlb1Q zPl@bZ@1K46@WXH7Xzt4<9yVr)qLxqeO%M1hSBmcc@kLk9^FHx|S4ZoG4RF1g;m2@^ z%y32Dlu|rsxufB8urMMR57h%Kh4ng^U*^YRH{mlzCC#}tN6R?%ILR3Rh}_)5VhsxP zh9cd{j))EqphR(lwNs;;7_(Y3IuUkJU7cOt9$c*370=SCfNRTOl8*{J;Tf1#Qk~!# z;;!87SyI+Y(M;H_xhBQ0iYLXV%-F3t%-Na8>sKI!>|f^jk4JqFGTWi$o8RUvR}RW( z;H4b@$&R2DfkCpecsTD1*1{wz7)axTq>Xe4RJt;D0L37;jzDOk`c=_^oYRTuJXDL+ zX$944E2Y?`iA2af)ElK4O?Kp+o}5!fbBqH1A-EO|lShvpz0>6WJp zS(Xg2r^^^HrFIQKK}OM~U7gk^of-cnE>D#y1eJNLqdzs_N)Kdb zF88RISfQ(tXhBT#b&7C~Y*jEw9h^i)x`boU1E&diQUjupF(Vfm4cXdajSG@0=Y%n< z^-eFku&=wgMQ)ZZw-;y~U7#HZ@6=}m#3WxRl$C4lHK1N%zqIEzoi_ClS6E~j`4`v~ zmFR#h`&m#{gu5#3TQxj_(_NpI$?upEn9_pHaagV>(XAQmLUvG2>5OFM=LOc>o`Tf6 z&@>-bN3@Ve>>BbsJq&s}Y=SBNSuaJt_B?ad(Vqi#FiuH2pX3Zn#J>4-NFdKmZ01No zHEZQa{d%m2Sfol_e}0S0Iv_M(-Ch|UKCk;TGcs$a|R0ck|E zk7*zX5-4AlecoNnB1%At&R>esj<^8OyoB;VI`XfMl8K~F#Pb=h6=VuT=3P4^(4DKR zUz|o=u)#$sPfaE70*UT~CZS8w^YmLX7A8_4o2b!mFkGOQ9q6{c_f@ zDPXkByDwjyhQQ6;ll?fgT*20J08aILKtc@wsMK zzePgJg!GdNj>x^n$-8AX1GKyP*JB1rEnnh;fFpa=n{k0Ra<8*)*Cob-_iNM*MS4g) z+wC>}GEQk-u$2*~r0JbmwK2<;_alRPOVzM_wl0PM_xfLqscb1cq~dw%wZ2dJ+4x!> zTW1M%`HLyz)2yRA*uXQ1_;+ep_h<*@3i!1RfpDI$9!Hm$un zwYI!+ii145Pzu!V7ZMq6q9Yor!J@#%rF8Go${@aSBg+k9btcy;i#A=1>Rl^v+JdYI zgma+bl&GSI5tRy{$n6ibLbXB#%@qca`UeH+%hF>cJ=-?)Y8N1?+aG&d1qHba>g~Qg zSimc-(atJW{caks%hms%+laD7l`02(?p&rjKD{)Of3K7-|N<+CD04+#`VKfV+P z_x3Z!)^HTTQRXMM6jig z{MwbL&Y{jULI9>fAjb3M0^E z^_2ftAqZZL6`(XiC)eLFlU@Q&`(GzGLciSCSW`38l=fq?a>t5IT-6ak0|!567ruvQ-EBk!}a%6lB-WMT8v}c z=(DBhd*!8vtetKoZ|7?GKc~G-CiX9r zN2X>LBM}+Z`PJTRtdW#ptClEctVCjEOkNFK>YXW(hphda?$VQ<#lj7{A6{p>V{*}1 zj4CI;Fs^K^QI4h2mc?7{1uL^)YB$%zzg;xr3(uRDGAr8 z3)LVQwDXf=A(tbagwA7`p*d9}aAIV7=o6>FeoH*;*)*^1=O;yD5|4;SetY}RYuEZ* zrZD$<{7q)&KJ?!@yROxhcIc{r5$^HCXEE;9s-G=8To>PyxLt6C7aR}f1XTJZMf24m z)fx5Cb{*F%=itmOjsgT{%r;9~fTcpioAd_{osl)1mql{V;^v9)$UyiN7Z<2i{t42i z$>EWAkK^n8quOpOiK`3xb#k_l(-V@phk=aHG=5>Xh24iFOW21g+flZ}Zsz@OV)Kk} zH@4k_t!35|nXFkblOwUDOu5eE6j!Al^Vyot4lU~Y0!z~cv;ldS+^Uh!pvv(#bjf)^ z70o?&%rIb%7CK;Wk2?{TS|hY#^nP`k&0H&glB=h6F7pG@#<{rcLmkWDKS;z$Yjd^X&2^NYC*ybg3EE~5mPx&j-5@aSkJI$r z|D_}wXU$Y%QEwSNtB;`+Kl4|y7O-Q$lm(Q_%(n`%$oi6xT-DC-6!JR{J3qi#WuYqp zEF>cp?sW_waTg*P4lv@kv{WR_>?c9%%yP4RCR3sd85l}XX~R%!Zh0EF&LRsuXInaD zLHElp0Q%pkIt~M+`UWjG(&5=ZsxwLN(|1E(>eGdJH@D%FAy>mGrCx-F`5Guyy(on? zL&r{qg@LIDYDLpqS(f0=X(tOG~ zZCZwjazB6Nx{RMQ%Z%v>f)q*xDB5b!JQ2`-Zhjtq`ih&UDGb2_W=LC;mFo-;>x?+k zNUxart&ILN-KisK1exVC6merfJhS1Y`X#|Sld@a@W?lis+oi$^s%;FapMm4AlNnD{ zu!WqF$8-!L-h1i}W}N3`AK(IIhd3TB?88k|R0{Bn(YmxrJ}7;upmG43Y}`6SK2nUz zlWyKgQn)G%q%Z&s+T{)dW;I4UtVJR<_q*YX=lt8Ha`tsY7wF#H)0r>m8|UNOdSE(> zrhj|j1nLSr>y+8ftgh%(32HLUv`#L+!1W{L0K_*xvC;1qJk| zEI+25=WwyE;NtNfXug{>1!CU!7U=1NXJ9HByL2(i-}R_W!9ujPlN+F*4ok)AXn~>v zi0k(^fpNWH$9I;B1&C|66C0PU+})3KT+T(ilnD^pSBH?O7gMctqBGEaX$g{@!uC+$jpN$ z_FHrhHRz5G=8G5KHyTIr<2&l-2r3)X(bl+(UyFtN@XZ|TKte?HfeDn$qMlH34J^sQ_CwoR6A4BJ6wkL4x z!I2fj6-M_5Wr6BYpB{gZVC5e-*r9)&Wq-~-L9ETK7q>PSUHtl_8d#BGeORzkHNAU_m%z9x4Qe1PpS3UkkNuS#V-dzuIN~ znA(!Ef%&Rv(Swgje0yd|Bw?*^Y4Y$X)7MMs1pkMRkaWfEI|Zfs$cf5on>zw=rPWjGxoo0QT}nZck}2=#6NJJG}Eq zAI;V?(3|{5m`tzP$;-)oanbQFZ=EOs-eFnxf~z;F3&Trnr1O$hz3OzP81z76e6q|F zrvo91mB}YX7W=&Ws(-%arlS;Mn+s3T9u;3m=~2(IhM`sfP9=JcfN<@twg3xihVCmoXHu#-Cal-+2z5$Rq(+7 zHSCiusM4adRuUvAbzS%fR$zh4{ruS{BJuH(oc?1urD0*~e_>f?HKwxsy=JNnbWy>w zzIief8zqcn+V<2nPG=ir&=L2aU!Y}!8Du7x_8~^GD%PBNkJgia!+B1I+Rq7copV7? zBf|)BukScy1gi^2%R55P7OH<|+KRK<-Aj2J@66OKKSyws|1H}B-j2Xvx&P;r)?*Cl zGr*vr>if!=yToJ2zj*4?-}i&+d*LcmuZ3V)eOZG#rn)?4aP3yIQs~BnmcOd;ctJw! zv$Ce9f9L$5iTVeIfaapY=0{CWPp7JKsl4fF++VHSro!gp2TkpG!S{Jab(2|KiIhBl z2N$mY=>GmEPeAmg1ssy+Tvt~rRm7Rn;3)7OYud=$t0FYAkhe{YDq#6>(a7+DvhYt+_`(BG_ zf1S}>3}z@+rj$UY8hQ3<&obpGmNTgkhekbtnQW%~T-+~6*Lm7-x>mW@c!-upx)wAf z?Bxq`T7L1D@Cq;36mxTqjlM3e4UinbcYiq6xj)(7jcyzybb)wwb=4-15gAB8CgCT^ z>5N_CNztJkFoJFljONcXBRf1=)_PKd)&_@msj;2{RWQj5^etd3px@IxF5P*$rolp) z4jx<8Z%;8Edv?y{H>4iFJm#-q)#-CKq=FdNtQNXc|21bVwUBBcOZxoC(Y4QT2ffMqoO2fm9_77i^M zoR;h}MzWZIiJ)4)s#svTX+?okC_%j{)GJS`Hw=%@D+t-S|LyM|#3R3(bq&K%p^EZ* ztEzLeXvU!wb=u#ZEK7o%>kbkcPY?MY_AtAdcV02jYM7d6A-Ih+Lk(F1r}VAfvG6#> zipGId<0d}}Y(IIpWf^ZNnlgA`2!36>$*9hn%X@-MEA7y1gjy2sx%cM-trvr)$m?Hf z1QOWz4QscK;ALgCNU*x_c;tyKrfCWHZCu<>Y21}P!AO?DX;CQ4V%-W+ljuO{@IrNv z%mZ&@UNS^v>(__dH#F_@agduC36nS7kBr@|ZQDOTKN~#r$Lw|&7VjFi^WhTpmQsb& zv=^-PqHCF_4r1f-TVt28`_hN08m**cJPSYD?m(Kl9fimQSCiMQO|2dXFuc6HoiM$Q zeD5b`YBbz!!&wXrqPPY$xtekZq_2?ZX(+_36hVveO*h?)M1$~T)HiOc_5p4eh;Ss9 zIOV0sD>E}VDMyAnSnpKVk-ML#axPwroE15L3!$P4HBEpF6J?v9MclI*?G!B}Oyv1u z!43t3a#JVyc54W0JTp?)`k+<9Gr8>q0`%dh#CGPZ=Onhe*Yqx2SUSv~D>wQ?x6`>_ za&cyi8-v#u=&Lmb9V4Y{n@d4%q8W=Kh%BwJdqE_lnHP)AFUHG~M1YPKBEmQZq}Iz$ z1p06xbc%2tG)A@F$3M~7c4~OGuC^l4^MV3>*{cJUzAjyw{EEeAQD6vlmw{RH2V;Y~ zu3@o5R1U7twcH5;!_A1+)N?zB78llx)X%9obC|#>GXfi#?Nd#O9EC428 zuUlb|rCy3qKV!Q2`>^rm>ZA@%-R&2HyT~#Fdo`A0jt6Q)QM56Q+Ium4!S<2sCjYka zfhRFZE5#~+flKwRK~Z1yAp{P}Durt2ftO^j80d5Sh(RlsKjbzA*r6s0oS_RnJp9P_ zgwF89B~28c#{eiUsveP{Xyfn(_lhhLXnu$T$s+J8v!4jGS$X zFlrndOEm$mjh==cr<$$rSQ<;u8^x>Wk^^9 z)BDFpE&C+t4TO!2l8wqgdm5Boamk%MonXeUZiZ^bzMgn$nz7vFrzuDnxN#}tV<&9W zBaCnabA)~zxIyodp6)TuABHxW*t(G6A4u#S(za<!X9!psc^W^~Q?y{x; zgJjPlr-V%2Ef;2c2WrhR)SQcPnom4c8lT=*XA=>d35950^w@~m)qjT27aJac z4yep=po?&ML;aHfu-XMzx(!q}lb6NAV`W#|*4jNyo(A9gd|@+|7dJQXXNGm&K$6 zk(_@p`rRW$;C#h%?(P=b!dBNxO^+(NXJ6Idv^jmhH%{oZo(0OmyQa2JzJ`%M{O#@S zH|l@f;oTxXb87BU-vmO>exhW5Hju~z#F75aB&^KYn7tR`Zaf<8tc zF(1C>C!l1AScc+1x}ZUj|KHNH;0A;c7AoXFSL013q(XNhrESn0GtUu?xQ7@HdnN|& zAQKeThPfl78W_iHEE3gh{wm|=KCl-JT9K^hB>w;WVN|GhE3$823708L%Rs2X(+Z37 zZ;9x99H1#+;9T?2Eaaf?7&s)Np){?yIRern*pD|YS$oFt85h-m5WO$ggL&SiTL(5x zopX6N1V4`RY_&9}hUVJy8Obif(8T4^dODF`2$(G*8EA&PlT32@9m##JHMX-Hu=yrG zs#$s#HNQX_B3ZT6nv8GJtCMeg3^pduc+-rYuoQ%#>>;LTuMe!R|4GN5L5^u2d={Y@ zremo)4r%?IdDd`Ql4s06?_#2a=OTD9(5Y(}qTrlQL%LdsP+jSsETHO#ZSTM>Zi|4C z?=6HGW%Na0Du`@I5X*5KyJfGG!(K*f(UQJUTd3nOe`9@tMj(f)!i9J^L~%^qLIVG{ zJ1e@}TbTJQ$iLR#pe_(?=e2NW$*a(OYj1vBz!3$;g$>rRT3=8;sJ)`f);%nv^=Zr7 z=U=2W{Si}jJcmv~AouSgaWe~$?$%XyZ6hj$$i2RYOLhX zr$ia%{*Hasi3MNvSD5t3NfS`Y<PrWxsy*Hk_FV4F!e7BHXw~+X+1Guju2%j-rw*t~#_jd)pI|N+QaPPYv=8YdR zY5c7pLaTv5o1y1P__idt&>;hANYo!ah%#!=8bhVm%;K&`;#aCzCMD^CL{RP#X~Cw= z5EnoZ0 z1^m~7-ayFUMYK@+ro3Pa@q--yoLgq@*?_q+0*L0>%Kv;{?5~z$LIGExsF&%L1p4pq zw-0f*1N_%pEeYwBCyQcO=UvY`1#CKLO9Tu83m5$K@wy`A&pmz=^}M~Gzjq0}c5Jf} ztNKKV++Ci_X(cY_oj6DvnTbmMfkse9qE37|9f`I%eZdOEE_GI@Et{jYS6c5rFDLE( zd--m<6W?Bah=g|wF0#24>>I9T>j6X1@apUDiwAj5ca z@86(qORnJtIl2_#l_|MrSt-iPSgbhU7?5zYxPbmCFOq14ITa4*Z8c#5>+Gi|9AYwDhRGOGw3$>M~vX zE@YNvm3k6}mJ*vvk7#QjZNGm1v?R-s{aJ=2*^L~c$gjM%mVPk)+@9!KJqKw;i(sy? zQsD!_M~m&l%_+Erhd?$D#e5oky^0^QzayG;X=?a^bf>#f+trKe87dDNf(sMrDUViq zxd7mDxzbYG{lgUe@jOEM%41%m@TR&Q1!QL9vTRB9C$6e82Zd4BSTjQSZDiaRD5Pf= zlAr;x%n>ZHM}M&#nIP6~tR$T_`H%Y1Dmm>8rXIf#T55ZpYa06J7?*sx(5S`RfuQ6F ze}|)yKIIljiY`aD&}W2hdeZ42!h4cVX#Y<2?($>^CSmx>Nn-$H40+z zh_EF;Oep$ZVxMha-2$WIW-2mgHYcpHY0(8go(564_?Qo-yGX|lA0k!mmQSMB1S>pg zB`2&LJKkg7^{06gHEE@qSPmF&wA8EyUoH#TUNDjI)G)_^5TQZ%%`*nkAC^8bc-CT} z6fZzAVOo_RQ?Xb=r*I_1CbAY|_ZdzEKoWs#>lce&1v>1d|n`J3m?tTK{WQ(V_cR@4E?6d4@ ztBTv!sgU6n)t`JZPu*oMG94}`34h5=t#<)q0Wl_TH`5KtVYPMJqk)j^*4*SnuQd5{GrAkpc87{Yc zMQyA@i$Pf8^2*SMVC$cGNZ;F_`ORRGNFdmBC72q@V6gvKU#&D>OYc29n_bD~c8pL* z@VK5dUM(3nqoJ)1EPw5{SWf0}B>(n>BztTs^^swQJZ51BL7zN|7dA7na2#YOF;P%O zLwm3Ia%uSs`+Bi`n}lmllTx2uvoJNpwvy<=OIi2$hQ7*|>Q5GvN82y);?_N`8Co-b zR?)x8qoHwR`PaUjv27(9XU-yy>41A(a`oR7^>(dnU|^0v!qtmex1Q8r9wr(ibbDxY zhzSPM4+VKwGkUM!{qneP9-1%6ah>Gih}eygQ)Wse!Z*%!YnwW|t@7>j;dUxRZJ66E zMzZ8%>fK$pQ%yWoC}RfL$D7c<5?qsk-{^cY8Rwd^9eZm^ZXz;I!)tieg0TFvD5HV? zmNeARZo%B-aDE7M?71zJm5J}sSknheDHc3b*N@@)JV+RzCC=FH!38)FgI)q>z(Xiu zKvpIivTzOne*9DvpcZmw!DprFx^(-|ci_P(Y}!$D9_zQA6Djo-o7Wh(S5T1QTVCMD5!$bl%Ky1Q*;vUV~{n~Q+HvJ;r zi8Hl4w=`J=oa;DQEl|*HS4u2noSBc{aR#ZFJV6Eo4hm6Bow6e1LK=lY?VGg*G*u@N zXKXxu4mx3-^B{c^N7FV4y#vvqYcR}V4bH-HAhesrEctR zMv|(|RhcgabDtc|Iv?&98G%%bCd35togf0V|0Ilnk(zP2;Nk{eugGu-1VoO`WbpT5 zpwJu6w726~71KRU@9}zhwJJ${yDD%WeD?vd(eu#uUK4I9oGw;W8&1RB(i+}N+&59t zvDse{FJ)b{zvV4Ma8r+vtPW;yd#+$OvwPm-;`Ih?hf%P(K;Wn({s@kPgAfm5<~HBF zihJ`T$!qeV#Sa%*#b$K&aAY?+(~lPfr$l}1daL~PJv(;3;3dSA^K8-Br0vY3`a6d6 zY+n3*%Vk1+Ru%#8dKPiESLCuZ(xU!lRNYWAt#Ng+(@9)NOEIQBV+~Y1EM4S_ruBFf zBqI4D^fJlSM^$};%^)kC`(4Jb_eh12Nx>0aA2eU$nZ16nHpK*5%GV%lM4PH@MXgL1E9Y=K>q`;JY#(T diff --git a/libwd-2.7.0.tar.gz b/libwd-2.7.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..e80452f181b7d50ad40d7a8e60f4bb8380c214c1 GIT binary patch literal 777480 zcmV(>K-j+@iwFP!000001MEEcbKADk{Z;-eP-mvKG(L3Ov6H?k5)}yWsy%ua(gM zrlqfZgFd(&e0=}c58>yj{~zI!^}pdl;AbCWv9q_ffV zB?aTClFGprV0P`ztz#~h9;sLB)jjxEBd5N0O-(YT`qHvj_QIqt;O*}YJY%19Rx82? zT;fodI#(15f!EeEb8Z=QPE_@$p4vNAd*gTN>DDtSGA)`a1!QiR|^&55KX^RsA+%BNyd%S4|BKXwx zh#4swd6%wi(;$@vr>(WgVs`6MH+sCJw<<3|hJ9<}dss$T8Dju=N5pj1Mg1gr0FC=A zj}i1VPYYVIOQ2%g14(AL4NrRH9i1 zaTlwY&H!w6zVkqR4ES~>s)oL>{|3gslH2*)w^)<}@O1CSU{NrL_=65{%b5O99d*W?Gj(`zRw~t#!1Ie~9<-}Y`fr8>gwA!X$eyTocD*h4T$TX{JOJr z-r^2EicQOl|!0pb2+C|CwXEgG*V`!b5n1%YR?aDn$088gnm}D zR#Hnsvpv+<%AuDDl&zsG<)1@Y+ye;{j%!b7Gh^lw7LpcZdE_)AGY)ciWX6hwMM4hj zi3kP!(a)?4OQllvrj{s&J}t50x>yXOV^nXo8K4olkD_fQoNzO%2rP`35OMiZbC>Gc zBl!DCJ5F(wncPx(*V!fR()L#nPE*o5>yRKSm&M9RD%pq9eQ@=vX)w5=^Jg(i=j#RD zI*y!NCm=O=EMg{$oN}l=>IBz( zkBc0>qleLUI<979j`_*r8lTyKj}S8>qoC>v|IJp!n^xh!88Eknihh+NVTJ25*_?_Y zlg?PGunfz}$Gc>9DWh@Cg_WUVT3xu@;BZ8dV3nW3xnu|qtWWK=1iV>kxU9P2d~Aq( zOiNo4EP=5EL!NTxk(pnrF6GEIvPUk-Msu_^#f2G^6HT|hV$j3fbk+v7HMzC zdX?8xpc|R91IKyAIpL&;ixc0%-L4D^?*G{Tj57`WoGXEaga0Z86HJRrKtW#^5)fDB zB|`oRYcVaAnen~afhyuZ@|GanO+!W7qcULFV}=YEbj&3m++l6FMHh;ll!IGKs&OR1 z#j(?FhLftk)Eu_a_S^3=zY*9&y2el974FXA{X=feMXT?peYyYTt6=}nakazZ1u$+7RNvoDDV|C4f881o9Hgi z`Jh7H20U((kAEZ|aUGpmhGpG+AVe^0@EVP%ZY!3;w63BDh}Nv!#({24@J?>C9;^=8l$0giOD;@*ii1=}y- z%enk*n5=n(Q2^dQWE2n$!lx+UfAcDs|23)^4-x>}G5^(F8u+l^h&-m-e;nDA##3RYW(S<~u9Ad*ZJdx@_P{x7#;!FK(#eXWlJzoIpDVrGMbK+&Y3z;h6#3`pP+?kYfTr5;VCXokfN{# zHMd8EvICP<)3otGc-KAGFk*lqQ z4-Xl%#`DHg)Oy!dbpD6C^1nU*yK&e~pZ{sMT8B^Z-(y@~!TwLL|3;ZirAL57NcOl7 zv(E~n`olLd zQtD()5GG|#5%KaboHH(s{i4v%bO}t+4kZ?QCyNT>^F@RTnp7?JI_%Rz#V?;Gj`Thl ztf2H`5_VG^lZ3lF+_d}$F@4h47vXW32fLd~>=Y#i7`(+G4S1u(|E`>})PcCx#_T$(@&OhLh z0*g}t7*oznP>CNO^sJ>Yi)I4iy!cOZ)~e>{OI4?T^ZsA0*{s(x`+v=+`0r7!kBR@b zNHPSh)i4CClj)M;WNS?(12S^#|4^{(4y>GQ$K@g5n1_JlFa!if$SbJRAU*_x4h9uL zl_7*+)jL?e9h7XB_X+vM_F=Vq%W{)ol15hE5~7m12`+`+=yc=Z#Hris&C1j)osw%4 z*707lYFTM3@E42sO8K1#l_f+jFi4Zthe(z`&@W{8p zYq1@Hi(1}#hR!Vpb-M_~Vv?;?g@`adXA7!I~$OLLj_iuF>?s(0zy)fBPNW@(j$yv^eoX*AH~t znwtysqxiS4?=#Q=S4g5wp*Z-*#B*nWZ-cD=~*$U za#kepVUfV?{94=pF08fvwt%!);P$Ttq`$r`rk&P{8rv>vY%9Oo*0iwJmQqBj6w^+X ze;0||DiXPwUvG0-#I>357<`Gg?OU$D+1L)Q-2j(}qi;LmMfh*NAH9BvM(XG!4~jAP_$1~W^a?=U9jZg+e8?6OWT*DxMYWs)Py5}sF}RilAE_N> zLSk?|4W68KYB9JW0oPmY5Zp|IM`ssP`7IJ5Zq3KyQ7PKFQPt7gU7=+g5*aT z=4TB7{5%V83gB8*B3na%XY_V49G?#cN2+o@7V)wQe5Z)@WHtCssSEHXI}3-w5_Y+& z3~I!^h52_)9J+v@iaJ4L*lwse48gk8MqO>xqNjROts@NXs%q^yyQ{U;S}QYs$ z=|Z5$`KVD#RFyrXp2Rz%3g{8|16R>OVxXWksr|DN4soH4)thE~Qth-q>4$g;O(5D) zmfff`o~qsR@l*kqa#&}0z3P!1Z&*w4>s7mQymu+QW;KUjJ%#r?+YW~KcJ#bn73vj^ z>@gcdq~XOGSbYEWG{9@hQO-J(w_%k#)tmWzenDQmkgzFB>2VLmDF^g0rS9wmCEsPM zDU%<5kTOnkhMpQIXUcF2&NXa6y_t^_wtz_=3!hrY66(noGDXBkI zy3>oX61Jq)F2D&|f(?n=k>yg(XA!nU(vVC|aZ6-XB&-6P`?UOZIcOG?af{3E>Yz5R$po&XtpV;%RE^yJGj=)=DnmsWhq2R?SfL&adphFiP=fRH`#(Ce$C{l;F0jDp?c zPBPy>vy2RS3(#LV8ZHQ@nzNuD33o|2Q9v-K?DUpPu9qgD;%ghzp@gnY&oiwB(a1i& ze%N1F{{F_XH`MWNi3?FI)*J3n1iZ8jVmO$hk%)Hp47!0h32G0kg9y!Y@o3h5Ksv_d z?AmtdG1*oIuh||q+gfqf|N0kcH}`;m%~Wv&%?JOUn?DE9_`w6g+S4ZRXkuskCqIS^aVD%385D=hoRm-?dd8)aE3J%uI;Y1N|dDj{A zduq2c7zEoCWQh^wvqlqnVjbV>-*eJ%L2;K*Riqr+4Rx=gM2Z)WQqBy>Z>#L)zj*G_4TOlkh|zWhp#?Khm9Hu zmG~-F;@ty4Y#zS1;X|RYUC=YRV+mHSRdJbL(DFEgp=-~2{av!HZJz+zOk05+k|Vrl@6?*nUG=6`6&_l6uerMUo@_(q+X6@r z-lwpG1X97m(NI%6!ybFxmac8*?xyEAx*Q9GcN=>XH2p--FMlV6B8CSx5_5QBMH9pm zlZ(*^)*p%0=nfAi!c7Gj)Y%nl`6J$sCAQfAf$3sJ-~Y7No5#riueaKV>Gyy2#?$-1 zN4dU+{QvIx*+}~J&$wJT0=V&(4om*O|0lrEk{>QlEF2oH=d9HYEHVDvDuvPpiN8bT zr`=59`Jl(sz*1Z=#!s+-Y3lXGU^i7XP$rYz@F-pUQBvfQ{Um8vnn*5VrHRzCFg5G+ zC!%{dM92Q#m1f281ATy`&ir{!URO{RL^wWSuEa7f#Xgi!zqc)@KhE6jh(wkj@7<-zf^svv0&4`>QW zU)q&suGA>Es%u-Wzh<>zvY0&=Gq(~sXgXkWnvr80zAn<}zT@B$)s8aogeU{+=T4)c6h1uYr%oeh_Ekk0viUzc zUiCnA+>!s&t{tZ5|7NTHH2*)!^*Q-JpBw_@F&f~@Mw_fWh9W&CC_5sU2oH?aT(=Uz z!8Y16OgJ#4*S3|61Fq#?3r}R1-#_mrTyrK)0FibRbjOqz9(Dbm$XD}RGZizeGx?%)Jv z3c_j)4@ibEF(ckck_l<-(HTb`Ex9myjPPSZN$sT$O6`%M4WsUsZPbRJNMInue@|gh zn6CKkgdmp|tJ@`(ZSBc$gcxo=Yfy3RpdB`j&L(eoiYj?YsyEeLp_t{`iUmAxRxDA5 zJ@K(WWLqxjgAd_x+LP#;P+V8R7-e8gtlyEGz^%Z)-2fkOm}1MZS|t>F_#&2nNR4N{ zZ}8XvZjeWz33En2hKEd#Wgn>&#~;Ub9sO96)6Rj0>mAE-**SEr0crZI9tW9M$C+IE z021WceJi;xiVWk=)S1Q5yT)gYqfeEIr*oir zD-%M>3jSBY3IH)2?CjyM`%!|4#FYHuufT1TN~PdTXZU1Zg&#hFC*kx*SR@|zU}s1W z?J83gb+AyDJm(vh21hp8A&OE7_oIacMS7r?U?>X0hTVeaN969NlsXlfa*C#9dOKy( zhaVGFM)}H=WmEc2^pcJ+=jyL$Fn&1#6BfS;6KyhPhy#2^o<$eA9&F)udO|K?u>dP! z&KG626c7Egpr0bok2G%`6;~8wj!5q8qT{Jii93i6}t*8ceZrEW)J5OhiRnFd0r3Q#+!|HU2qS-t& zve#5-H|EE)Y(wobOt=3L#_cgn*4LsC%V#}wjp<9EDR|<;gGVlWLPUbV2JtO6bCWq_ zp5|VLRB+31-SFHV61(=?V>>rKz7gLgOU*H^HHR`oU*66fFzyJ-ZKTXrbE1{2WgeUl6&zuA?C%p^e&i zv2?DPE4jmf;m1DTSOJZPdk3*@cUcBxq%_fi2Y1Koom8uBla+r}Ybceb+_`p&i0M7jqLW1u6k?`PN z2=Q>Vvobb-0$eV`669J@)sxkfzi_CqABl6FJCp`uhO)R|>YPW05 zdzRD$5~%o*4A94fCO)QtpLGy)!p95ebDUNf2Ljcx$U!p@yNy9LH z|0_PlB=@yhgav4H;uQN?A%x8@oEET?Y~n}PNE$$EAt@RGcCy*)eLw5_MSfj}K2DDg zfE{Po+6|WaSY2IRU0q#WW#y6}m!@n5kpp}IC_yk|^*j_wo?pF+#xe#M>A@M!KjOy> zG1ZP|ps6y`h8sP4xLtN{lYAI-#AxB4>+x_fyiJ@9ml&{bfS4n8JVTz2`Y4-OKwCYf zV9q#K`GJiX+UOI28$AMEJx^j%L1pZtC*yGP0J@SbZ)Y}|K{*nl)X22Y9LVXE#Mih32U+w9IB>w^N^2gw5c>%=4gF7iwui~i_ z=iC%x3~4j!bcSP;WbM(4MtXvp@Fa5w&jH%~I59+N8oUtuJK`)PmVqT71xFCnpf?~l z7XrP7U_>W^B!*K#C&4gQx{H?VB0YLFnwe+Oz^bE8q#)kS!U7y<#Qa9>;T;{9JW`&~ zXvXmr#9BcF8u{`p2R-8=g*zz3;b7Pme3w2Tng@^|mH?kR@W4SIz04t%Yv10;Y(x5| zyc?tC;x_KetW*uRiA&(m6rL^M*>x^fa%#QahYw1CV(Wi~Dgj8o}+_ zWBZt4|5pvG)s+8_jpCR4|4;FG)ct?yL0A9Az5eU^-gm8k93Jd`e^x&|ZJrs|`<|>! zdp`nAFjXNliNl59f@9QCqEI@HM}1Ux3q}g0jZ}Ewbx=Q)S)q}2{^M~& zrk9NL{nv-8eA!GtI6i>1ikuf#pu+85qFy5bLdJC5TkpokFMX-7797j1jE0Dp6Y!!6 zZVSZ$dNfRWMz)@Hy!;mD4D@;?B$NS2*8L#96SSQWx;4Bf-{ovvu<1tgc+W<}akB~L z5seEQ56!c);}g-u@~ZKSTDNj`c5()pB{Orceo@z1Wi#ujX;iA1IlHg-bxzgHdDA>Q z2P+SiTQgqh{R1Ar9M&(Id*(2~QNZ`R2N&mJj5^}0D2V_ZHs3T4ZLIJs8W@*o>*bFk zQ(mm%Ma3ZMOLGDKR1a|k&`~eX#HP)B?{dr0HYlYIY(ogE=O(>_ACjU z7GBE(ZsBAz8uj_T5gE+->1~BClcm!})-g<~iG~S!^rE*5XW*+_xQY@-yIZ=q#AfN} zL>@W7?-WFw!z$$ISsY|0aUoy^3rv;n+z@am(i>orHR*D1Kvp7#C3d~rkH@RvLUIhI zweXG39z!}9i9s``mc|~M6e6fAsgHJhtfLH^VMMyPECZp}zwd_%B7*{(GbN#s2$~eAd_JIsg5k#^2|SS3>YUuY+rg*0mBz-DLmSaEcZ9!gk$k z(%L#bInNc}@AC&wWU!-L^@nYAON@6V@_7y#!LcPU<|s4nb>-SSQMXG;Ool9IozDWZ10&snrxhV)p%nr)k*arma@_RRLbDclSH^~DshZ@&w&0}h zzP`AyY21_7$*?N;}$r7ME{_0^8;U5UR3(_o8ADgxa4&zU*=qxWn?2*fK5_K z%2!2{5;$Q!Gd7^=cVj?08j$xAAub=)gVh%SI6;AbFMd45e}CF-zC1V%wgYi6eJhpB z13@u;kTrow=++YNSrL;!NCJtL^pYC;GD+h8`yy2R=2*k-o8T4K2;1y}gx*!tj3IWg8d;}JVs#3SHKDWwKt+W zF!hma0z_3507)rPQ0?N}Ozwy3PASqb=+hG3ci;sHipy~02`h_lMu1?I6&v3^$Xfsg zn|$H+KY--U*CPXYJz-ih^DL#%y^O2MwCz$$4&YT2O2!9r7=^%IRR~tbtd3*SjID~9 z;%iE^T;iMI_(S$mv2W73p{{*x<@Ph>CUcG}hc6=Mj8BIA2hpTEw_?A33K?*^{8tG# zYOeq9YW0i$|I>W_MDPC~B6;KW*_)>O2++(}K#lJEn66K~1;j@ykAEmttKn9wRIPym zy?zw@_A@Diglx843jS{(@&%s^xAI~%BCGg*&pLVFJ8e*vL|3k*J#pC(#-!pZ?F~m@qJ={NnZ_H|G!QuY?MBKYl*=)goe%>u| zfVTk`FI9kx=Rao@dUE2=5T>a$aEm( zU(F``t>WLkvdhrJ8n#WaY+%U}{N2Q}<|ekch2KlqTM^qVVV^aEhzXT3Srno0ztXHF%-p-w;dDGTXx*cJXhs zj(@RMt-Mzy>L7GAy{IGXcN2T8VEZ*(3|+=ui2b+m5Vu*=&{eSi zOKJ#TgAT&RowZ8F=?>OH@%-u!0t>e1f zuWEWOmzd_Ur7B{kQqilCR^A@|-NpWCi`~V3N<>T8Ds5hsGSeOQSFLKe1(Xh#ptgxK z5UjgMakX78uln5B*RaxNNE^`Z7WGy^Xo{Fa0>WOI#|0@=57SE}y-KM);xK!R0V-9c zm4eWeLYIFKlx2jT_yMi%T^cQ>)A;v^4>okqd$i|pZ;d_1S)evs;*c~RY^g&1RP@a3 zVaZK|bc->-Gfo_|$z%LDoJIUiHARwB9fwHFcNbBzPjW(2Puw0Mm58OvO%cB7Zwbd< z_HvzS?K6`mo`Mh1s8fRWXSKsW{3!W(N-T@FwBd3uI(+QneAa4u-R)!g9`Q3=|8=5n zV|~|1e6KPWzgBnQWoiH4+H|>E zg^nO7t#tA425~a18_^L2`A-c;Ql*0krd*;#b=hI8qI^S~v`BIk{=Mw#{@cXQC>MJm z4pt@Uj>kh18F9ca$yArRKRN_WIHG z;)HfL60N8WVi0?EZmGtE9Y~RfAlNiSq`INcAYAR6q5&@oIv~+;gIlV&%$D>PMPqbZ z)GFy}_6$lOv4q6KJq_a~izsxIsZmRax!S%#HT#-eNvPT~mNAKNTZ{q1Z#mRUg~T5c zo+?<6gh*mt)K9gkTdK2mh364V5k1svE_)`SibOSH%v%UOiDXrhMK<+}vZiNCW2V70 zuu0T}@a;Xzf$0^*YaQAP=HchIv^@!@b9RfR3)j0eFT&-xlzPaKkFkx=JS= zR+on(68ksx2xzpVilUWW#oXqWPT30e99DTVp#wpqs^=`s-ZVC+oY`p)BGyc#xhX*o zq@s_QAu(vuA5{1BLfvSZXUL|pkI|WjbS0&IO&Y~5O)|tVh)wS@*(t^!AR7%NYuYfT zi%)fBO+L)ZXsV?gfiTf|F032GX`HY~&LcKXOp3^x7D~13ZZaFVTpDGKs|IO+h^aO7 znCWcGBxNw>qGXJ;n25;}0U<1OZY2qmHXI^!CfAZ)j++~dv9cxW8)?f=p^EY2zaay+Kz66^%oJ zi5D_KkLj#&X)rCj7ZOCV#1<=h%(NX7v#FQ@gdCgdcazyA_1`cyZPK#v=1WYN#4y4h zon=BzZ%t-iG(uW~4cbyu8XVfV=<=p%%qX$VGS4Eh;636LBsJGH&C=Q=DyNN(pd@Of zbrLq+O^+y=)(l~fgePM9MEkU^>cnvf>QK-2X49Nc!ZFP~Z9_y2yT)malo^Bt<`$bg zW3=s)riQd}RgF=ChE^rDQ8MVTV&J93vq+mI)u8oC{Evh<;zFbaBhE`$FG~&<@HI_p zll-i>Khs%gD3)q;%0?*bhE}sgJaa?O6t6aU1|w0yq}Z~i&$6)sNEb*aZrXH<##y&k z^=PA}?x%keZB*9ZY;E;}G%#5$eKPI)e*(r*m*cyJtU@b`RswNL-oYq^4q|kOGo+0g zi;;9xro(W_I0S~IF~St$U$hcwv@9_YAL3n*xDOpY`1nb@!jP_rvy+aSWF}hqeE8!d z4smkYpXp#lhu4yE!$AiZ;vsvc5<%`G&VEY!3-wQXSILmENZugK(1DI{MY}^o9@~gA z=zv5AG}>n>8b5@wvLQWC+cZC<(IX9<(%EfjTsDo{L*k6A6Q|<{$&{oXpfY==W{L7? zKOv4uJdt^9Q@2F2=msegq?F?9r?f|t&W>&c>8^!j7}{UR%%NuN30qA~Z@at#wxr2I zASE&0H%Z}R-0JQcI}IJ$Ln-4CwMxZ`qJE+)zJD>UALzcB#zqDjJeNF+p`jkwG-zxC zYtX@#%OJ#bj-Wec+NG=ezWwxbV{5~M#r}cv<;CC-M9#&gB)!RyT(>6?-*z!EgIVW4bm55 zIv*HllcEi_qT!>%Yo%%)V(7?9#}HPmP!Aa<16FBN8AieeF>YGjBqEZ&7{@@{Dvgb{6~YW(jFE`QVkQY6 zbciK9k$74)4!`?`07dEwQgIPANy;ZB5(y+_+R`?es#HC~A8kPu^D1?VX@ic`)CP$K zbo{Gox~QeBHi^rHhP@_>T6ASfLJNK`<0U0oZPIL2@j7!eVr*Q(FS-aVVa^6!kYYVD z6(bSqlGYZ@98oz5l5JB9Tr;kB$$GSHT(}Yz%dtTf*yk3e$1!7r@MM^&T@rkBpvSRv zs+x}5L@z`;*k{z`g8+#epsF00e7H zMhOUgn{Z27<(f{9rM5TJI3q1T;ej_iVyD=4Cv|QoEYPX0Y%p75=a*!!M4Jd%J#T5O zbz+8;#)B~Nbt^$6ZJ?o5!VH}Pv84`eE(A4cHKer_LeRxg6TV|Zv>=RKQmbC3{_)q) zhM_?xIBE0*A&rcLqY_gu;iBEvxFs5<(R2+<+mbxgoy8>Mo^ z_5W81t6%)Te2UMX$p6dPdENE=LP>`2zhu&F4~Kp93jdU@{~Bi(Bu$*R&i}Ct0p8F@ zbuPEOTor@SDf!^Vi@85ye^D3E!83^orEQ17<^|q00-p|rV4x*2DhU$IijyhbbFX0 z79$AjZycH&18ahV>m3vOkbocq;}3dCt1~8g2H4Q4=5UOj{b=7YIAAIw&ZeiV-G-ld`IdWYeG zSrE`-aR1_KxjXWu{vy_)H{F*w@(e!>Ts8`P;}yWBG2;c5U`-YFLb}3HmMO9hcx-jp zt6=!P-3wxG@UKC9Pbo7g+lQ%Cv0ohAb>sf5<_(zM^*pG@JU`Y|wZVMwrYB*PmeXi= zcM&9#rZO!aXsTEtNDmd8e<%L>M=LTihpVc3Y2TOVTg==E67@qm%34kyD({YrfDCHR zS|I0TO=f{ZoUA}0n@=#{{@M((TiqOd;tW3db=Jtyku#hD#C*cATgk7f^zJX-)R9Qd z?th-XWlO4gP8d+jhNofNgw2So^M{%b{>CM?5&G94S|Gp>5+PG16CI^17+$94Z4EJ*1pmBECgfRObkL2H&bT*^ zfi^rH;0TAoP4q5yyNL-)@wfmpA-$c;_8{^qL^Z+|>VqzMVxO2nJrPDI2La_EBAXzq z=(bO>mVL41EJWY;CfCkVm<$ECy9R)UV~qYfyfI_)-b5e3r?zPL9eWE8{ucGG$N{&G zV|t78avxEY0r4yCf8Frdje(9qvd^eCiIR89YrCP_`J2X>a(A8>z^0oM>zs5oBk-ec z2IR*6b=ckn*MXW$G4~z#cYHfQXXbM39CNM+ai@~oP6wkKh>93AHG$O2sMq(dY_U#= z=?bi=fMkY0bttX|Zmx8LP*(JJbX3mT8MBvVY~E~GHJXQ)>o!E$g(<#P-p^P{%vm1K zSV|e3h2m&|bU@riyZXPUlcE)l9?x^zxl?@tgjI@%JX`@*0C**Pq`S&IDz4x^X)rNn zmx6L1LU3h(7*I%h3N4TzfMQ)i{cajJx>;AAQo)^u1Um#So-Q|nPHjc}ab%1I;+a!l zIKuOI0O33^T(U@$u@%jL?|-{S$hUKHs5-E_=1d_DHFdX=8Qa zXI$w~3^?p_);K=OC>ESBo7!;BU;w8W;z6t*2=-w@tu|MC!{`Va$G8w2^}@);A@vdr zN0Nx8Lz^m5Fm9k9kgcvQ*_sLjg_kZU**uT}PZz##}nqaouJct)@L-ihA;btS_G z(%jA+MemJR7%ISwfD_8DL3r(Af$KqpK7|@+BbQSZAan^JM?r$bPO#|qxgA++P4oTj zTyYh+KC}B($?LU91A(%yNBf1|A#~^}{!W@I> zjySwX45Cse!MGHU} zsnuhnWBTkOba0xNY(`J_ih^LyP(7fs*O$6q!bN_XPlo+Rr#BKi=M$NL%&`9`mnu~^ z{!du^694CueEvlCAB}_4R}e|oHUUwoh80M+f7uyW(H}ovP{?}oytR9H()g}*e(;ZG zF05(ujmA;y;0-62j2P?ZWwXYn6_Z_7u$xs|7V8;-)jP%kuvLOm0C}?74Dr(Wx22re zy;=}Ru+=c$<;_fnID31VLyj#yKpZ@8UWbjQu} z#Qh(f92d-F?jMuAAY}GW`M&(1&?ROn15UhfHsPcj zXamkbxA()vIZAr(#p2*20G&Gyn$2c#KIsNwE!+}oqqwn_s@ZzE>#zKBcl{y=H@0dO zTvcm6+#po;#58uTu{L%a_V0@`>$iZw`hBwR)OUaHHd>AI(34j3q?PTo#*y{=rSqGx zVI@KIOlPhPO&uY@HZkx}kN9sVm4T?^u%#L11gV~cXuo3{T&+mXLj}M9Y1vl|H4KGd znn9LPI6Vxx2&HM!QclRif@g@5=8ac00qx)!`+PrHi_xpS`!MaP;q#wUC zo`jUR(z}zfk=N zqO89FPHq3?UF3XJnfq?ax|&+>W-9w)%97ko$R2n#B@a&AROXq<=xUKWrQ4|cj?@L6 z@rRMZQ8$)9*A}~OvgYE;jg#lbY23R*b<2aUo@`S8%x|AAK=48FuE3Fep>i_3oM1rT zTQEQ?1lQ5HdmoKSR=WPs9t(O`*?-=PD|!LnG;V=u9s#xfb2 zb(LjbWKjuuzaa04KyX<6Dl6UFG{MAop~a<)J1u>4RZ!ed-dbU@4b+eSl9A%4I+hz-3^{sMR{di#Iir-h0Yahi+kW!aT6w;j3 zP@;fb3EX<>(n&Ul*G}t!ynj0XFj&X$*W=+}c$-L|tX2NEjFGBKCd-}~WDxhZ$?Sc~ zwV5LlYFi@RM6`GtscAMYgiuAOPnmGmu+U-Sq1S!C%@OF~v@@A`TSRuh;%nRi%Xko5 z1*07eMH2&7^76e;a6P;iTg>2tRe+Wm0(l+b>JwX(k4zT4A@QO_pd<4x&$+L8@I{_J zA*#DP|6rzF2dAKa)D4dYX|7A2kAJ=64r-no9;41vUh<@y&D>dLUiGlL_4B*!@eSbN z7d}pFPk-m*?;vwt=D+!&Wj^il=Re~9$BUPFuYkno32%X-QgokkuF_xEmdA#)rmaXjP@^^mq1!st@2{U(~F77Z; z_gkYNK~+~m-Wo6qm!dk z)aCQ7mEIj7krMU}UN+A!jD&i#zGwUdqXMJ!E8|DA(J+2x-5KEi+Y(1yA%YM402$}0 zq!sw9RMY|dLL9kQ0zx<$M}w=F-!+P&ZE+MBsEUFT)OUC!;Whv}vollB6ufvORWCM& z&mCb~AJA0=w+Dk@@kk{`b}BR_=6xl2wkkjRTUN?5tnn`?lBjPewU{Z9O!?P?`;d1U zqD34k$T)ztK&8lpe`P=wWTsG!AXr;lgKy5uY(|@JGFMPKK-FM zw$W7L!IRpen;1$)jhm2gZ{t=p9!DRt3Ckew41!y6c?E)f7*GD1ka}B4^AT8CUJct( zUvVZ-I)kQ^+K`WSNkVL)5_%BfnYqtMlm`HL^KD?!IrQzw7r?R=nVNAOqP~kFq%blH z(%|F~G+5zzJ!SqIVzuVvE;c@%1g?l+H?-f%Y&HF zuGG!s>6F2T3Z>OZ4FLLubC>3w7JJh-esmI*!=me2yD8w?q$`8Q2&6$?T?%X}16&p;z91c0rW7cZ)9b+ObQn&kre|M%VoLLtE z^Q|K879bAf7o9ApIxv683sydt<6w20T4yB}b=F;JZ?K(9UkV7Wd(}t&!%hhJlIQYj z+jE5=-H9mOoA*8@NiJ{u;8LKEuS3LCicGwnx$h;mvdSHe4~2^9iKFrW&e3w;^rQRo zDxbm^PND}@O8=IDu;AQZAPa5atYKQEkAXcJTZ(S&N79@K@LAaD^y6r3pr--9KNfxr zC6v*v2XYUH4#higW|O>^i06Q95t_8Xy@_w&(&g89JVZ$8H{Gv;x0}f@fII>aQnq!T zC_5aRmp!n58u{iuj|A83kJ+Rss%|#Hol$BzkgUTRR+P;3+F&J`puOlSMhQKUPhE!n z?cj8XBL}6QSw_A=!H323Fpl7Fu(_a$?ugqF0-G2-D;32g4F_i1P@K?lF8)IQu{e4w zAh7Zy))Z8O&X!QL#bMJ|`aE;w?Pu1HKzubz{|iq%MgBJo{v||Z@naxx9D+Fgulbuc zOF}EtKJqyAu-2at=oCJ_<(z;gJ3Cq{t~MP=j!QIG5B||EJ+ZECa)H*Xd9dw8SM`>#zf*USmBFtWA#p= zE2k)1KS7512o0Wz!CixDQHYMv&SeiDcBotb*EQ_x1UY(y|JX(t|gH{RnP@O^SmS@q)E)+r6X-V#Y#3^B10LS}nAvtdQKT zNiB`XRh(pvZ+yM?NhnO<80?#nT!0cJxmXL#1$a?J$YZUIhBVc{+vybH{Q-zjRs#k$ zjMX(t@8kE^L$Gxd)zR7wFgb}#;b_G-;Dre)@MBWQew}wa;;6eF?8&UZCIO__s3lnrZ5ctHQ#K!xZhf+x z>=64yOim1mPEkBG=)s5@fzLD>0Ca_BgWI7_iPgWv>mUW~KZLA{s#c%*2i??9(5?VQ zK)SzUV#~+|3$PVb3KMdFp!!Dhrf8+RG7Lu;!{Bm+_6jd-0u6llc{<}08&Q4*oN)!C z)NnS%Q7eX`HXayArxS{NNvBocLITF5bkbl70EVD%4f4B6UI4ee9RE#6Ilpai+8R{7#s z`J3=z>HqtG{@>mN6$CIaemuZ(K2WVBdYDmI3(Ay<$2%Me`r4z8^t%n`l<45m!X0&O zf+mlYJUmBNLIz=z6v1gpOD8Ww%`sm{zXWnU^F?TlpyIs0F6~`-LV0ej2PoKJ`hawi`;pr2a zywF0yOy00X=lDt&Tlm!TVIREEtIvQb#9lZV1D?*Vm3g&BUibE9#7pp!G{%r(Q!9aS zIsCN9U;?rMoHjn&fD~vYZ9OVdELT33_3fvdW?&$sr%w4N0hM$T-Nh;Bl$|E$&tWW@ z#=$&`FX!WX@MkVRB6}&8sKxmGZ%d9Q*J_M!aaDU|a5H z+w5A;BAjOu@;yFd-$uMbrZt>tJA=Kec&&0b*=kr_gFD90cwm%Hzwj4Ah3Epj;VX`e zI}aOGi;Nzb4=r}lyyplD5Y4!bGFXj0NX2zb@`%mj6_5ueNYVy+CS9>tR781)AQx$9 zB(WVdeI+5w5SfL*$Ng@nJIp%xlXNB4ei1Mjdek6V1Cyc~HBM7tmOvK*w2E1gg={pj zB?4XzNUwWfz5qI2LXLbiNeZR$9pBiIX@Ou;Y(k;lerdCcZF~jOjs$suB2F~OWySug zl!4To%(#?M0}SmtGg%_QDl;@(>1YgMl%nvr z0@@cXEpkgH(3t1qlV1XTS}Oq@1CQ_VewksiCgTtKaH$o7T54glRy@VSix9MS(^jo` zXK_hyG3~eHj3%tUZ8Ye-IHv+W3}v-xYHFK59GqWB-lF?}cXI6*)wf)o?Xk_e7Y9ep zy_45i{XP-{6ALUJ-cC|`zrvAY>bpY!rjZJ~N+I=}?FP~)Rd`$&RS+Hk%p^sLKAbts zGlJ?o1KK6ScLrz4$R*DuKwy*D61(v5rq^kqbhb=I3&A&B7?x%I;^gR{(K>4$)_-X3 zfkl^3bX1slnSqIghYvfI*haQ_H-VG!<8XF09cP8WO~;NAl?qM$VboPv!uIy>~-0oiNZHwld}MIb^UWYnE}P-s}A( z9Yp$yr>#A8DeFOnb^~D`1vs@b5L2+H6e`(1BJ7om#;Tf5&!kdBy3?Q|hDE$&(Api| z2(rvlprd0FD10TxH()wR@D8p(4fB*h`*?c0QQ{(kwCykuhbw47$RPu!$cNE_gAlJ> z?+X57c;L~MQj_4T=HMSJiQD3k_1R$GaMS`VNY8Dk2eUkvc~?5mARDSv6L{nry5dc$ zEqPu@PbM!G@0`Ltv^|&ph32B$ajs$;*gLZem2L-EE%TI+o>`oHD)EPG0eleP_Vr77 z)_cyJ#7FY@Ct%Gk7U$D9_{_4?EZ3Q0HhNpMquk6+Oy?ziv4IVMnvfn&M(h--`$5p0 z5NrCq_Ba}U2rhelwO%ab^TggJla?sk>h{L8z_7w75^G-8^0eq!<d%iU_lD14Z3_ zr$0<$EY7wX{p%L+6MKjtgFWtwC;5=zzx5Cjh0 zT)s!eLuWvHw6s!2FCy{Sa0h0oPp2pXye|gCLOjQtx?`oAiTg2V&k||D)Q#y%0+u=Y zbcw;=f~h0)OX%hZ=3iUNKubV|S8;~=a7l%kOnw>2$7JJp0`j}~M~L*I12}y1Wd=O= zxeS&eF2W1hUhuDf1z(B6`6Y;E0GtYHi}plq0%P?BY?eQXT5s2=ADPah`AMX{efG>F z|0ko~Kpdx7hjTbY6%Nl+!MQ!?5g(A6SS90-*D*u;M(p3xx_Nf$Ym;9%QS`<#ih+M-?V;LpYfLIA!*It10T$*CCIbQa>bVJo zJryG|+%P)$Mzpm00>09jYX(ragO3gtci{rIi1Q4389$Hf44?l8bjUbde=;8f;N@YX zTFvnPK;Iqz52cOT{{+=1gJ8<%zuf=Bl=+Xq>%mj>G2Q=1F)S9#uK)Ma7yloh=Ci(l z|99JMM|pAAA8EH9;O6{Qt7ZH3kcoyL4#A9X-&>wI7IUZZ`r!DYwcBbOUl{(@p`WAr z565S@u%e#a3aSUEg7DZ@J*@|ZKJG&DPZhEGEvt&bvmngBm9LD)AP^?>q?LRni@#Pw zD4?}}($KtBua)nAD)En6CFoKkxcdM=>@#;c%cY^bE0>ngn`rqg_Ki6MhC`i1|0iq9X+|6kS*PYyg=fRX+Ly8!Z0BIg!4e2$rw zo=bN5N`6s>Z0sraKb(VR_!Y*`2T?};Pzg* z4&X4w@9gbKV*FSUJC;$$d5z&B^2_Of9P*w`6tN@U2q@8R>tL?{2lU?HF6xWQd#{Y! zM{sLIMNePV&zm8ZJiU&RID~>AkY2?DC>^_HOR8u|7G)j>C2eOi-D@Z42`Rilifs2L z$qqEdZHV7u8kLJC!8xx=nBPl+s}hH`8KYJQ3eAj!BD&@XB~Kh1<6i{&D&yh$g`Zh8UEL-bQ!qB#N@aZ@wwXcZEiwaZfpE65lyy2=vTF>FFYN z&!u#ck&5BBrl2Y-I zb-Q4QbCn%gw>xQzP1w9BAW&vi!8)d&eNoTrW8Yo_%D=wRU3OGw?Q$JjpB^HZ2|nel z9r}Mj#p^}=nA;Vn`3%=3pCWvWXeQI|GIy~^*qAO|q%0H~Mvml5SQuYen1@7zQ5gN) zBf*@RGRB`WoQqx~A2F1R>|~BGE*hSNLbxb4@YwJzMnjUJXiUux1Yk6icGa&NdW?sA zqYJ<1d3#e`*t7Z*dQ}IB*}4|;pZ}il@b^En&VQA#T&p?fzjC$u<^11O=6e$o(>91 zmEiSz@8bT4<@b3u7Hf&)Rj)tk4O-;AW%;YGL}nof^Qy}2z^;^4rI^>#tqu;iVj!c* zxHVD3Fb)y%T?;HQ&F?L+Wl8Ha1kvU#i!C}X7QiJR?=QFxfmTjhhbJ%1+1hLFzJ9qZ zPMd`w8eb()B>=%eh?KvHe{x_FCOTOD8p1!WcH{Q#)z^hUG}3CE9G?gO!mp>G8i6l| zCyn}HHNOKjX*n%JGIml3u$TY+U+4#m{0>Gh{Ww@Qv4c-F_D|*p35sYZ4ZiO z)@C-ijuGe3n(4y(me5?IILtTL9o8uXlGw!41zn!MZZw+b z=fF6vP-sGnWr3?7YnC;Jx|c;PiXXA_%-nb|xz0o;gxtkn9; z`oS@z;}bvhYy&$}4o*nG}D63YW>Rmi0<9J_rG2B-3w0>5H z;x$7BIlY^MV_j>5l-si_iJ3V)J83|jO{g;%%HuPf+t#fm@Tz{ici5!mn$P8ym(~89 z7YR21IakF*Ikh)Jx!?uxTlkpitD%rC@ap8|uxRNxOYN(sJ$ zbc5WR5lM6~5;vd-Xe}vh2k2qfyDNZ93MO~oNW$q)&?5NV@R*p5k;%wOESOn{! zzoK^R0&N{gM3gy-NrjOpr;G9Xr~?rtHdjGu9f)H(N<;eXgAQ3iFpJISG9iBp$Yuwm za~C=A%zZmJe^XZxNFXI)B{#-N=yeI!SKmt>tyS1K+-TJM$rMfB^3X;1ton)#7a|6p zL|XDwO6KM21T$KUqh1S|LyoSh1Am5t-cOcD{g$s8pgh*@;X9H`qhI)gdjaJC~!^_L$r`NzLT7Ta^y8yxVt#xmru#SfDMpTYe1QCCQm4U!*>Lx~thAGRW z6-WkHVW#@=V8^k6x{0oO9coSpg)$)da;sIZpEX|9Dy_zmV7iB`^P~FVVXKu7zWFA| z%2Z3Yo3xjQqlpxngWm){ybt)Uk5DD->fX@eBNV8Pk_SYs<_u(SIy zM>VUT6_P7krx#~>AEPZ6+h&X~2zm0goNf#G55yO{K#_)zetcUxv75r3RwO#l5u^`q z=|o1pGK}Ded~-YCM_Y=!qbHGwpC0jBu=q|t{6Kg3I@i#g+ulK>M=jazkYDSiyxpU+ zp9?`GB`;L%cybTk5b$9##)M}nZ7nz%sQS>{4cs4zZ4&%-x8qB2%hVl$v<5+m@s%N6 zP^nuN(_LV60|>vl703EfAMb|9+CN#N4NYyr&^ls@ANv3=@3+`5?PYJAh#i`AW9B`l zITzmD!M=hMD1cNA=mi&%;7YM@8kZs$o z2GJ!5%iu1DoQoQyv<7c&1~K#i&&%ZH6|}Y-uU)MLM@I)INWFWn&+|e60@C^bv_$ta zDvTI;#i8qe0}Ixxb;8#)tQy#FiFMG4{X`UC9+B&#i0R1?JrwlUwftAAGnw1Bd`yMD z>l3=n<%?1vM|QSvEu^)eo;`&Hla-`;S5I%#U|bLHV|dFiRtqeoWCA5%sKi5UAb?3- zo38gI&}vG01Bf5TzNOGXDY(ugPvf!>5DVM|-w(&{v864KdJm*Sdu7RS*$9vh zoggcXj4Klv;3fv4>^=$^#$eL87+!k2aEAfM`4s9mr3(dw<0h%x>img`GLoXJ#e5n_c(S&D- zsCjdF0&15?hy$d9vS5;)_S=Cu@2}z4pJsM#k|Fa$`BFXqt7y!mEOSI`+CW> zGz*%I4Kx@czh_#T>9Cj^*qoU0TU1yO2}l~$Kw-M5GMx(@!jlJbz^bgWQkx5o-9;Oj zq`D4zdPys}i%c(om;6#3Tp~#AS_1mJg?VlWjfskK{DUF=n!}49K{buhi6XrOPR?-} zcy?)_-P=*Y?m{O`gkILvLzoz8a}7j7ImcN{AM)@DN$!9=9P&jmmTpqury3Bup|~(S zVDO*pU+aRfdaYl3qtzn2V;G9<1iY~BgX>c?v}B}Q@#TZj^KvoobiPcHcnp*o z#S7H0?sCVh>f}0mor4B_-9}z4D2O$Jo<<+*lPyPj5Dq;MoF&bG7b0h)8AtDsa?2s1 zm`1=j%Dbr7S4VG@b|6K@CLndiz@bs5U;tSY6A))6DQj1#-sYkHT!O0&@N&8u)mnG|{OL)Xa|3#7p6JWS9r(*Gd}LlD8{ux0)^d zW+>p(NHHxf4DV0|7BLJJG|~Qml%;%&Gst)>1MhXl>?*@l*0q7nD#eE}$Ekcl!Rog> zTtha|m{FeD1`#*q@(({Q7xc-LCMe(FGZ0Ij$BZkbEJ_qrTtej8rGvU@mJFDMi^2qC zMNnuWj=G{NaIp(WlP-iXW1yT{e|qwj+Emh~QP6=DaOOxIQii6avoFcV*+9M>V?afz zmb#S@)`An)DYdjc&zMVl66PR$cz6L5OSKYm^#rjUQ$$Jhx@XX~tw(~UY#}q%_!PqO z>m_=_R_CV6?nuFn-mo+2qwJ4}94@Mr5RGj+jX2aoE~W%`A~DdFw+otzX2{zG+IxSw z5u*1Rlk6B=IdQ-8EfifI!#Z}AE)uayNzK5}D**aDR4I5s)e%WlD z)?YS*=RuKd8jerSj_QY)STLfv8=lSM8w}$Jw@(S2P!r^!7y$%tq>@RmlOU0i9x~t> zq_UF`Yzy(^`W9k=ij;y7)8W`0JPSrWKHFkRiU@QHPRt}~AZHX)7-r0nFE@Gv*%K9O z_up~-BRaY30*dUry}KUWf(!l#PMH$gh7)xDk5PRfRtx4`wV**Py8nUS zHdemd6(sRqo>c%81Xz1a=&#uAT2Lp2vEW${0wM*BZh{^Q!M=l9cMmL31SN*R1|G&k zjX<<6dSrDyyvOYfO9l8=mQCN9h^3@9$GU zVDb%jRsEJ;nsV8ARxPiGti_&{?Jkj20edk>ejvpws*Y=dp7YApff?2s;RU32Aqo_2 zOIb!4^O)1^YA(QSI;wON4khPsYk3dEfE9hRa2uWnJ|R2{u=q{ubO7yMUGS9X%0^8N zsK!Q!0PoJhht?z;^Nqog1~ey@p%me|`2&xoH*n`IlRG)A1jb5mq{0GX!wSsJB*XRPLzU=y1?2} zI9v@gX;=!nnKb-yh?ou%W36v`5_)wei%F2&B9qR&8~dl%M}-TrA5CL!qwcElgMiy4 z0pO84rP9JWR?g2Ev2iO>V}^w99|^(cS^XKu1dJz>WG(qcM!MiWJAI@M2w9xL8Lisc zvV|MpcsoMih?TAue+7{^8QznY!hapYhEv`l0yhCXBCJ4bwHsEus zdr@lk4I9sx?x1XA!G%aMf_jemIeuqwiH)Nd zGrM|5+bUMEY#KEgbGD3?Wy6M3mS_~Ud;Q)79SZ}BbMgx0C(o;Pc(8-^QhK0G;BkL!b%&5PD?^JV?w;7xN`$U^YuxhR+~emA@WV0Ez{KwIa_;BhgZTVAFw z!Lwi^AG~-Gl=D`fR6$f+M#q#;fxZOaehX!_U;MMP`j7bXb@@F207t^%CAcVA5BR(I z@l)}w@cR}Gi&e?L+)h^w>99JU!+5FD=ck_W^4Yut&)J#Ur&H9=0v-!IX|lCzRU*q zs1j#vn(5_MN#`t=1kIa;^LEj)QM8;Y>f)r^y8?R;2PdzN>J1Hy82W3z&BZ6`(oq{o z9~brW?^;I(KfqP)d$`QSgje6oZwJR>BIOTg8m7;F_Kw!eAm)nZV1nUgZ|nTW;|5<3 ztF$^KnhBykyD1EkX52I*t-J{f#*dQ!ei>|@K>vU!KtsRDd+ULZjsOaxaE=`S24aoG z{Y%P_VL@};42H(DVuDiqqn=X9bfAqjyrRMDnc_CO1p@PWQDr9xA-tWDq5wdIZ3jW1 zx`KB#01wA(LQRhounA1~oHXoO^x`D%03>eN9arWO-3c_CA;otb-?IEu0_?v86mpkz z47wULq!1=pzcJe6igd+>F`|SHZiOMFJLm+^1aZRmwxS$(W5nxRsl6jy2PY$Pc3Yrg z@J;BnwIwd&;IeZY61xLC*I z=z}VsZ0Ar9g_E!I!R&f)HNn_s^gN5(HlB82FNRYtfJ)S72L&?Tyc;BqlW~x;sO5xG zfEA6lb0&d15$uC=#}g}(r$ZB(22vBOr^lLLnp}I`f-}!#$8c+Xx8oe=w6ET1luZs0 zs!kKbgr_F~GY>Y9Vbvfw8j#Z%*wdKE7n0-H=3V3$9Dae(3$!B}=XtYl~ zsPJj_s8&p5r)J@b{iyn}#hD(MVZxy??V-flZD{PTb?I*Wo=FxB-_X$~?nL7*EEzHo zKue=2;nVrIqU{&b(Y#)ATzxxeg3Xb$llkWvRaXsgj0<+IxPs8oBtj#sjHnR@32#5NKs{|rUsE!zdO*C(-L>S#wy_@6))ES zbTmx(-Mgk1hHm+?_dWpAcR_*R%N;tv=jYh!|H%_BVEQHg4Q>kQV4Y4`YeCjfO+m10&>1Ov}&bKQR?VkhuO|Q zG?;+5MHv7gKW794)900tuB8htjy6pW)l{q}i>ayNhGzUfQ?HyA{|R*rPvi!ChW>Y> zQccBw3&YA6{qLvvtpADPKcPd#R17GUs&u;D{$*$IWI>>ekOsIYNLjUNJoJ)kBFeV} zf5W@e5T4f1sncLI)MPZi!U3xoQbtd|8QvsY=SOAJyJYKVuWJ21e^n3Ngi^JZN-9;{ zr1EAesT!6%Ni9!hOm?~fjp`4L-9`%(lUo^ir)T@1rcGrwM5R>XOE(eKgDH(7Bkv~a zKxoty{!m5zJSdl3L~=%$!dA#RrJ@J5{^khBvfic#*_>BN!0I&aXiePXd~A*+eWs3%ClSNd7oMUCf_LFpXHeaoNh7-*}y^}`;uQG6VxlK z!4cbCYDR`Bi}0}EZyE@CA-2uFSBzGTGH`9N4c8lSclDK+X>k_dcNvi5V~XYIyb5^x%(?=C*E$SooGD%(33$6&^fSSm*H=QK{&E{oZV7-DiqeN`4CX5yCrAb zHj%19`I6J+kIr9$v+|2+6KRBYTMbUtf!xvj8rKW(keV*k61uP?%81Zt#e-PURUufRC(0!w z+_(B|goAPgln0CiE0)&ZdV_6d|43%+o{Ds&x07x8966QQ8&Ld4tG0T)D{9GXvjIE* z_EMIKI+I(mknE?=sxUZ=qfUBv8jyqrCU-b4X#*w8>qo^=f(QF;wbXFY6o3YirV>;i z%PR=631+P`R+P54(FI>S5==%tthSZqT#zPi+wz|!YbtdW*=dSJkLO<4P`AYj5hq}I z^8!2&Mx-3DcMI0UMK`NF5gddM#v+g6KE~?LV95u0YJxsGkh~kADGk?9o*Cky}yWO>;Rjz9|ON$>l5}OR1qn1JRY%(13ag+^&Q2f7^8VOQeI>z<6`nyW=pc zR8KU5^*|?x4kWQ8G%X#{qt3dk8V|s^iERI1&*`G4PQ)@ss;IU{Tn!rK;Hth!=i#J= zD82!ZjF!N`O6qDrhL590pCm>nHDyPsOYNnLhU$d)HPC{~^5sL;R-5~#Hd zKV~#gqoa8uf?9Ab78TTFJdchHYB%NyH_WoB4g;-TB&OwlCRvcNw}V&1KHc$++#`g# z=$~tPRImGK1o!)T7&^4z$9zG)k}|L+7UqowNB$g$F|nKl{{#m7}?uOK9fU8 zJ6ZD0h$nzHHRymeRIo!pY<%K2Br}q(++X!`76Rzp28b=Ge%TIAl&yn(4ZCiJ-Zpx3 zAS2fieh3EUjAFDtS2-HOctL|E8er_h6M0HWGNQ9@yoHNS=6u|=cVrms9ENoYK2x;?j5;34Nz&p8o#MbT zrfG`f&^p~3Q(3re1m9V=D09d=Y}#iaaT}cN-;vi=FeCAC^#!B3Kixq6z^^S1{j`ws zX>e7fW&rs>d{O4QlDiw*vE`@mzH4aUL^C}xE)@6fgzN>+o)RURU{l+;n+x%%BV@+m zjbjRO1SbMRuT=;}BsnF(3WuEpu0M@lTCx`(8fJ%|_9KD?Z`%H5Ap=Ce_6OyfzBlpi zg6ZJa>8?9wkZb7NGSeDLWsUg&l|K4iqx2U^;u)W-Ei*H&4Mu4E(X!H-p&g@7aa-FB z7QlGgQen9Gwg#|Zlt1qV39w1E2t%Z|Bm@dI{`_R=?T zJYjv4wtH3U;Bj*||NPkV%uXSBx|yxYNaZ@8fAeeN|OK4_C}sQz(yuuI=w{^Q`3z8(H!W25zt^9#P+LQvtsV#;6vTW5=2b(406 z70#OH=LNyg)>kZ5x$(XTm6}{*uc_-eHLN#DW*t8?{rE2K%b=zJ_+c144?=9VVKhYL zLfIe{EfsJ(@D?rEMaxr)mhGaIDMc%G(dv|r7c#ol>?cHSZRU-uDK{uU7P3 zXzBa&R^___wp4i+;KhbG!wtG{0VQMN8f7=R?B*P0!`gSa0K(cFg-aDGT$%@pa)}C; zOBscon-UnlkllUPx6J8Abb*_$gE|3eifrEOdWxnltb};Al8ih4JF6VsSyBG)`hF=V zQd%;atlL^QnM`es^3B#n3b*Et*1CPNuAh9IHYeXu;QSkx@-9b)xk`nI)^}j(+B%N3 z3cxJj=|^HHa;>8`5pV<)CG7Q$UL#D#aYS|kR$aJ|yG?eet~|8af#B7!^}P|FGeF(V zm)v|;WxR{CROfWDpyEPba=1CJM%TnWu}wz(ghB;w8-bIBNHvKuI&~|~ zg)%|_=qm}QOwW;}HB2>SZ$UkLxbjF?Q0|)tlrL~&>o+9`gm)OQ5DVjdY zg_o+%6-a-TF7I4`NJse!x(8kdyCby}A*&C)mNA=3t2`9Y54l-3WY~54mHlE@%*MQa zxnTBOFhAs8*<351`K|Jqc@X_mUJaY8=p$YX>u%<_7B*p8=u+5V7>~UYwwm&|VZ-O7 zURz50h%djObhno_*tAQV5~6W@rmuHO=*wz{N~anz&Nt#~EBSRQFh=QAOHz{667RH@ zOu0A1Xw;cI=YqYiuf^}l5W{!Jo->R^f&bxz(A!;I*uDjKJIkI}-wimH@!WrBKq;?0 zk;P!BG#weqLv(ZAdGpx{Zaftfz>X#!FgT_(mR47yJ&e%|t!Wnt=qHuW4#uE4%E%iLhJrCf zA&TD=4V1SV_CE2~BrqOOs|pB+A*v_NgLVK~*Xw-%7c}tBi9}6>gdjpG$?z~$utUfj zZ*b63Ikk2dH79WE&U=|}EV>f=H@<_|c-{2sS0Z8o5h^4|6i(m_ju)37pDmOgvl1R< zumCN5M&=6kfaX3AKDDWW+i1q=aHg38-cIU^?p($dcP`5?A?LM7$jxbskcRQ$mIzi` zPj83dYd!<%AIAn^p{bc?7I*@uni}M08X7=(cJd~@m+50?ztJJO;jTw_g&%h z2ZNYxGJT*0#S_|3&<*W>sP)93|Kqd&;MkK-*2i@Fk78KfNZEgs!txjUk5BRWlh}W} zuAd&feqC=gnx+Mam1@|4^dVaAIz^TxQ;@~{HdB+0qdj(`J4K7aDE-Zcq}6VYPp{Pphs!4J8wTZ3V5cyn|6H8*Som;G%iM|JDD|#sAYM`8?eJfB8Xt-!j z(y*N-jzJ>%LHmNzCftfvN0V`DqW#BnP!{PVzGQlXe?wX58y|8Qokvk;Jk;Ko;X&E> zMx5`X2^{yg@xt!xC=ll>@&J1oM?&zA!Tl(?A!v+0j6|)bfO(MM4QFo<)Gu1EzHih| zOQ>rS2MOFi>h*Ewx>g~bmMlUOBIiSOMR+$%X z)p_w&OBXzSeX!>lb9&Cei<1vK8{W>3%IT7u{*sk+$*qh5Rl|~9vgCpDjWao1QV^FA zr}PR1E@0Jk7HvT5)-D3Am(q==peVJ@j$it)1v6k8TEl%R#<63Q&e!$5?{GIbKiR)f z9)(nDqe-DEq^xR`e`98q%&b@6V_MnpHvBgkWNVuusSRz#5DT4T8z)T_Jmn3ae=-)9 zv{*Ch%Gg}nf&3=xOD}@+v_nDb!IUf-Ux9NAr8t7C4{n%zh+m66m`k`lQga2_UTaKr;4t!7x%m3sqH zT%!qqI9&9l1`%%;q;F^*FE?VS9)!6i9|PTMAu zFd)AnAJTJ9Sn#)BZsXh7jflatg?Wk8GwRxu%f6h0_;Uzn07bkK5gQV~~%i$0tunXtlZ!AEW|CAKl8skv3A2Uir~v3YxQ4b;7rmQz~{6y|R!kVU z#h2U#`VLg@=#$?xrnLgBg4P(r!cPTY*q%h>#$R@MJLxIIx3P4drw3(Pi6XD33AcQ0 z=T;;)-m#M<)14XP5Pz%H#=mVx|7a>L-P0?fUXmt+NhH71t_y1eXaG}L(GLfgd1+X> zyaIGIrIz-{4MZ`udDHX1>}YTADAm&Ea(p0>%?jJ zSrXIC_c9`D^#xYNLX5uORX-}Ot?meLIt8WBIJS!A2+6-sfg3QtD9Qj`?jW!o8Uz$1 zj85wqChI9W#&$d%ud7hRW}jE$#2b&<)`)(8LhOvQc;|V3oCzW-^F(_!Zox5WQ^qV-S~D&cMy=IhfXHkeM$xnKto#< zw%5}5$bh|p3fOCEePpEGVE#zG_?z%(hwXL9c*o6i!xkuxz(y3JGR0W03(4sN*$)m< zGqUC^3=|)9AsH+N=!DdV2TjH^w9jvh69;~$uFkJ z5i8ChebPfAzOK zNl!>FolB1)GhAdsRqD_JyCIX#2uX-5)-QOAx&&h&6%^ zn(Y*H(QGHZi$Az8^)aRu@?D*n|t0$l-Z&Z3I~+EI&hBKUXi#{+p*yiLZw z+7Lq{Z*B0sfoh^Rz!sLsb&~kZ*^4tul(ubm$K6Rgc#p4^-UrboPFrV)3Ryh%fboW1 z_yZRHkWrX@FN;anukIr0LEVT>fYV^PQ)xC@C#Nz3IeJ=P^UOe$HGE*PTZU%ihrL&= zm(61csEx&&jlEavKU6B4>pzsL)o?4giU%>OxJI{a@NH<-1e?d#7tQS2ovz(HZk+vi zdZ9|hgAUv^n??4Tc9CwJD)QY+l?!83I8$SRSvjizu+Yp3De^9E^}0N@=gr1xSlT=b z=^Cg=JvJLJ1Ca_>eNcrn(V1; zRI1jpD(#-t4~|byP7Y7YrK0Swf>qD<8`WBQD-aoT)ZSFkR_)rGQvo*W)il5}DpgCN zth9lZjt|Z+*0H9@^3^nE9fSN>F%A5a59Q2-{i=TcN(aTFUn&Ha{HX#~sRS9SN+zh_ zS296`zQTl~y^8g#YW`yKwV5FjX_^_1kiVT8Xc&38V1%Wb{eEvWf!9FTmN?k*>sQ0h zJYBavwQf7JuIAuZz7}4RGR4#3z*n3C7duXS^y2MYTAs8TZ(5E0mo4VZ7}XtHL0I9? zOzu@U^@QE=_RT^WzfNr)r&6^A~o(GnCRfn64@!_tdeQ+VeN%M*>UuMh*9a*(++&A`8U zGFdBZVJ4R*1^8D_p0`rQD|34Q?2wAfjyu?C)^~$SltO6UH5m zh?3O>`RLL$z$aB!4duK@Rxu?1Ksl@mOm|fn!k1k>rP`wmP2RR6DvY)xy*#B>NXj#n zjwGJ$NS3o7`~&D$2;(K^wBebs5x~K07M4QGhF_nJn#m#l(0fIo#*rBd>JEu z`D7zMp|zK4NL~#+2oYD0LWF^d3=+TtrA-32?S8NG5IkU8f&zREJcs}YxW&e;Wy=++ z?_agXz+XPqz$F1V?L2<|ABl%dM0DeRt2dyi5^-P19*74+9GR1S86o!EYR1Kh?$F{- zg}~Kvfx^fStk~XMXnDt52wXGl-)w-PQwQQ8rG`TlRtBlz8f2eGisDjif=#hz(b~3k zz8G1=^|#2*jqKdEo!ho^2X^kj&b_j8uk76Jww9)Kx{b;-Dm(-&i8+It6;esjl;Z7l z@qxFvxmK>GG}xWSOHvc;uz^4G{ED$`n**9L%N9QVM6>MhOq%VWetM7u`@?a7`c_aZ zuA}E9xHB+`;eGeIHHhyeN9D**RLNkDi8MMDjLuTcb^)~uvs&etDWfgka6ACaBV7VB zb_X|=do%jd3|uxKS-6EBlNTq8$;`g0^Nb96b_%kok~0(p`i2V%XR&*RVQe)gS$ou| z{cc;;RYlxY<>}YI|71+Yis*)gVNJ|ZQ@;-WO4s8-2Yg(vzq@kCI=Lw!a-gU~*&>T{ z{T|wyNyhPZs;&ytX|j1!&5aQ$R<|_6HKpX;_wy*3`Mk_Vc`kPYGZ+k9Q!7c z`}SldPd{f8KaZcYady^}1{a)8u~0p;DR0akGLd2}d8%8>NzJ0asLFo&+2P@4OiuQq zaTNj*LM!sD>_jj=4^HJ3<3n)T3AcUqgGR{trHuR%=a)0`%TJGD9{o%d8yiX|%*1r3 zl$}-flQeQoM=Vf#%O5Biq~Mz(9GLX#8H!vr4;hVKeH7u)WU1@|>#0X9N0G%7*=3Uj zm>(ZNTpoN#+WwQ^LyqF{_;`2aLx*Lr@Wd29&-fUs8T1Vzs9X!K{Oez@^N7G80qDwJ zDZrPV*g|p^d>L}GKK!N6ljEtmNoof{rTbMDQnIIZwknFAH=@E|n9?oVs>h+Ldi0~m zhI1xzJlf>Dth4(peWL_{d5aHMUM@Kgnqa$iDw{j4n`LaWZdTckHwWn1ROQEu+&BHC zCAZFuT+i+apfPXq;nT}y=OQ~T@40Q5qFx$L4ls-0i7Ctw)EwQ5G)}_a{Ov3!h{(td*_#EV4ofrlkfeW7qYdfvW7>v^JRJ;qY_60GMV z2kSA`$w!RUqk5SmRF47CLXmnjJ9uoM9$jRi49hVL-k^eY$j}*Pv=PN_Z59HyxZao+>?x?1sQ0MEW@${wQprj*MdXVG zk`Ogg(PKo~r;3+?^E)G2inKdThltdueAKskxra8{X5*uI44qArdS$`!HkF+oSPN$B#>`AeUVQ%Z_fB9DbODt{={tR z>7$=`TK7-H{IO4F1U`A}OwB(V_N-0~hobYd1EQo1To(@-^7xn`U;IIQ`j6@Vp*y}? z{}_FMmxqmNH7ouHez*NUl)_T&e}d}A0LK0Nm-~Nk=f9Ukt&TW(+?3ZkPu0hC{~x7l zwNgv@|M(LB<)bO>FFgBk;++t<&a$&rRw@~M!lHu}+y9B^0Qzb7hn;t=%R!#SjC*ms0Jo1n zogbCalUB3!{mI$h`CHQO(?i(X0bCV;0D?e$zv3OWY00>w9F<^u2{|W;;5|A%rKG;V z-`N5VOLt@wm}ayw!x!mJM%NGVIm+lJ_n!V{AL3DTMzhKntm6t+7WMYVb&Ztg@LYFI zIz$vdzt+U{wV2N}>0}PFWSVk;C=yei-l2eUa`{{=8t@0drhNTkoFI{4IQx}J(zh=L z9umKS4#andG9U+L*Uo_y$Uz^@&)q479GC+;2T~wMp;Bk7qyj&3)|M`zOm^ABZFLwss~5@dp}BP}Q>oy03m7d<~v| zMLhx5z2D{PH>n9lXTg`jGF1EK8|XFo>UppVj$DpU_L^_vKCH) z^Vmuv{$hjhW%Y&PaK*O*`M~B5-qd$exuMS8P3M+$ZX=yr*13D>+=|X^rgN)0cR!t5 z)44Cxxf?q7Rcd-C<7kky=yJJ5?kJb(meYmx$WRD zw_*tubn9X+m|n%V-xtKwCZefaT6U(h_ZE7{Mp-77Zb#i{5@#ccc5y-#I4t0|vWy<| zXMoPe92p^4QPP5eO~Dg{2-niJ+WmLr<{f--pm76U3xi_>*bq>GgEzNOR@D!7IV4t7^b>tz!gQRa^y|jR(Wqt7{>W z;$RUe1-b?9#}R0{@MaUknUm)jfJHU)t&0x=E_V~(bVeT-W@`DFhNpmV6cjW_PX;EQ zJy%(nqeu;DZO+DBz@WOEP>1vifzeh0ajw823Gdl6NWw`Kz&TCJEX2sFFZ*{Uj`0xh z2T|aMn*<>dfljd+mR8Y?%5tr;N-GR;&7>7*bOh_pH1i(GB?Xs;+B!ao>C6Rucz0VU6Y*h-pTb)i=Pi5kpHz9deVx|#_709;wswEKXr@+s@U3TM?;czLbEGupjyUxK zdjiU=r6InHkrWG4ScUk$1pxmZ#Qh|GvNpqomtVS9e=nPPwZ72f(djKQU_mHX;vCMd zpl{*?rDAcm#)T#%vLOdFN+wtjRvs=vahevgLhl9xW#12RpHA{?>>7#5z{hSqTb5`S zD29n>&Pt-f;2Pw2Yi+)G5gflVO7umEWxL3?-}(vTnMF>zkRUg`wb~+#J=t>5g5s~| zDjLGtz@2M>DSwcxb<>?DW2GdFlvv&!wuluNXIgz+#b6kcb7-*+c?9}6LZ?$SMm$97 zui8<*!HEDKIHwkW-%(6POAUnyu&7u>h_Z2$at*z1`jbiI+aDdZ-|rI`++04ftWQW(-l>nb_T9(%KzCl z+v7NTw_^gle{d!c^l{06N^I z6T|IwyL5vJL7_k;3I??#MvkH`-sz(_`4l5=9`Akf;mUpH{(9Kg`wQRERzsaIDuyzB`A4nOqYPr1tcVY2>5mF?D?C>%z{pGRvROO12A+K*DbWhS^3YD#4 zIyMQ?T5Dk643&i0E) zMqNX!v-lUamBqz$t_{unoY!o@7~1p|7NH9hIDR@qiY_M@xG%Y;mE}Q*Lo)?b!{%}+ z+@xtMQ=eh1OB6*Ai>gl{Tm=93d2k?v`PN?jqK*yu&nZYwruxo9U-OZck7ln^)0Ai3 z!~ql`zc65rM(0q7xyfu`NGKJ|i<0%`K804Mkcu(UHvY0FehR{DEzc~J5ifT{EQPcT zfal!+ra)<(L481KSrT#)B66#V%gi@T~D!yAyVHGB-UYv6$PgL6DODn|;pM1U?-Rr!c8UMk8RU$Uvc& z8vWbf6t0;)AClhYp=mxAY2uypY^3Npb+A#}g*xHPeR#5#(6xDdvJOc&KYUbL!%a}>?qVy7soGwlp@?cY94);q^3>S@hSa39Iqbx`%`&CKf`J97$F zhD8JNVCdb)f42jpBf);*vD*BzExo1(&z~dyULLk~U+-sh#MTRpFMeF9o@`$AO}Fdw zg8-(}+&v@W_~h)Uekkt~!8k*!LveFwb*DZ!PHF7bQN7_bWr`5~_I&#sU!6k_=HP9O&car!bT@sSowbJ%7))a1)1@{W3a-NN^?c;m{?u`Po47R*CRO6d#$sVgv}6*oJN zQJyJ6ImUkwjjz6l@u?5WJeQG}E*5PW8$Afm3s!v}@Hs?G(Rt+MRbG>%iMAXAa)WOm zm%RczLzR~XKwmlSnPjjencg>~>zB{g)$?_$13&T>Q4!5&lV?oqqb9;LdOZJ)<9Jz~ zT~r0pD)1x#`;WHr&HlLd-!dTR(^-Gdu>UTVOSN*!{=2wQ`C|Y5DL(59#D9F6;E!pW zWe7;@7%h7YnKMn6fr<1+*YP-QmOR61nX@C&Y&sL2EDhJAIPs=mMg3vV$->3+%T4Q+ z8&l8ocMmR>2jhG$ms<{BAHtn4{LHKT^JYVC+hFfX*QL2IR0Z%hwSIW;^7yEEe9=0p zpMRGtzAvl%#>H9d=wuJ0jknHU9qeD^Dt2YKT|Unlsd(Ki027Iu8j!y?sU(QxA}1_u zT0rg}))jcU4J)hu`r;KtJe1j0EBDp+t%JrJ5G-;6@RFN%AqLdiJ2`HO%+N-QNTl(K zEWt1ATxiqCY^EWSx#j&OyXGnUJ#REcpQ%pIFV33vBhD?pw+D);a+E<(w!u|7A}dUT z!*&RP$gNqq4V*sJYG|XVVIWrIZrPa!r>~l4x~`t%A1=;`ETH<{!JC8glQU7kX)AaWTdkQI#9Tu~Ojkz|i8+xrkZpFs7 zUDbw4h{l-}&yOlCz}xx79%MSmkhw2+A=9NBoMIcQ(5e5X-a0*N?l&(Qa@@I+O<&F9 z`tD)VDw*ntryTo3INFzKK)4X*S8T-A4=}u`2Gb^q^XA`;yqbSiQN#Q6Y1kA2=P4vS zE*J<1Hj6e4r{ci1@0M~4K||+z=U4)>J-J6Rw^&KdGVnv@mf?PS97eXuAoiN)rmn)| zkafWu&74qU2NsH8m|)J+IC*`1A(o1f`?7J=+CMn1AF50USBjtPG60}KpODYINt1A{ zT(TPwLZ=+N3jj}^s#@8wvdw|n1N9W+CYJ4jXk4bT1*=fNu}n%T&>7{HOTkKDBm~cZ zI&>Wgy17{$o*cg<;NgNqanYbuL7#;12<;|%AMEbYQCwd8CqY;{TCIkqU649-2S2n9 zj!$1-P-D;+(s9$62`JM5gw^*5m|C^8VK9+b^^o@C*7-j~X63b+B|0=R1xdWtqy>Y3 ziyq0$OIFUskEePAsktaoIaRBYDKl6?!=7XT7q3KR5-@P5G>fp@fkmh|?T5}D@I&kG zAQK2)zb`uBsGbez8k7e3MdY0a7y%Y8cPXh1X&4k%CDmoAl1dU>m6FN@9Wt~o8?RFt zf%2ScU8O-7UD-Y*9_>|gs(oFqRFOUCLVI`F%M-*0lS!!Hi&7Um+)x(1&|3hP!SnO7f zr?Z&OKRw$AmgviGh`N*>TInxUx-ox8vG3JhmA zO|x$0Z#em4>aF~alMl0K<|8$_1!i@^q+kQ8S8D@za^eNJr#BnBIg=Y;qM!*$+(zQQ zELqZtCn~XQl)O0O#EOyFIO4>rPJF2nYdTQ~Zk)Jbfz)c8qZ*GQDJ`Bhw4g?I0Ho((M2%ZI#8ZjI5H(GMT6V{P+ZS&RkCMPS`VW zT7?ANczsyEXyz0Pl>!2Vh|e+9W_!44?!i%YZ|_WOALk&hs>bbHl4WJs z9%+A6Q)Wow&Etle79)AD*-#U2BsWe@(^Cb#w!11Y_U>K_q=8U1%LygbASaZ)Ep=KL zSd|te9kUwep|SL2TFF>>GRiON^r|8S#?gW&&de6#tD; z<`Ybfq>#8BRR0|o%?xxw8HWE3YbsTRcUA>(I=25!R9L$tcy`%8mjyl7N=V zy6fIui|qMZ{cR!o{<|Ee#~z7#t=?T9?K+IHPi^ixv$+m6cg@Yw7^B5nU?uU)Sr~iA0_igX#ObbK};eY zNE?t}wa_(+q}Nh8aYhE>vf@w$WZ@ncd+4 z&sQJ86XQ4^*Tfxbd+5*8J>;)}@iFd;SS*o*BPL!YNW!d1SYnj(72o#4^th zC-UqwwR`$Zx=AaEB%Wn=b~Q!s?9HVszTB@7985@Dvc%iMj@m7Z%&Kq9N%uyVvDj=; z!!sBTIx)=EGMZU!+lZD;UEjVFh-;BWnq<(u))leTFkL}pMkBE?Cc6Ci`V#vnspw+eD-RbU|n$hbqzT#j!P3Iy8+A|+Omy*J}ui$vSq zG7%AQi2w~{`?1S#Fj3IBM6~f!tfJptHxHwz^Dgcd#I}VlU6w2PeBSOcc_(%b)av}^ zHm;C+HI4=?bck0pxvsi&61c6Uwl{1^)-)Oe8daUDeY4_gwN&-Dnrgyihk~#l*?g*r z)HI2&adgwdrEAQT%iu9FwU1~ThshSqOj9`_h#DV_hm&Dv*w>3wt<5ABsor^z?8#cG z)Sm23GEE)3N%87_j3NPX*KkyR5J3%wbKoVDg3X_$2lcNu4FbSmO2ljce|KVkokWw{ zL=W5AYn?Ykx)x7@IZc2~dU<-wjW0pc| zBj`-VEff`TBG;3fO6&b3!EK>r;2u`;XdGY0lMbBYHtdG)$I%G4#?t1$%SNYU*W1ES zW!@!$2<4NsW_xgm(hS3Q5F`ptp9Jk)#X64aWPq3|cu%AR81g7*bx?m9ts--u)oh1E zcA_AYF7=T{CL0GQFI8H*uld8FO|=urFOo9nI60*bPM&jF5_>dR53s#(RZ9pvb3Qhjqu*t?$fi@H=(tIk_<@78E#NT;OZ_CS9j{Fq7bNyDESqx0F3XYYR&vrvhJVCn-wFo8kX!|ps06Ksx{M> zoCF)qedhvNUU0~E<(-E08^_?e#c~T7@EI2rzN;m-m@_)(<{|6$Nfvi6oy>H&Y)aiS z`EUjT4!u9P?e~ErWTVb^GgJtCS3*Xrc^8y@3uIR?Zf5KZcMW-1K-dH54X( zz^GbDfDiVfsalxnL(|)@+*Ka%ltGkBxw~}ReTZTDJnaI!t-JEa0{Jmbd)sDq_vC2i zcAp&02E0#=W&`9WM>Cq8J~@)H)h9=>g7v8ptiXLL^ge<|IPaXuns*eei2w8h0hOBP zn=g3B3FiLGWdBc(1b!KaTD$f0rty%% z%jghXgpyx}PALpXbj$zlL(fA9IcQ$tz#US=5B0!F;sT z>Dp4Ic-_nb#V+OsIO*QrjBtk)ve2@U@T8|W z6&%}j#6Wv2Iuz-UClSB5k*=GG=*FxFvzC-|3xFi}OM+2Rq_a?RV;ErsY`O#qhMmss zI9bDJ3jmmQ0x%hOZblS6`)dO5>pZ#J=%hTNm;=ZYj0zCEul~y|v=0BUa0Fk`%vAg< zU6pK8)CX{z*g>BkQl1g`lfUIxZbtr8Q5rjz^OL*@h;pq3eagrZ_CR@RqxL#VT7&rgWCm`#4sN>|xAaxEBY#tX&hAIR zY}dtX*THPp!EAQ{%);7`c#Tqc)hoxv>e2a2as$qQ1`%N)xk7uAIPaT+PMW+sJO^^H zk%M>o-9ca@o2WU93KdFIbJf#6*%98M(6aKNOSD`~)jtP^}W4*DPH;*^5djXMF{vZA$)@(Uv?1>a;m z$aS2?kdq|aIm`ZG{en`b!dYTC4Xe``5sbJ68NNt*Hs#2WFk1ct zHE<{UyPg@qM4vmnPlL}4SjEcOMj=D5IR`s3h}Mf2*iqUON|w_=nUr!1trkctx#~aN zBKb&^EuGE?SX&UrG(9Ke96gts7`rj6l%6Sgs)ii(;)FH`lz~4E`Og?iZ(zeXc#461 z#5MBA%*^MpkU+T&5Oe>iT=nTDcz-w2-O~0-P+imJy z>`vNaV!Fxl+)b9PCVw-8LW*z+zOqT8f$^h5Z3^TDe?@CbC=BRh12olrq;(zOAUk>t zuIWV+iy~Prmp$$#nZACwI0vGqisbOs=Y2>=q6wCzXJw>RFv=3;0R12;ZD&pZ$x*2- z!>Yekno=L1X-}Ss6{+`-uY1leH8x^ufD*iL~CTL{yb1FKX&YV{c_es zH@uSn_FLB*)D($9pn7V@B7aADFio!-Tp!=)r7;c2Wn43Pjje?M-J1dE9sxQNLtHMS zm-4J`%6l$C9G?9VF*3)>Av#7q9UuM?c3wM*0_Rvj9m-zwme-Xa^e81Y?pZ-AW>PN+rROeU*N=IDgozU^6r=+@g19Q;Hh@3}sN$ zzZ5ww6To>zO@^<$oeU0%l6;CqcDv(Q^E;hA8lYN_R+#o{mHhIppsbOQvL^W(71zM6 zCf^ifSHmy__NrBH)TVTH=T?&T_1SgsC53~yQ8Z3s19K@;i(f{COhoCu#*b<=jkrms zsre`I%}6^9=SK=kXELD|-jF7SW#U#oWndkVavsUD3)cARdCKc#@UMTF&FBXZ`3&I> z@grBk?q2CD1n_zB{a@Y}f*5MzcY7^BkwQj4v^oect1mbp3CdRo$F1gR{j6@woBp!e ztuydFfhHS0^yW%er2>pi$42ItQA-MWV8Vebu73XGvGOS{8<85@z>o&*(P&@mDWxC+ zXX*s)n!SNkbOkFW-Da&qyEdpJ=BjSI@X1Na6E!tW0@xzW#80m)W?G<5DTBU}H96$+ z%-QtOmFOryLl#l-t3dRDEEPM#Z);MSoXY~m3eId&412~(J`6h7FA-*{*!p4maa4}F9&bMM+A$v-RguSGqZ_CJ z#>m`Q`+h|B`UHcVa_T+V-&OOJHBECAxi~X!Fp4|V`xMd|>{r>jt(Uum9}m?!M9aKt z1|lcJVUR$CfHX3*vFSx8@FZiLHhNLAf9{-J)KF8oA~S24-vrB!3s-bY>Wp^AQo-Jb zW6%wK;&IpI$mmRFGb-kvSY71jjV^HsWv)y61s2310+y?+Zm(M)(~uutqJ=ZjOdS485*@Nps3yZgBGy$&k7Xov1Jpy0jfmK~@A1ukQ&;RkR?cNo@~G z_V~((d;*QlXaa_jX^M-7hAh;qATszXYj88=;6ORw$wpd^5KBO|@UUQ|a5%CDV>V-R zKtY45Lg1P}^mbR88M{V7=>XwDv1y|rM1y`WnSc-`(5K^wsODxsi6JoO1`_2GeI>y} zLGc$APQ?IL=!j*ANLKdr@sUbCmo-WtFfAGCb~8B;jP&{*2aAE3Q=^?l(i)f3n2=Q6 zSk95)r0sgsW?Z`Rxn1;J7F{8VFlcy%k!TTdmb8#sdSKTu@9Oiezw)1Q0ha#^3vf1& z3obw+GG&Xx6qYtd`P|oP`RUgx_<@-27iYR-oE%3w_aWGI(a)3j$ffLP+@@VZ&Ax^} zpBU0syAXg%)jTSI2Sp0UwY#USh1B8Rba*G=m+n({%!=fG1FPY;=Wc8esd6;qSfGkj z6!p2fmE{fnWSWUe~MN?W+YoYW=mckSQog z`Vm}W88vm_V=>i`QcWRMR`cCq5pnzyo7FSe6I2h{T@YAZu4Ku=o}N(E|A4OCFnF`& z?k9F(;A~{{5>6&$ynxHlvMM##jcGS+ElBa7(!rwnnSCQTN0dhEOnI|FtVS6Q6F2g7 zG)x1^Jio$APcvU$Ia8b>#<{{mQU{)60?H@fND~$QhVeeXk=k%JfKspWW**?U8&o^C zdR?m%R`rRt*I3K1o%G6ElX59<9ZjwBq)p_@71^XH;k_;~F}P$R0W4d9j2SeXrVwrl zflLf^2j2!oeNcyluQ+t%?(6d(^X4AQRDv2%pgvOKEdQmO{|c}B0A05EQO1O+P1ri> zBB0hp_$`a*c=(w0{RjsPPq@CN()0-yxjpYVyt(E*gYRQQZlNvb^Cyd(1%^wI1(w1+`p zJ35q$lqRf5SUb8FdpE>N)9pOC-W;YLK3Kr&CKHy04L~fo=P-1b4*T8=*!QNvJ_V0v zy?J3N&jO}A6`I8@M;?jF&&zD2JcrrH%(eMBTaAz{Y^st-p4JoDo2GiYz{_C>J1VFK zt{g>*dV+yvA!=7?6CPrWhyDH#H%)blHN8>>O4M2Q#VHhY#3%oBl*4Hz=kpoKq${;v zdeOx7($N3Q2H%P-sE(ahFv6*Z^8QI`OrIq6P{T(OA}fR07y(7(Vs#=p&g``G@J>q) z?zH^yPRsLj`o~yK*&JK3Q^`%{w2mszVI4J{jUg}#TSYBy4<)^&E@~3>0AnZ*w_i}D zm16U()LKB9r8IX+iB*2Q5{oEzemxeIPiYdRh2A4HSY?OYc)PvY_NlWMrie-0H_Ia9|~{scNMypQ_>)m+*)cQ9SO zr4(Bp*6!1BmA~k?=C>Vjv@7L#je^U6m{stj?SU7z1TJS-0v7@uaAUe@u75F zJ8s8Ew;3jUdd-FZ2y5Z;vL$^iVk-P#BjGRR!T+`9!B6XI`_pUn=Mro_jauKQ&tFWF zU;gYg`3oxY*-ugWou=u)DEpMH50RGD=nKQZMujJsZVyiVJxVdk(Mb;N7~40u;KGYe zq!2to#?~e?VjxTy~kB^$i7vvFWx~Vs>0>jnQR0D7OX@0hacP2)Zrq_Xe9f4Fd ziZ2{F`iAjb)@U}GSBEuoevIfaGiGNFHwTPQa)o9oH0RP|nvR;3JZf`Mj8X{PhNM4M z>^MfEnQV0tC(_W=A`jx!LR1{euO)~;wj$&}xYOizG#ZX4362c;=v;=CQ}(oZ0Rh9s z$AB@Rnq=0sRC?pI#Mi^h|yxJXG?SXsR2?8VyV5ovSDzY%$AxN`a*0;Tq(=&+UZlcfL!1#ZS z$3uL%9$-XU@L`PUNLdsJS&&cP(%7v9`yRqF5W{#WP-NlWAnMBk0DBe5T6`yLIitYP?Y#sP zwj8ASNt`jv^_b)FflwcL?c*?whrZ*`k16F3*ZOQO0~g6c7cg+KNx-znD(L0ElM+TJ z`Lu>*!RKI^_H=90--dciuoi#A~D;KhqJlKLpGOZN`WGoF_|&a&s@ znDqb>9j^ht7q7;Xw1^CR`tv?vThPpO&DO%qFf+9bt(=>?n+#*Ct05=|=pxbIf}s+X zD#f{4TIeZY*3-U^YtzJ>VYW?^JvN66FLB29Y?98ty>%{b6$0f_5y}p?I>bdKYd+r<6 z;3;oZJufSs{0jJ^06gzSS^8<`eD`9;y8@s0yvJFG{K+jtQa0~X%tG?=nHY#wu$+wN z4xfv`h&!IC<{MMT^I$8Ij{riZX$exOuh$uNB^Zy;wqCH@2F+z)!rNM!YrBV4SMbdw zzWFUbZ~&=SuhiYrn zi;_RiLqU>lYd}?qX=TRTP7pZ z4L%mOUwH&;dI;##*%@X&xn;{I8sY;6_(^PDEbt#=`eHJfyD~NCeUqncU2-!_4^vNn z7k}{US1iu4K?8mkeHScW+#2=HFV33vqZt(!(p_?m`Q8-IR?+`qk24n2(m&mU(~qN% zFF(0Hp5Cr{R~6Nknj6p$ISxKNYWL6fF)M|a-s;?iVxGq1H;=25iG}p6V z?WQQ>30|^)(TC5_hx_b6AM)sThEn^nMxdYUk*_lR{Ifsu^_z(PVaB0P`LOqkP3Y%r z6Y9HN`z*w^|Drdw1}pz`mugS`s5XkDZc93EOh>%MY^C+#hyiA_TkDpsqc3-+#-n{) zG}_0-qWuJsXdT-XmDPt?P{v+PNCYaLAAm2X+dWF#5aqf{l3_<_Z?c0GJBxG*+%Nrb zzg!e{K)-2L>4|p+zvK$Og@V%lAZj)*H z^3l;a_cma7SM5x5uiE*;B2y>0tpdNM816x$Z4FIp&^vE$RK;#xmhwS!fAn%-*Q=c*7w1!F$tr5YUZ z`;l0)W$>5{7ioW`Q+}tfaCi4p@vRV{_3T2Ygh2@9(>L2X`YSXd+A9BB{HYc&aUaW4 zdX1Zh+o@$&Fj=)}D=#D!E5Yvg29}LUKa#1r3?q0!=VM)0pf2RvCS~GC*%kSB@CEnQHGj2{?@o9P$QNpe=k89};*=H^2%qL3Kn%nEOb&g4{hqwJM(l_!# zx@~rMA>$^_@6sX*O6bpX{-1gDFHCy|sqFQ<(hZq_=o=a5!6BT!(qVy}nB5o^*o_OU zgdzPZk}h276)e0L9gfkw3F7Qw%ltHLwvc2!m-C+sryU#B9y0?s^afZ6e(qaKEexu6 zav6i~bZ*wK1dDF#*V!%>JW)z#jXUFQ<+GHGIL~uS6!wf~f-_%SF8QAddb(fmHD-na zz&7zs4Neqk)y0fuj7-cx5Q%>m9oD?Vm~H?g=3XfivR5xDQ5oZ7c>vZXE8R5dNh=lB}DCBwEn2f13DHjjmn*Eo57d;u=2aQ9JdiZZ{k zH&5&$tnKCtLdxp*`Kuh2oAbLA(ZSe6?lmp4^+LOox)4m*HVM`do2Hloy(+EbdH@%y zi7kNNie5;Wu%ZLN(?%P>lY1U%;yW*J^MZ*O%?etya8yX6NP#Q5-v>caBTI>l@GwF^ zf{@XE2i9UUfna=S+k0u_9Ca9w*N2BKCQ}K+YeAvVrx0&J5+06wR{|7(0Qh`2?u)sCs;Ys>_)KD+7p3n;-84K7gX_iJnS#p3~tUNeCePTt)q1FKOMy zoykxjY}Vy>qOTUCR_7bJtXV1{I`llXX4|*40{%_!H$Um{)1E|fqd$}iz!)Gu5 z);%@@33rFBWOzA2acG7tCd6YwE8}VNxrv9P=_OuG&;D+D_WAVetLfP3TbZ)^BXu6!~+yov~@?pHEAdyQVPK zV?ZLMR*D6OJn-B_C+Fw*vh~Gtr$q37+=T6bmYJkzYMOx(f*pawc)$)|>IJ3s2AyR~ zv^5%i@d5%Y()|*KS$%b|PtgzO#gl6JJFG_WGNj^6frW})XT>0(YN0?)S}WhtNPc5W%;F``-0n2_R+yZ+Cb8)&v}M{Drl)Z(@CIU@NHALC7t6WIZ&M=R9BwrUayGSiB0!x@A`9| znvB;BK=e1G1x`<{cdeTR4OzQG#0F>rpEDmprS zeQ|L7(rcW+ue%;D@=i0CQc6_Q{?EKbxBO0IoAcy6htnG)teHZfu;lYnCCd$sXqkt%`HAKqyz+a_*tMO^@bk z-PWiJR>h&_w6LDZ`qOt?nhCxzm>|;O!CvOwDO_aI)f~V;^@aR>KNd&%IYbA&ex?ER zRf;QT-e$T1PXd;D6?F5-GnsC_e> zZ{VP~V}$;ifvBhOg88wZ{UX`_2?P6blue#ZzOnRfCDxl=`%T!iO+{*B;FeWh8V@fG zy$f5~?Cu$FEJ9MH1Sb;=t1U|;sLw$oJ5d}iXQ8}Q2v8M6gN%jK-HyibU2k}sh&Hsw z#vYJg_$Qm{CF`+T@9rnGRe7U~ipaV%gvF)^d{)bB&jd{yiaoOz`^lU%CCSq8r7rpD z{hxcrnm3@&OmgrQ@IK%!z$NknLiu#=&_p7;^g-hddwvv133ujv{_RHPQQokyLsbzP z7pr{w6LI7K*^z;8@gaJ>h_CrWqWk<7lf0omKdPuV)b#vI+Ckgg|MSxfBc(tJ}r=Qr!6oWN$hBsAZ1`(T0B{+X~m?JI9~{ZvN8s+XF8Kbt z{E+wG2J2nu!MB%l&Hwa!N_FEgwS^G(A+_ygTYK;G+)a2GoxA@0>uuIc@a$o{TyPkl zDuet=fSIk^Mlskk6QK9127jXw|492c;)CgUtk64G_zW1IBLy^WS$nX zp3DIE!Av<7=OSf#n-SaMBbeMiHj>4I3~wFr*fqfQpXIXzWh#1o`wol&lK7V_t6VjR z=HI8rJzK=WcG^Hhm8k>KHnN$6NSofy7{qV0&i0?ml-7_QW(F2Y8Jgb5$4*G!)!cjM#?4fr-*I-XEo}yi~<%9+wzgk{pL0Fdm0nJCpGRX!_4dZ zg0E*-`aLWtjHvye85w2)YrvfJGS1*WU^INv5Uf^1C8U+%~L7Y!#mj&{o@Sma$v5wFw0mlPa<-cM(rKwsv1%Ynt%H-M zlGO(7>x#oOV1MUEfAMH2&dTwCEa0F|+|zNwtWL3D3vUdTQ$0GS$ob&^;NB#}9SMr6 zzHI|dTU&1j5ru>(X&I+LBrSi#WeY@>dZUF3C}(3-MRE+3bH|?i0w8M|7$A`;FH(>y z3S*^0Apf=L!@n4j`ot1meZllf3(E@VC}7%VTKOl@%0C6I^u#}!I%aJw=6L>zbBP#` zXu2H7F<=RiL1TlYWn2I=c6`yqgV5cMk22l$F&p4P1IEVh^znXcaA(`6DAMEJ$o`rqDVH@?Ju z?4o{gAWlzbZ3_441fyy)ho#T8b#UtljW}ugao>cR<#K{yA$Uus1pzYCCu}ea@-DRj?d2OKjH(r zW!8pjg3Eg*MM9t_gJchjQd<&$-*C14Y0DgurL_j+S#0-A6>bH?nDwNicAETHV@`MDjCjt~I*xCK zcXKb-ZtPvHP9sy6t7oO&4rZ*?r&_84Z}z0=o--HeldYGjooB3+CnDOZU3M<2$$tLsTnDwc|?;!ha7x{dDRUT_h2t_Q>Z@TwOlqTE{H zaME21>f$Vc6~J^NiN|+rIw5%CpwqtrMq;NWldd3H zH*GAAFHYKrWc}tQ8bGQ}{@Nn%>#vO*u{Lify*?zW2vvVSYVGYd4-Z?7Bf-4?p34>e zS&hG&(X~{T5fiK8sVT3MOQJw17D7h1@SHyv)~4h_6JaS`;PmWZO7&NV`) zsA+X0#^&-~ASowR9q%EG7JnB%ek#7r=a-f^Ue`_ZK1i-&(xwaoxCu$F&|Rf$7EO`P zUp68B7U-GJUmgafYBjrsV0W(|<`M$|!1Luczi<}Kj_^%2C{5BG9Lf%M_eA?OY#-`? zCOu9P%z~AG|Jlsz@@T_>0fSq$$}#|v z50=G8EBra}#fzYp51s`fzHh7L;WTV%(NMYa8*5@gQ*j4g&_I%cAKf;ZY;eNz%5~J~ zh{XJ|)5P|K!zSC6GvHlrQO@_ZwE%2H7iI1l%2bWzCeg4i5S^d2E+@ zH&s;t(v3%xYpv|I5(K@-%_H495UyxhO={4-y#z%lsZmGKRV*ML_jeT1q$_j$F;e)T zA4Tg|NZkoChDZKvP#0X^BUNAHwJ@xNT4lEY3&(aQE{NKOvk!3ck{f{9&|Dj!oX}%{ z>{jsAmJ_i!DQ2`6}m#?D)v6Gi89pAl9 zYewXyL6};RLKW${oN1s|%qF1rr|Me=K7@i_Y6)Uitw>zqWLcL5SN z4-a3YYho9_CPS^_f-%WOO27O3Thth%DblDn0GG>xY{>I6jay$l5Ibt!g$pnwx|&Y2 zq#p4kI91Xx5nIoLUshj;F5ri;s0WlmDpp#@-QjTDj{AMG2B7cS1{NFfz41lDD z#;6c+Qli?gH| z3tWUZd{N2~<*@+MfXLM=Ph|XF2&Q*Yny(LmK~#T9?d>q z@gim7j)`^5yrAbMN4N1=FQTrzxu z<=-r6vU|kh7aDwm2wtlcFl!?Qo>sgDvB+p}BR8B{z9Rh7HE3V6KsmZc-T`T+B=q&D zV-rmwBoOaTl-I;L9cGDs5-_xoqi-1a1QR9vjJM7oA+jebXb45#UbNuT&y=7jan%Gc zKorky@7r$$|2vu`Vh7bnKf2xw82gWjE;~R*h;b-ZI0~W=KhhlVnmg8P4&j-))z&qj zCD`xz9@13JrKB$($3rw-0^AR5 zD04-V-onO8iv9HH`zZW`6g(U8KVxYOH4YS~(^=-{LfCEcjBj~$hpQVK3hCMWc>#$) zxPocyoYxZD>k)hgq{eV#lRh4c=%k!p*5Hj<$nh<59Ti6fi=FUTP-fHbHRx*UhlS8n z)NNWGCm@EJ?qJs{o{<)2ylGbR%eoOSU)j`-!H>a2qB&D8*fzn3r+k!lGI zyxI%rsxc!N^m}y54=7Dts@LcL%+yPxP=jC;uZ|;|z{esIGeA978K5#YvO|WIrZ~x5 zHM1DfKp+_)9OmR+YI{er)ssF+bX$*Emzf>s{$;2}>jh!(RRf-Cl$3!77s;M6=K+`! z0!|ktXtW1bV9tr>(BYi2`ZHJ{Dx8ovUTNQ``62h-7weeq?-YedCN(9bRLTssae3=D z_zhs*CH+XBLk<9RT#LQqS%NTyeQ?(*N)}^jkr?%4vU=Kla=x|J9*tH+dUVix3M**M z28+_vQyitwIi!&v0$E|5Y?Vm#$B)KO3o4M)U8}$v>8}v=7HUMJoj^Hz7Ozm|&Q`SH zNQ?~K;kKK7z`rqnZPJwiZ-Re%5NUQCRjhw0Vma>fc!&z-e501CFbO}Fd&`u*{m;U za)pX5ITK@ zwxj&uLbkIrRJ+zg22SiSkBgMCy5IDvoB)Oa250+`%ZS7%6PTBy54;@!&BE#eom?C| zdRg_+;0kvD9W7b zjr76M?;$|c(waHD*6+m8U~%8)&YA~rJ#t~yAAl9ts{+YOKOH*LiqrnEzi<>TJ+1Ra zv`R4^Lqd;-DR2t|_TEP!;~Y$-WeM>DSnpK#iO`tScC4=^&KZvw$r#4$qTD;vv(4-( zVV49;{_*|3FD5CE^M(;g_G0RZQ>t#m+vA43RUXNh){*CO&@H7bhDJ2G{!|>MTnQ{N zF;k6bMsQ#{UdT^z%peScWonL1`)i`m79K~6+e-gp^aVIpw>}>0YcTc(2V@TzAx37> zBP09<6d@&=4p|-!y}A}8UtC`a$uBR(?ngJmG z-8uH3ZaHaiE#xh~-^e27Z)t?-S&ivc3d5R*>v$v%wG65d+sJeMF_(OVin9$tvjeo= zU2Xp{(S1P|sRqPO1r4b0*zfkKwNfEJZC2^9V3fNG>>hSDN7sdLX1OA0A6v=}(Aic_ z&yCXhfF2K$JJKja(xAsJjX1WDkJEr_$!%WrRcR;o0sUSAuIoz02Lawn*?yTRKR&qwA+{W7yifbJ%~iQ>0BT$tMbRN!&L7AGbg#VM zk&t4ka=xN&Ojlx8XlP0Hbc?ym z)D{=E!R3`jP{K_;`D4U!`d0xkXs>Zv8;~zObO!=DNH(rKisi;hC@o(}+9!ERrsDt+XI&|h_Ze_ETGl^fzu8HqN0_y> zYMBG+Hu166P>)kBuc+6iQ6@)PB#lJ3o!R#w;5IIp*DyG*WA61%Q*nY5sXA8D{81cv z1T4|O+%3{FdcOviSKEG?cfuVc<4Z&gA{T}i*{ru14esfOJbO@`D}?#g_J}le{yGF# z5o|_{8I+xri6IUv_x5Y8KP)jtv<;^eZ)Klqnu-VrCak?3gr|~#R4BcpJ1X!(pJ0jt zBIPfghT0GhwQ_@TAuZ}FwZul)W1%KUJD;qOVv;@^xYbVH0Vo@H8WOjG9x`IUia$^? z@iq1a`}=@4G^@RbTR*XQs+8ol zuFB4)9`r+wy%Ufr=J$UZ>WUo%d^;R{kn&lVx~P3ZjI@>YpN@=}9h0nvJmdnDhN#c} zW^P4Rv`{waO&zI7Q@T^n%5VDufpe@goI)h^F|G@A#r%=Q%N3<|U(+>)lXau*+rG?S8{eBs=rija144cMdp`)AKvh|9apum=?K z-g))8RrF4`ZB~Ie-gr$@3Nr-@9bK7TEfH$%5IQj)khYm@=H=8dlDf6C9~6{ad7waC zP~py!1vFGJ-~o{NDq`JA<<37;U{IwEKxZ(dSdbh8JG=eu3tI^ZIn)P9oMz;NZ%Qk? zQ9b=OBI&eiP>U^`f>%bP*Tl>^HhUV~pHS%;oHjnBWnZ zpP5~)&5=r73;f+mZWg_JdW^+tRu!$u(!l~W8e`FUgfoifQkrh6ngDUZ2Bh^0y1{;i5z4$F4n4qg^GTyATWv&vJ zRre=bZ{G{G4K3*SIE>|Oli|4O&YU*|)P94#U<^E1q$YbnEJVCr8MmeysQFrx!%@AF z>X}Wt!02TVSCYkKRThZIKH-9LmDZyeY(u1RroSq19oGz zO_V1olTgg7p@_%ou2;oSeK%8Y-9vybc*ceZ;CWiPf)c_NyMZy$QwrQUc|$T1OOBba z%$fO^Kf~_Wn1FKqd^6^21eA4M1x?Rew&nn9Q$iVG>^a%#WyL4~B3blBBxx-=f+#)6 z?KksOQz3-$tU-vJluyx|knwVMg6A*+_=1t$V%qe~CmA~>F9e|csl@<~ACSiFn{?%G)PA|b(axQ$F;sc0(wPak3yAWQ-UF2-`YNv*tT|UmP5*~ap|PKb?#_1W8|nk1ZLylrxQba^g?*? z`=p%cU^7Z~SEOe2ml`8Dg&is@OR~7Fs_)iF0Cprc!MiyDS8=X@I>dQ3T9Vj@oj4=W zJ${>EI;H%gIudBRiS6vI(MxNf_>0cGo{8?86sDrzU>0@urBF9&Z?L66#2!-4KLL--{nfRoo{aZibz-;=RYslLL1a_Jerd!$5 zDQu}VOyo`C#JBUqYZt6zl5o-EWx#}qU|SF0X3rAZ2Z(?V*%8#hG*8<53_G=*&M$3J zm82{|*AfWbk;J8P@?iIr?ZI@`j&1p}NG>VMfFFsY2W>BAWZGb$TtW)qfoKCgCg;~6 zG^CF2!gpxFJn*bX)JNfsl-;G^D^#F1DP$0zX*AJGg_fF{?rZq7<7RbkPz(rI zDGH-{r~!{@_G37Pm%*A$#O3D)Eix~uOzw$1NMwvZQ&>9^ro!v#HK3=`y&ce<<*uW|LR2%G{svB-FtL<7#DF{UBzbr7dF ziR8K)AM&NQh-EXI2hjyqmhIA4Tna6^Rht*+d4@C*d3zO*t%%Qi^^<29oiFmD1Y-!0b0?R@yuS)xk0&XP= z;Hv;j3R(WON6H`E?R*!0{)mscUKDqIC;k#Ve|`y`13&zKTE2c#DvF|iAj{<;MV3!` zev@=8f9|+c?B}Q@KH9Zcy(Bd~h(9v&ehXuMpG^L(Qmgb0|GE98Fj33jYeKm=gdNG@ z9SDOw-9<~_#)jA!pGAVzkyvF9ZRrW^*&ZIl<7IdS5@2q}a5EM+dIyG0%G<>YIqYQQ z>cM>DZp(=fvk%zaAWhPXA_oJo&=z?3EM&-xg8fvlh(63(2!Zb#_V9Oxilb%i9T$%-j(6enG6_qI@=oxA_CLky%EljM3b*<2a5V{VEQT=ftQHW^umZu z;=mJGcHfcyoE+b3Z_EN}V8YjKspql> zsqeBoJRCfo?;zd_JY7s)%U1&PoE$GlRgNwWiyr>+Ou)j5c?tQ+6aZL@yTdj|B|Z-8 z%Q6T^{z~p!v8NAWW=}aj-nudBRHo10O`br&RAE@R44~;>A`~*$K;AWOCMz~N1KC#< zAp(T}4^5ccw0uT1@SW;zA*GlK|3_VKRW|$2w-yR=TA$um>9-P$gD06;Z}-`g<^u!( z`YFfXE^l8)hr9QD%uXK8HQ}fn_L*%Qmh=3p|`3h*)4cyF4fXH~Ori z@0bQ?jB4O2nb4E0bdyH;;{FmCNqE){n?8_i3nS5FhdBb=JNTLG4@T>7(|NssZnP4D zkMCIEa0{daf#K^d;jMlPSU8v9PhITb06ggEK@PsXCV{2aokoK-w7gTrMAJUjbFI#_ ztM^k|$5tSD7|AjD(;lfbf(Us{*ss|a!vVt42g|xFc3VRTsIWY(1PQAl90v2N9O;!6FZm}t|@347m#GMk$Dcqo*-(xcZTq_4h;Fx4e@P1Kj410m1`DD zD5%~M#B=wxNGZd%x4$|wPikHsmncw_V!of9Svp|Y>2|xXwf~F}@yDh(wTwNjYWL`9 z1%K{&&|HKxHBYMRGrCF&5#|8_Y@AmF1v(6sV!_)FA(pK|Rs22#El8;0|o|KtuEQRf=xiZ3t;-*B9TNl-@db+&*;l&%F52 zdv{wR7*?sm<(Q#tSr%Ai6rA!rQH&R+O~6A7 zrl$Q=1MJIDa`OiP9Zh~hT&OcWY^3T>P2L#z(lYl%zG1I@5&LAUeHnkNx&6f9n;q0d zzU?WQ`F{|hjNWGeIOm0!|!&(ysZJZ)`Wd3Jp)`<#O25Wys(bWkokSU{%*_|3Iq)>;Nt3 z|IWaS1p@k;d6I9)XM-5O^rv&6Z}Qs-8prt6dB``X&4gRTt27((KK+^$~^X z(W3$@t#VF;uMY&*W9mne)nuaE-1+NG+c zHtr3xTmA8dS5%(^C+~O$v)|rjzu_-Md2pfju{} zyW2*%I9H%3lx+S`Nt^cWRTi|GUDmEE@jHK!43HX0Xu>t=W-;PipuP&>ZRmCBeI{l< zn56A74fM_4XoWi(m+|4m4|Q#^r9u?$yD9pFIJVKKlt{u4?a;<}*Gdtbf@e!-lTp{R zp-8J0n5bM#f@4aA(x?-op>#F#CVV_v#1qey80(?^Kg5TLAYLGew=zQ>1K zOP$o0l77B#-2P%DH=DDWMq#AqZ~bI7ynIk$5u>A~SSZ!01WVc8G61tqV{M{i)Vt*A zo}#n|yHjkTKx1o02i5t$R&MJq*}>+c9yt+9Z~W|OLqRw{?}1JokqkOE!3>$FWY z#XeHOW{D5mqd=D;!^v0_!)Qm=&j^T>G9<2mbbc?%E3hgUuo}pGu{7A|Q2c6=GRU6+1JmTOc{`31}K*U*v|nBAYSRrz>#s(H9*Crcj6K933i7Q3ffF>?+g|wvZ z^tq9mH$e=U)+spi!B`@&B-a9mYaw&AviN_M-Zh9B?CgZJ7X-7c=b*=)@MZ?-kY3t! z?GF5yj$aS|YcbjgD(s9{*>HAl?5k+2t2)Xesj^nZ%VzwHdB}||Ih>JL*|thMmxz?P zBV%QddN!^mrN`Aoiw2#_#r}I^Wx9@}b+sl8KDMIfCe6+DOFKR`(+1r#9lKNvZ;kPy zSCx&c+d9e&?Ik()0$hH!qUCL>5JHH>Sn0M)J6pRT?W2)mk*4S>DNkl!8!6KYT}r#; z{*hvx<^EQcswBLOc}lg2E2pB@)kLK#EcF7b--<_t?uCuWoUw9y)4Zuhr5k>R5{)XA zVUgDF0Pf6C2kU14eW^gZ+s2*kSA#mJU5K`hl|4(Gz#fXeE>NbU-mepyRlcvocS5f+23+~m5eiuI# z9eq2We;Zn~*si^m-i6LXaa513K9MmrZLFLx#T`>1byP>0ujBc}b|?lo;BxmEp6 z%54)Z%H&{9|; zg)?!r4jNRiUng&3mzN=^k@+hOd|v9gx#6LY3zI)7}W zD9`O&q_3WhmG_^`s#8#+1Y`l0;e`SWn}HIwqfufP4{^M8#%z6)Q&1 z-JQ(Ko16!ELj3NsmWWSji9UO`C3?qVuLXskpuul5`7b1=>x@576(K!B-%b9uEFntzrc7R0oPaxitM#uqpM3Ez}A=Su+f~g-M$Saj^NA7tGNLVkywd6 zeVJHTDm}th3g6p>&xi7gANxYG^gS04!vl~U&Nm||3CkZ0;M)_sS7P>lKQeY=kITRu z{5)L{z9BUjI%Of%^4HbQ{E%qi_~Zf*rn%G}18-b@P2yQ5FIf(j{Vv z2y&Lopg}5U%G0IDbaztCQ%Hewt-C!y^j}gcO@~sp4Q{WS-O=KREMAwyM=Oc@^N(x$ zU^u;*+ZIRHz)= z!~4YcI1qG|1t-z$AeTUDmdH!~$0zr%Z&S)Dup;ThQP2-nPv@^+eDS2aRRq!=5QMs^ zknX7Pt2`II8ugj~gc}dSABWqc>AU%NuUdQ__~(EhY?_<>Hj6gIPV|5uJwEs}k9d?5 zkZGI4J(s#p7&>|Pht$TDl*Ia<_tv>}`sQ6m_!=ApAt-_d6af`VzaXXDsr5W2)s{h5 zY2|Y?fpq^$gnFS-C`#(Ysryz7nh9@~dfm?@2Qjgc*0Pci6mGZzN3v(Tav@K#zb$+D<b0Bp z8h7_-pjPJt{b4Do3o9LlIV!b2XYiK1J`twMv1kg)*Q^K5HV0!e4T`sP3#EyqLkT80 zW{4sQjLU!lrB2H_fEj;*iG=+X_P*mB{F+$~UKWL+3*09-$kKy8Wi^Dj>L@jYkdx!&+@a904R7!7KJz`HV6N~A9{2VB z1jdj+-Nx6smK_?ccYSO*_~d+CO}Sf--7p;Wp!v3+sU0OSS&?W!QrV|C@hbxx9SCxP ze(3Ex5kxHA<>c5`6JSe1K79|yCV8|fWm6bSR>o{*f&J7^tV z_C_wE>Ew`dy4wx%j81OqgSD_%DcYmFcn4z4aOB(gFTo-8P2Vs?B6RatE=ZBxQQXE(v%~O_GbjC!Dqz1%Ejhn~NAki)e?39@mSyH+MQkm% z>@Vsbm8>6&6q==sj9E~99vw%J5u_N0$Db|qALuK2uzdIelKVp78UO%OWsd+O^FgFK zjR6+d-=Xv-;(^GRE&!30CglJn-|yE#NO?Q#sFk#PD*KFT;N&;zQ49&y)ha?v71jdW zL_(7?%YM=XVF%ZzsnPX*=zDY*El>qVSX5h)sY2iKq3gY#HfjNGZ}d;dXOZ~|IcJ!y zn;9w>+NDWqgL-U5zz4v@MS}WNN7xTVnJ^-F{Ee`eh&GY%Q`8>tFDW*)S;s=;xhXeT zST5aFR6)&XRvM}ubf~I}C};Isql18l&NKAJ_#KGe>Hyvsy?okF`j!Mrt0}Tyn8IQS zOR!AGPd%3nOBz+N<2Srl5Pp=c6=c_bzTfG+l`BY#uf;w0`ANPa(%7-q&-SR z-SN0c#^ofcM+b?PYb#{}R46xi(Ft_HYPxisgUTPYgFz-Kut$da975fl%|(j3cD%^DYwaNL8?f{?6D;WYp|`H>jI0S3x&%;)zNn8vQEukbr-8ii8@uS>7N8Q?}+j?4~0$ZcaqM%j^G|RKh4)qo_pLeGzzt?&yFCU8uHdTijmD6A;J1sqx z(nHIFd3}xp&p!o=gC0Xk0dY1KT)cI~{~+fL-u&uXD;?;ebtVFUOOAJl#-;cG2%qbF>qBVxqP^e6Q&fX2yX#&u6e@+5>1;;n} zfzl(~#NX6=)Q6P}ta>am7qHduj?;WTegQU;Ud9FZoJE|%dst1R9!qny96wfqI_h&w z9@9u!*%!p13%nq_Aqx3Uyc*_k#*UHqPVJXO*@QqS5aT50oz7c$pqGSWu1+Ys71~m? z;fqW~{SDfG(GNJ%U`EQ(U%KoJI`>`I8*)DOiS@3DT9OA(&nPvp;roWZwaC-Lt`06v zPcQm+#18gQ#~V*EVgr%~WcQIEDh-Am=iaN|4%&PGa0;{U!OFzj1kXKfY{Bz3vp6pg%))GiUo}qfT+=wtD;J|M8|zmM6g+>^kMkNu zFU&p!EgNwaJWtb!^SVVV%&rD46SojN=hTez!uV}^{Hj`l=WD8QUIM6v*+Rdn?5|y= zI4=v7!fcpdmH*eSe4JMta$)u|NSQd(uU+XluU4eO>|Btt5t3iK5^-L;h=ti!zbg8# zU6D91h~Fm5uL}8VS1`_t0ijUlComE5ZyeJIyi&-M;J65%1ZD>~Wy4c1gTPM#tuy}= z`NTJO8zr{b^PYIrj{;SawIS8FaM}IP_lL4i_u${xU&#D#{p_m8KE5K>1~7(~XA*3) zk}C(*qs4v6i%QyI?&EJ8ZEJ6@(eiG7|H67;B-kIcJpl}6oBr@x{)|!t>mpTz400Fz zfRQmA37-NaT-piH+vs+OLI@ZDK=cr`N(gRMvB+BGDi6fnD$Nd8wd_JcLlAJ|tEDs? zsET}PPJc5uh(G$n`gv|bw7zx1ryo?`MxnDWte>iT`q+ywKkNPYC7;lZ#V05AvI=V1 zITLJxZ(fdh_q{M*LPz1(^xu?!RTvMuf{>$j`{rZ+<~utXVBfn-^td0{W4Toj{!KZ1 z$^O*M+mU_ikm`9ky21MLrTl9@d!v5;V%GfPrU=)RxVC0UxZ%#VXxCKW9&Gb+HVcF{ z_M8i+ugx$OY(sxu55t9$r3h9tV3tT(P_T;`EEgF}8FQstR?9Hd)kURB6_g?UsHqP> zo293qg9Qx@3O@CXPyw9EfbvdAQWqT!#mKDvJJBy-r3;l=1D(v2UUBzBRE{UdMVj|>X28H-{ zOI^1OMx39%C5~Sht*%YVa4GV65Em?A6E7GsZ|{ScUdkU*aEcEPNsB&6My@sTOvMVG z@Xh8@$SJ!cPq`n;;ub&Lqoyu`f7%pC6_#Gm(#{B*_x1TDpZbFsEL;CdyzIx!lMGlP ztmT3o#DZxxzm=6~P50vta})%1(*a#Ig}xZ(%_Fi>o@ohS_sfq_dyh09l-!PsmT47$ss|beN3aaZ(dk+F zJe+5v*eH(GoH%0v*MaU-OflOgwR?uBb@Y(CAQ)geP12|it2UT+l#NlDrnk}VeT2a3 zruB2ZWugxMpIlQ-dFBkWV=-%{LVi%-_kP=Nk13-Qtw(^~IFF43nl=Fq#a>HdKsy zGp>@y<-#r*zGF4&aWL49Sjiaq{a}NNVM-p_I3ynAlDeev`5(7~iERS7Y5Mc%8?6)Y zAB$tD+?%~zBhHg&$MArNwlOmWM)CV?BW!j$H^i%Xj zurCoTuI6e_d^^;D7g9S7?X6Dw;5fZ~m&OFl5%(jcDUPA$_#KlZCY3UWr14@^QWaI9 z1}W6?#a5}Re6Jn9M_IWYkdz-P4^3!=rpCq)e;_RcW&`Z~w5m!8=I-CCLXOPHR|5(x z2&B}ms8m-r5_fRYMrrwVOiD&w~0RSx(LCCa+0kHz%x zCiRl%8tBg=#tWE}}4cxrQpVM zA+7)IUe=MYrYmHHR&w+WWY-w8CA8@;)Lj|Cek)!AsjW>LBQka=48K)Ao-D{9nUr zqfcw|xm5fQso5Xrzx9{@Q8A{G9~rm4YqYA>sAInLn{d#2R)79P%)CoE`2PPfAlUF^ zT@!jd+i>RvrOvp}`xIdN7z9#O$o#c86(BWs1s|>GI)hmkeYO0Z=R@HX^=cfME-RhG zzO$3_KhI!U-?r><-LiZn7jsu19ZeVLV&@i4yfFpUS*bGZ0ZLnqj`j|wMSp0=p5HG> zT}OGiIP}nzWVmxCXzA(2-*!c7H>Xbme}I2LHvA>VEBe7pp1PJZ-uEud=+u4a*-X+L zjZ9UrsSZ@XK2dozEpXXlo!hjArdN4+5Hq28(AnsnSoQI;eU+a??DM-)&}*LI(?h*A zC`y-=OnbXSwIG5SOpm&`Jl@Jx>8|i}G6Nmy828SSjXt; zBP-GA1C&Vh{fGcjAiG5S(-jL3X_0KOM91C!u?OrXgS>6KkpU{(SaV1P>+-E!+#=o&paj$rn+)r;d z)QQ_7A12~9ui?3Gkf@k`d0Kq1GYgz7pvfe&QWdTpn3a#$TDdx_gok1JSMUiOdpUlT zio&0tf5?Lu=4yBBznrjlhW*x6)K>zgEI3{(-52D73~3bTgU|G1L%q13sAta zDRmJ4Lfku1`sMxNHacrP`|1tB)Iu~Ww=@(f)= z*b97l!nL#dM5dL@@4H=@FNe45B4msUUvwq>1Y%RVDw0zNJ$S<20l$);3M6Zg4JQ0R z$^3JCIsucDEp#&VCLBz*X!>_*)p}D%Kz$g4DN$dklYu_Bs04x?3jE|pY7xv_7>lqC zgq=PPyJ}!xFZE;S}0=oQx%ZS9r!~WG;^d04S z_#u6ZYAmCiAoXx60CzI0jDgn9o8T2kmfpf~vCABV#8G24Xoav0BbGeSPYdV~I{Ca( zGj#Uyiy(R%r?J`)NdMHnjWXJ#RHhV`Y4lL7d46r4KG283}IEL8TrZ1QN3!h-z zf!j^0=rc)fXq$`p&engQG83z+<^YQc#ZT^;3s%!dFh=G1asPXx5oM^6JuR+A;s1<9 zLBPQvv}f8&eZLVimec!=-?kj_O3aSupSnq^Gxi9w9KkI}|EktZ@5|$z3@$Y)NL#n^ zvHt6AUO_)tb6B#y!D_`*;^zr>Rn?6V?d=|SEuKNs^=?G-53DA+!EB7e{)YTvrGXv2 z(w#Hrz*G}R$(P*>u9g(rmt#(Vdfx_K1N{eLQ{z-X=r&G)kfY1Pbs43;9YtYAe`zM& z8^HL6NdrxGj^|I$idA+N?cYC?Zfss;K(hC6KT9)#HIAA2uU8%d4q=Q?N^D+1xXQh* zpYOL0Bh&s@^Em@VfJz9_Fze{OnLTy@t=yO%g`f=lZ!_X|!$^Sp3x|?M6P2inamXy* znyD;!PoOa=f@)V^zk%wy=>$juj{{MEisEYt$wE|9dkzu`ju8_lbYX`;fE1gf=JtY) zSa78=hw#dE!fCpBEI=zvp}pe(0s7LL(2D70C99@y_pt?DKWV+u?8{B{zK|dafM?R3 z-)0(7&FR}JS=pOcGC>nSc9^r+rk5?4ze8S*a4SlqK{OLd(K|}xgP-1Aov)T`kx~gU z7NEpac_V$sFt?xQfi>%xT_2hg^4TSI@&Qv?v?s<-d)E_|ilLP)oTe^q`!oy{f6AAF zLp=@*inzO}XOCkmCrwNiH1X&!9yuXX=q>xlX3kyIa?E?%Li4xfq*>IqsU z;qB}`67)Wv@0m{Ff*(PvE%$J(VZy|=)aB~oWvqsP$&mbCrXfg(<^UBC^OU}=g^x!7 z0oo23K#eDMdHc429g7`Rw!7pegZ8b0x-qenN$dM`MV?VUp2=C|!9JSq@1ckQhM39Y zE=lFVn~rN(DT%LX)*u)|<*j**3yJ#(1fQD?(8Bv7KGh&Jk{EmK_hEP=h7yz$3{*N#+D&e+TJ(}KlyU$Bp$hrc4Z;QcBy$i( z9RQ%xpvri{WT$1KsaJ1c zuWhMS4HgEra7jo!$`s2Em)KXJK!FMt%2P0qMrdXyfRQ1Yas2CkNR=axG2p?HF-{rH ze_$EiWAUy;redWF`ll{$k2G^b;tNJlIo(l*L0f<{Se6BToLuE3`rzd!9D5*pVnsA+ z-V5@@w`%3;c>oR5TKizE6j^M}h?|Xx!C4Y5(#Q8OvYVaY{*G94yp}+k>P#r|d~X%8 z#c9zG`qIP@@t6on!j-XWP&DWvpuzzL7)4t#3z|vsgZm>&Op;z#f(io^8;3Es;Rx4% zx4B5_vitX%Mw6x|+ArsUhlDmyJ&~hWWkK-y(j?0o1IxS86;#*zOID>+VRHWhkx0}k z3T)x)3K?Z%;w6kxL<(SGL<}i~knA;8fNl#UUb5xHEu zD-GFF?(litL1Jai60RgckVpjCyNjk6EP{@j8iYtuX_VZrWgpwfLR@XiSUx8DIngWu z=C2(UeC^{cPGeiJJ;Wf3Foj4XH>OnkL@i4Y2^wHcFNr3HZ>g(fn^9>BEV;+XK41?2 z<5syx)%8$E(sGy|Fjo;!t*$hux2SaS)tq2C>9`cCJO;O|>RqVnX7p%Gy4AjlJNDZR{>Bnu*#Z4F8BfE&|{rT(P zB#owxX*7ItEBZn_hXp2l)VE@|*6wd7a2*gOwA3jHbjk^{E+~eYp*#n<#OS&&#aYtL zRO$J3XCVI^4!JpaIC&3=209Jyp;*y>`{%}b#1 zSCf^5CY>M@{F%n4w8)-=d-w-ZUpr>;{W(bxPdA@}3Op>6CC@ql@nzbIasH@o2xKfH z4jpxN;c3jJWhV24S0?F%Zk*tqUbI}d(JgLQ7ks;8c>E3SEZIK$4h7tii1T@=qb|rF zWfz(SioPVXk<@IPCQPcQk*zqnr9oY^!9Ze3bw|YABf35-Xf;fjBA2+FPX)$JAkLeC zct~b`-AowhZNtZYPN^KwRp(v4<2<^Vh8;F81x8XNo)4?4c9~~8%nMGpuj}G%!s`o%e?#_i>9e_FvQ&Swc77KQ) zc!K5N`#g*>H+w?eZ#Et@57~06OOXl}EeF0-sHekS3-o7Zd-(ad-DA8ncyOa(0n+wU zw=~*5JZn%E{nl z<0M5S)XAS@(~+vi3&c7JL|VeJw(ma6m&yTi{;vB|-j!iF-Bk9N0iify%Ab}kO=i(c z=(sOrJUgq_gIAsFHD*l-ttTn#)1Ckzv)Jb$Cx9}ev?Y_L`V36jKHLlDRMYZJgaZAe zc^Vd}jy9utO0eq7DlJzMaN22b<_D16Jm_d9gB}?7?s~JOqAN(X|Lp9M+={=nuYD>U z+sxdv7GieYF7<3sV!9fxWx`fDB~lw?8!V?u-xD3O7s^@34#|XW${0!Dggqx!%QDUi zGZx}`!#5E2u2Ta(GfDete*m66?N@Cn-T#cHHx!a@CKZi~U>6n+AGZIJAIuo( zp&_Ogi}E;Xyu;-pu_5|1ggU(Qb&dUeUXH+u@-RtVDwkIl7RkVstVqHrVpP-D^#Tqp zwGx|5=)1(utqFF{sXAVohm+O=QccjljDyKFIUAiko>eKt4Ow31g_*RlN`GSAWe~);x`|LV<^~oHQ59yIrt}BI2;cUdT z475nR!BH<^^JWBNwwOQM$O`zgRFu2SoeIXf`nse(-fVibPynkZk~v{gFcKEY5v#;B zKk63Vp?Km!<3!DKJ3n834-^fR$K7ePDT=#Vx{~6|`__J578lyyb0Gy~eLK?K*&H>8IFc$yh%;7bI#h+ffdd z-8{SF~Cno1+nRRXwHRTg6y@qZ}cOCuC?!FWhPo6qBCPwRw7hQr3R1GU`~) zT0^3Qt|T)1Kk{}c^|lN>LBsN`)LjO5w`5?df|S87sy|_U#+{D$Y5`@H^FCbyZ-M9C zWM6})drjnWJCg?xaAhx#WndGIJ?G{ZN~$^!fwNSj{7RY68OE`qNF|!T!QxCP^c+|K zzMnNaRuh=JPX(zWznSyy(Izx8xTsn)y-zAc#_$fO^hn~g$eHZO?+aI`Ou2dC%BJTr z{^-riL|Gr}FU#0qhX(_;7)0!d+6Z4yWyWVRs2)DGh!pZqf2UK@wpGQJ_|;-OK#~&6 zacDQo%sRO)rqC1Hi0)T=6%SW80E~ZVqUZ!w_;`#>%LY;lB$gIOVZY{kZW2jd;&oYE z<=}K%XW!x?-NW&HhR=cg{gX3;>S%Dfw~vb&;#72-jYrxQhpDDIehu;!^Qhz9(eWd1 zb@r&+;OgPyQr(!RD2HY46ZupC6xk_c<*>-HIe z0W7F!OTD-e5}cU&3j<0xU@B~n2ZVw$qXhnd3-ZrH4)ddn)~7l3qu$*k^!jMb&*hTU zQ9J5So7w~ZKK~Eh58L&L;x$iXpm2@bG6SDW_>~-392aIR8DRI^0SshTXgaxJ3%aAB z-;e-!K`Un$VWe1tBza+?n>~h%9j44UpbbEc_kuLo12VsO10?{UY>E5!g@QC_$jw^R zz*sJO*1dCIg&sPwoGzI1D>6{3?_ZZKY(0a-EIW8=Q2>w%*#0v$yeW8jnn5Bqt`rPc zg&Hh?n_L`N0A&!YMnRo9Thw#Y>>Y8u7=crNCYG+j3_1Y#zQHP`6Pd)^IXV7Q*nUYy zP(%xbf>05V{~_xggDeTQsL{4<+vc=w+s3rr)3)ttpSEq=cK5Vx+j@QPeLueUy@-9H zYVV!3G9ph^#W|TP*KS|U0(LTh#I#Tq>_gd9GXDh?wjhYG3K2aFI)nVQD8aBS>})2K|Fp^?eB!J3g9g5Hz4JKLNJ-*ydVlT^@f-p0S;cwW6HByJdc((ie_J-8W~V12rKob$au_11DI!zibY)e{!?5i;c$XrI#C;guZ$X`c&>w|BT{$#V^3i&HJ99&CAKlGyD%h zKL-e)_hj~baN%%$Id=u^b^mlQb-qCHLx?BLzQVsG=(f7T1O~N8X5VIyn^`%X*eoDz zr~x{9d>)xXz3|^sd+LOC{{gi!Hd$Qy97sCa!hWLuYK8;@LyLm}I)0FIzDDW>k;|AZ z*i0gX1v#_4H?YscGOhpI)aYQ$4XSXa4)V%up`6kP=ZxQfxV&Fz7-(oQmwVcKJom|e zvAjRnB)(8-UY$EvAz52rpvVsdRx5J^0$~dRx%qruUl7UP+P%fLP`2L&;CJ)u2lags zl!Cfn2_O29+@G6VFx|@DKaRygVOa|8D;jS1*a*KtE2mI3M-}>i_U>+_>%(b-2^-h! zb=U77MHPt5Mm=YwedFwU`?;^_1{v{)hPi@8Hh%eHYWv9GkL-d>I^-hAQZUTc)(?O- zcYI$VC14H(Aj>0yuOpp4>BID6-aj{#+Uy)z&bNWp@wQr3LcV?sCwaMtBb@(O^o)yW^?LpL{y;E)-$u)K8CfFcsV!=`7s0by=pIydsOFpt zrcAr3uH)@GNXfUY_2NDz@b=(1#k}{j!^-#oap+YV?AQLmTpSnjO!&Trnp`id(>WFV znhO3(lN3l2$Nt|_r2x1A=-ncNWItL!SYXoRHqhy5k5s>xn z*nUliH85XiqXudp!{91;-l~D^W)r! zy%Wp>Ypg-UJtLKlSoak+AL^!y7eP<8)_R7x-9ETu##o zKHKdTHj}5(4!SSO=c}T{=${@Ys?5_PZTZgx$-N+?CLsPm=`JOpw8ze16>7M0Y=?Gm zeDzZbn?GkabJZHw;aJn82#~)2Sa%$F$>_W*K_IICs4%*$gP*{5w~g)sd1hie?C}#< z&dZHhn>=$HVUY-Vhs1>i->2lxdNjr2^CC{e3ZjL?K?Xn7Q`xFOQAMMjEq(w=;i`;+ zDtl=)Hd~^xjY}3t!>>WUk;JfAI&M`h?wB-a-#IYFW2Ey{+x|lOGAn=;wMVnLaUH?A zlm^!+BMtdgW|DrAGa&F%+PvL-d+&`$=4XdE-H{1z z%5C2u8^qlLD^%4TL8@p+B%b`LS8CIoAP&D>P!~#YU|TeA){%j^=Uw`*7BQq;Z|h2= zM758TtakcX{yrbnRvs76xZcU$UncIaq3*Sq1#8+;qKE<&E8lGuKRFvJO) z(xXdJ=aA*8oe5UYT?yUkl`M77`>qRSt(D z(9ES!mHxn;uN&&`i4Ov{c7B(_1t<$UVN6r>rkvW6{#Pz_YI}9>gMvsse&YBumpC(| zJFxmRUy^*4jqd*U8vMc6< z+jNke>C$T!XHC<(YK?k+LfU$m>&kF~wc8nahW-8f4#%&$2+x%=WY(!mQLI_G$Ma({ zmLs=(9pWq6R2;PoBxfEa%iM#f_R*~-@OB{57~x_a8vDKA?Cl_J%-gjMxQfB*`;H%3 zMShgBAXKQL`3?R*G{C>qeh9Xlhqku~<|MN>}7EDxAbGOsOr&O(CMcJi6g<^dAQgpvll%%;q ziu>wA9*~2|nx%23S8XwQDO#}BYp2nnr>lfxghe+8L_XM$_YSkgoO@3etMljHG zkRmFj?&mS~YYs%F`L~p_iDqeOeYkAcxU1=^eEo8#O{zuU?~eM)Ca(tv9%%)mk@sF+ zKUki9?2E>h>IH(v?l|)b4(m7Pr7=A}$IWI$@5lRXuH)}HwHGmo?+5$oSAm12i|3qk z^6%Y`@8_52$La6Su>0@-%XmK5M{yB=#QgZ&VPK^Ad+LM|V-8Te{bd$@;XrbZLGBuY zIXV6cj))V^;{e2%G3At;K*0azCRT?8<_1CbzcU+T0Qt*%{;4!8rg4kR}YlRgf7n7yJ_bp;KdR z5AxSSU+WF(BIXD>3GkP<;>ch3GtC_%Ii7_G-hxxNu8kV=nypS+bXq0g9{0N_#-6{s z6XuGdT&))E?(ippoO~Hgq)VW$(Ca0x$bao?7Jn%OV$Ub>PI@fo?OLy0K8J4Jgmw*h z5e}6KhE*=Vuw@JBd-xUlgTmpWV%pG+4tF_*+q2)+wNmUnJYr(?CB7XEk)a{MUV9j6 zdi~VcKHsRh;9K(SX;&Ytj+4RdaY#f*>%O=|G~Z_3phojLZhJ2Gc#0On9p(gnbC(Yb zdMFK@+bV^(>Q|9-PnQ!c@hZQL^Bj=(gNTHDYgu@o&zds?qMbQ~A&{A8hg{BFudwzw z;tXaR*Q881+Fu&mmn0>eAq!iu=3X5B+Wrgk;J0ix0#fP9OTpqk3bWt;;H=&`5Xwh( z758#Ky~akvMA?>ilO}@7G0fMvAN3Zja1�GiLBO# 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¬=qE` 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%0AeluUqbbpwPPQpEJcT(&*C(xbl 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%0Dca{y^;(o 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