2023-07-30 19:29:53

by Kamlesh Gurudasani

[permalink] [raw]
Subject: [PATCH 0/5] Add support for Texas Instruments MCRC64 engine

Add support for MCRC64 engine to calculate 64-bit CRC in Full-CPU mode

MCRC64 engine calculates 64-bit cyclic redundancy checks (CRC)
according to the ISO 3309 standard.

Generator polynomial: x^64 + x^4 + x^3 + x + 1
Polynomial value: 0x000000000000001b

Tested with

and tcrypt,
sudo modprobe tcrypt mode=329 sec=1

Signed-off-by: Kamlesh Gurudasani <[email protected]>
---
Kamlesh Gurudasani (5):
crypto: crc64 - add crc64-iso test vectors
dt-bindings: crypto: Add binding for TI MCRC64 driver
crypto: ti - add driver for MCRC64 engine
arm64: dts: ti: k3-am62: Add dt node, cbass_main ranges for MCRC64
arm64: defconfig: enable MCRC module

Documentation/devicetree/bindings/crypto/ti,mcrc64.yaml | 42 +++++++
MAINTAINERS | 7 ++
arch/arm64/boot/dts/ti/k3-am62-main.dtsi | 7 ++
arch/arm64/boot/dts/ti/k3-am62.dtsi | 1 +
arch/arm64/configs/defconfig | 2 +
crypto/tcrypt.c | 5 +
crypto/testmgr.c | 7 ++
crypto/testmgr.h | 401 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
drivers/crypto/Kconfig | 1 +
drivers/crypto/Makefile | 1 +
drivers/crypto/ti/Kconfig | 10 ++
drivers/crypto/ti/Makefile | 2 +
drivers/crypto/ti/mcrc64.c | 360 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
13 files changed, 846 insertions(+)
---
base-commit: d7b3af5a77e8d8da28f435f313e069aea5bcf172
change-id: 20230719-mcrc-upstream-7ae9a75cab37

Best regards,
--
Kamlesh Gurudasani <[email protected]>



2023-07-30 19:44:15

by Kamlesh Gurudasani

[permalink] [raw]
Subject: [PATCH 5/5] arm64: defconfig: enable MCRC module

K3 devices include MCRC engine for crc64 calculation.
Enable module to be built for K3 devices.

Also enable algif_hash module, which is needed to access MCRC module
from userspace.

Signed-off-by: Kamlesh Gurudasani <[email protected]>
---
arch/arm64/configs/defconfig | 2 ++
1 file changed, 2 insertions(+)

diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index 6cbf6eb59378..6006983b313e 100644
--- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig
@@ -1505,6 +1505,7 @@ CONFIG_CRYPTO_TEST=m
CONFIG_CRYPTO_ECHAINIV=y
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_ANSI_CPRNG=y
+CONFIG_CRYPTO_USER_API_HASH=m
CONFIG_CRYPTO_USER_API_RNG=m
CONFIG_CRYPTO_CHACHA20_NEON=m
CONFIG_CRYPTO_GHASH_ARM64_CE=y
@@ -1528,6 +1529,7 @@ CONFIG_CRYPTO_DEV_HISI_ZIP=m
CONFIG_CRYPTO_DEV_HISI_HPRE=m
CONFIG_CRYPTO_DEV_HISI_TRNG=m
CONFIG_CRYPTO_DEV_SA2UL=m
+CONFIG_CRYPTO_DEV_TI_MCRC64=m
CONFIG_DMA_RESTRICTED_POOL=y
CONFIG_CMA_SIZE_MBYTES=32
CONFIG_PRINTK_TIME=y

--
2.34.1


2023-07-31 18:26:34

by Ard Biesheuvel

[permalink] [raw]
Subject: Re: [PATCH 0/5] Add support for Texas Instruments MCRC64 engine

On Sun, 30 Jul 2023 at 20:56, Kamlesh Gurudasani <[email protected]> wrote:
>
> Add support for MCRC64 engine to calculate 64-bit CRC in Full-CPU mode
>
> MCRC64 engine calculates 64-bit cyclic redundancy checks (CRC)
> according to the ISO 3309 standard.
>
> Generator polynomial: x^64 + x^4 + x^3 + x + 1
> Polynomial value: 0x000000000000001b
>

How will this code be used? WIthout a user of the crc64-iso crypto API
algorithm, there is no point in having a driver that implements it.

Also, *if* such a user exists, we'd need to have a generic C
implementation as well - we don't add new algorithms unless they can
be enabled on all platforms and architectures.


> Tested with
>
> and tcrypt,
> sudo modprobe tcrypt mode=329 sec=1
>
> Signed-off-by: Kamlesh Gurudasani <[email protected]>
> ---
> Kamlesh Gurudasani (5):
> crypto: crc64 - add crc64-iso test vectors
> dt-bindings: crypto: Add binding for TI MCRC64 driver
> crypto: ti - add driver for MCRC64 engine
> arm64: dts: ti: k3-am62: Add dt node, cbass_main ranges for MCRC64
> arm64: defconfig: enable MCRC module
>
> Documentation/devicetree/bindings/crypto/ti,mcrc64.yaml | 42 +++++++
> MAINTAINERS | 7 ++
> arch/arm64/boot/dts/ti/k3-am62-main.dtsi | 7 ++
> arch/arm64/boot/dts/ti/k3-am62.dtsi | 1 +
> arch/arm64/configs/defconfig | 2 +
> crypto/tcrypt.c | 5 +
> crypto/testmgr.c | 7 ++
> crypto/testmgr.h | 401 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> drivers/crypto/Kconfig | 1 +
> drivers/crypto/Makefile | 1 +
> drivers/crypto/ti/Kconfig | 10 ++
> drivers/crypto/ti/Makefile | 2 +
> drivers/crypto/ti/mcrc64.c | 360 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 13 files changed, 846 insertions(+)
> ---
> base-commit: d7b3af5a77e8d8da28f435f313e069aea5bcf172
> change-id: 20230719-mcrc-upstream-7ae9a75cab37
>
> Best regards,
> --
> Kamlesh Gurudasani <[email protected]>
>

2023-08-01 07:16:39

by Kamlesh Gurudasani

[permalink] [raw]
Subject: Re: [EXTERNAL] Re: [PATCH 0/5] Add support for Texas Instruments MCRC64 engine

Ard Biesheuvel <[email protected]> writes:

> On Sun, 30 Jul 2023 at 20:56, Kamlesh Gurudasani <[email protected]> wrote:
>>
>> Add support for MCRC64 engine to calculate 64-bit CRC in Full-CPU mode
>>
>> MCRC64 engine calculates 64-bit cyclic redundancy checks (CRC)
>> according to the ISO 3309 standard.
>>
>> Generator polynomial: x^64 + x^4 + x^3 + x + 1
>> Polynomial value: 0x000000000000001b
>>
>
> How will this code be used? WIthout a user of the crc64-iso crypto API
> algorithm, there is no point in having a driver that implements it.

Thanks for the review.

MCRC64 will be used to check the integrity of memory blocks.
On TI K3 SOCs, users can use MCRC64 to accelerate the integrity check.

>
> Also, *if* such a user exists, we'd need to have a generic C
> implementation as well - we don't add new algorithms unless they can
> be enabled on all platforms and architectures.

If it is must, will implement generic C code.

>
>
>> Tested with
>>
>> and tcrypt,
>> sudo modprobe tcrypt mode=329 sec=1
>>
>> Signed-off-by: Kamlesh Gurudasani <[email protected]>
>> ---
>> Kamlesh Gurudasani (5):
>> crypto: crc64 - add crc64-iso test vectors
>> dt-bindings: crypto: Add binding for TI MCRC64 driver
>> crypto: ti - add driver for MCRC64 engine
>> arm64: dts: ti: k3-am62: Add dt node, cbass_main ranges for MCRC64
>> arm64: defconfig: enable MCRC module
>>
>> Documentation/devicetree/bindings/crypto/ti,mcrc64.yaml | 42 +++++++
>> MAINTAINERS | 7 ++
>> arch/arm64/boot/dts/ti/k3-am62-main.dtsi | 7 ++
>> arch/arm64/boot/dts/ti/k3-am62.dtsi | 1 +
>> arch/arm64/configs/defconfig | 2 +
>> crypto/tcrypt.c | 5 +
>> crypto/testmgr.c | 7 ++
>> crypto/testmgr.h | 401 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>> drivers/crypto/Kconfig | 1 +
>> drivers/crypto/Makefile | 1 +
>> drivers/crypto/ti/Kconfig | 10 ++
>> drivers/crypto/ti/Makefile | 2 +
>> drivers/crypto/ti/mcrc64.c | 360 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>> 13 files changed, 846 insertions(+)
>> ---
>> base-commit: d7b3af5a77e8d8da28f435f313e069aea5bcf172
>> change-id: 20230719-mcrc-upstream-7ae9a75cab37
>>
>> Best regards,
>> --
>> Kamlesh Gurudasani <[email protected]>
>>