diff --git a/patch/kernel/archive/spacemit-6.18/009-Spacemit-CRYPTO_DEBUG-and-CRYPTO_SELF_TEST-are-optio.patch b/patch/kernel/archive/spacemit-6.18/009-Spacemit-CRYPTO_DEBUG-and-CRYPTO_SELF_TEST-are-optio.patch new file mode 100644 index 0000000000..1401feb3a1 --- /dev/null +++ b/patch/kernel/archive/spacemit-6.18/009-Spacemit-CRYPTO_DEBUG-and-CRYPTO_SELF_TEST-are-optio.patch @@ -0,0 +1,35 @@ +From d365c18ea76b42795ffc4162a8d34f122821999e Mon Sep 17 00:00:00 2001 +From: Sven-Ola Tuecke +Date: Tue, 13 Jan 2026 16:32:06 +0100 +Subject: [PATCH] Spacemit CRYPTO_DEBUG and CRYPTO_SELF_TEST are options not + modules + +Signed-off-by: Sven-Ola Tuecke +--- + drivers/crypto/spacemit/Kconfig | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/crypto/spacemit/Kconfig b/drivers/crypto/spacemit/Kconfig +index 36545d478a..3ed342ef2f 100644 +--- a/drivers/crypto/spacemit/Kconfig ++++ b/drivers/crypto/spacemit/Kconfig +@@ -15,14 +15,14 @@ config SPACEMIT_REE_AES + Support AES using SPACEMIT REE Crypto Engine. + + config SPACEMIT_CRYPTO_DEBUG +- tristate "Enable SPACEMIT REE Crytpo Engine Debug Interface" ++ bool "Enable SPACEMIT REE Crytpo Engine Debug Interface" + depends on SPACEMIT_REE_ENGINE + default n + help + Enable spacemit crypto engine debug interface in userspace + + config SPACEMIT_CRYPTO_SELF_TEST +- tristate "Enable SPACEMIT REE Crytpo Engine Selftest" ++ bool "Enable SPACEMIT REE Crytpo Engine Selftest" + depends on SPACEMIT_REE_ENGINE + default n + help +-- +2.34.1 + diff --git a/patch/kernel/archive/spacemit-6.18/010-Spacemit-HW-crypto-avoid-unnecessary-fallback-to-SW-.patch b/patch/kernel/archive/spacemit-6.18/010-Spacemit-HW-crypto-avoid-unnecessary-fallback-to-SW-.patch new file mode 100644 index 0000000000..b436b6ef9b --- /dev/null +++ b/patch/kernel/archive/spacemit-6.18/010-Spacemit-HW-crypto-avoid-unnecessary-fallback-to-SW-.patch @@ -0,0 +1,63 @@ +From 46b2e452144de658327605d46d818809c29fa7e2 Mon Sep 17 00:00:00 2001 +From: Sven-Ola Tuecke +Date: Tue, 13 Jan 2026 16:50:46 +0100 +Subject: [PATCH] Spacemit HW crypto: avoid unnecessary fallback to SW crypto + +Signed-off-by: Sven-Ola Tuecke +--- + drivers/crypto/spacemit/spacemit_ce_engine.c | 21 ++++++++++---------- + 1 file changed, 11 insertions(+), 10 deletions(-) + +diff --git a/drivers/crypto/spacemit/spacemit_ce_engine.c b/drivers/crypto/spacemit/spacemit_ce_engine.c +index 7baaa5f5a..14ffc7c85 100644 +--- a/drivers/crypto/spacemit/spacemit_ce_engine.c ++++ b/drivers/crypto/spacemit/spacemit_ce_engine.c +@@ -1147,14 +1147,15 @@ static int ce_aes_process_nblocks_noalign(int index, const unsigned char *buf_in + unsigned long blocks, symmetric_key * skey1, symmetric_key * skey2, + AES_MODE_T mode, uint8_t *inv, AES_OP_MODE_T op) { + int ret; +- int len_bytes = 0; +- int step_bytes = 0; +- unsigned char *in_cpy = NULL, *out_cpy = NULL; +- unsigned char *in_work = NULL, *out_work = NULL; +- unsigned char *aligned_buf_1 = &engine[index].internal_working_buffer[0]; +- unsigned char *aligned_buf_2 = &engine[index].internal_working_buffer[WORK_BUF_SIZE]; + + if ((unsigned long) buf_in & 0x3 || (unsigned long) buf_out & 0x3) { ++ int len_bytes = 0; ++ int step_bytes = 0; ++ unsigned char *in_cpy = NULL, *out_cpy = NULL; ++ unsigned char *in_work = NULL, *out_work = NULL; ++ unsigned char *aligned_buf_1 = &engine[index].internal_working_buffer[0]; ++ unsigned char *aligned_buf_2 = &engine[index].internal_working_buffer[WORK_BUF_SIZE]; ++ + len_bytes = blocks << 4; + in_cpy = (unsigned char *) buf_in; + out_cpy = (unsigned char *) buf_out; +@@ -1193,9 +1194,12 @@ static int ce_aes_process_nblocks_noalign(int index, const unsigned char *buf_in + sw_aes_ce_decrypt(inv, inv, key_local, key_len); + } + } ++exit: ++ memset(aligned_buf_1, 0x0, WORK_BUF_SIZE); ++ memset(aligned_buf_2, 0x0, WORK_BUF_SIZE); + } else { + ret = ce_aes_process_nblocks(index, buf_in, buf_out, blocks, skey1, skey2, mode, inv, op); +- if (!ret && (mode == E_AES_XTS)) { ++ if ((ret != 0) && (mode == E_AES_XTS)) { + unsigned char key_local[32]; + unsigned int key_len = (skey2->rijndael.Nr < 32) ? skey2->rijndael.Nr : 32; + +@@ -1207,9 +1211,6 @@ static int ce_aes_process_nblocks_noalign(int index, const unsigned char *buf_in + } + } + +-exit: +- memset(aligned_buf_1, 0x0, WORK_BUF_SIZE); +- memset(aligned_buf_2, 0x0, WORK_BUF_SIZE); + return ret; + } + +-- +2.34.1 + diff --git a/patch/kernel/archive/spacemit-6.6/009-Spacemit-CRYPTO_DEBUG-and-CRYPTO_SELF_TEST-are-optio.patch b/patch/kernel/archive/spacemit-6.6/009-Spacemit-CRYPTO_DEBUG-and-CRYPTO_SELF_TEST-are-optio.patch new file mode 100644 index 0000000000..1401feb3a1 --- /dev/null +++ b/patch/kernel/archive/spacemit-6.6/009-Spacemit-CRYPTO_DEBUG-and-CRYPTO_SELF_TEST-are-optio.patch @@ -0,0 +1,35 @@ +From d365c18ea76b42795ffc4162a8d34f122821999e Mon Sep 17 00:00:00 2001 +From: Sven-Ola Tuecke +Date: Tue, 13 Jan 2026 16:32:06 +0100 +Subject: [PATCH] Spacemit CRYPTO_DEBUG and CRYPTO_SELF_TEST are options not + modules + +Signed-off-by: Sven-Ola Tuecke +--- + drivers/crypto/spacemit/Kconfig | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/crypto/spacemit/Kconfig b/drivers/crypto/spacemit/Kconfig +index 36545d478a..3ed342ef2f 100644 +--- a/drivers/crypto/spacemit/Kconfig ++++ b/drivers/crypto/spacemit/Kconfig +@@ -15,14 +15,14 @@ config SPACEMIT_REE_AES + Support AES using SPACEMIT REE Crypto Engine. + + config SPACEMIT_CRYPTO_DEBUG +- tristate "Enable SPACEMIT REE Crytpo Engine Debug Interface" ++ bool "Enable SPACEMIT REE Crytpo Engine Debug Interface" + depends on SPACEMIT_REE_ENGINE + default n + help + Enable spacemit crypto engine debug interface in userspace + + config SPACEMIT_CRYPTO_SELF_TEST +- tristate "Enable SPACEMIT REE Crytpo Engine Selftest" ++ bool "Enable SPACEMIT REE Crytpo Engine Selftest" + depends on SPACEMIT_REE_ENGINE + default n + help +-- +2.34.1 + diff --git a/patch/kernel/archive/spacemit-6.6/010-Spacemit-HW-crypto-avoid-unnecessary-fallback-to-SW-.patch b/patch/kernel/archive/spacemit-6.6/010-Spacemit-HW-crypto-avoid-unnecessary-fallback-to-SW-.patch new file mode 100644 index 0000000000..a1cc6aa8b8 --- /dev/null +++ b/patch/kernel/archive/spacemit-6.6/010-Spacemit-HW-crypto-avoid-unnecessary-fallback-to-SW-.patch @@ -0,0 +1,63 @@ +From 6db06399424f7eaf9e455dccaf6bcde31ca21f4f Mon Sep 17 00:00:00 2001 +From: Sven-Ola Tuecke +Date: Tue, 13 Jan 2026 16:39:38 +0100 +Subject: [PATCH] Spacemit HW crypto: avoid unnecessary fallback to SW crypto + +Signed-off-by: Sven-Ola Tuecke +--- + drivers/crypto/spacemit/spacemit_ce_engine.c | 21 ++++++++++---------- + 1 file changed, 11 insertions(+), 10 deletions(-) + +diff --git a/drivers/crypto/spacemit/spacemit_ce_engine.c b/drivers/crypto/spacemit/spacemit_ce_engine.c +index 033ce6531b..d1170b47c4 100644 +--- a/drivers/crypto/spacemit/spacemit_ce_engine.c ++++ b/drivers/crypto/spacemit/spacemit_ce_engine.c +@@ -1153,14 +1153,15 @@ static int ce_aes_process_nblocks_noalign(int index, const unsigned char *buf_in + unsigned long blocks, symmetric_key * skey1, symmetric_key * skey2, + AES_MODE_T mode, uint8_t *inv, AES_OP_MODE_T op) { + int ret; +- int len_bytes = 0; +- int step_bytes = 0; +- unsigned char *in_cpy = NULL, *out_cpy = NULL; +- unsigned char *in_work = NULL, *out_work = NULL; +- unsigned char *aligned_buf_1 = &engine[index].internal_working_buffer[0]; +- unsigned char *aligned_buf_2 = &engine[index].internal_working_buffer[WORK_BUF_SIZE]; + + if ((unsigned long) buf_in & 0x3 || (unsigned long) buf_out & 0x3) { ++ int len_bytes = 0; ++ int step_bytes = 0; ++ unsigned char *in_cpy = NULL, *out_cpy = NULL; ++ unsigned char *in_work = NULL, *out_work = NULL; ++ unsigned char *aligned_buf_1 = &engine[index].internal_working_buffer[0]; ++ unsigned char *aligned_buf_2 = &engine[index].internal_working_buffer[WORK_BUF_SIZE]; ++ + len_bytes = blocks << 4; + in_cpy = (unsigned char *) buf_in; + out_cpy = (unsigned char *) buf_out; +@@ -1199,9 +1200,12 @@ static int ce_aes_process_nblocks_noalign(int index, const unsigned char *buf_in + sw_aes_ce_decrypt(inv, inv, key_local, key_len); + } + } ++exit: ++ memset(aligned_buf_1, 0x0, WORK_BUF_SIZE); ++ memset(aligned_buf_2, 0x0, WORK_BUF_SIZE); + } else { + ret = ce_aes_process_nblocks(index, buf_in, buf_out, blocks, skey1, skey2, mode, inv, op); +- if (!ret && (mode == E_AES_XTS)) { ++ if ((ret != 0) && (mode == E_AES_XTS)) { + unsigned char key_local[32]; + unsigned int key_len = (skey2->rijndael.Nr < 32) ? skey2->rijndael.Nr : 32; + +@@ -1213,9 +1217,6 @@ static int ce_aes_process_nblocks_noalign(int index, const unsigned char *buf_in + } + } + +-exit: +- memset(aligned_buf_1, 0x0, WORK_BUF_SIZE); +- memset(aligned_buf_2, 0x0, WORK_BUF_SIZE); + return ret; + } + +-- +2.34.1 +