mbox series

[0/5] Add support for Texas Instruments MCRC64 engine

Message ID 20230719-mcrc-upstream-v1-0-dc8798a24c47@ti.com (mailing list archive)
Headers show
Series Add support for Texas Instruments MCRC64 engine | expand

Message

Kamlesh Gurudasani July 30, 2023, 6:55 p.m. UTC
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 <kamlesh@ti.com>
---
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,

Comments

Ard Biesheuvel July 31, 2023, 5:48 p.m. UTC | #1
On Sun, 30 Jul 2023 at 20:56, Kamlesh Gurudasani <kamlesh@ti.com> 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 <kamlesh@ti.com>
> ---
> 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 <kamlesh@ti.com>
>
Kamlesh Gurudasani Aug. 1, 2023, 6:22 a.m. UTC | #2
Ard Biesheuvel <ardb@kernel.org> writes:

> On Sun, 30 Jul 2023 at 20:56, Kamlesh Gurudasani <kamlesh@ti.com> 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 <kamlesh@ti.com>
>> ---
>> 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 <kamlesh@ti.com>
>>
Ard Biesheuvel Aug. 1, 2023, 6:42 a.m. UTC | #3
On Tue, 1 Aug 2023 at 08:22, Kamlesh Gurudasani <kamlesh@ti.com> wrote:
>
> Ard Biesheuvel <ardb@kernel.org> writes:
>
> > On Sun, 30 Jul 2023 at 20:56, Kamlesh Gurudasani <kamlesh@ti.com> 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.
>

Where is the implementation of this logic? Does it use the shash/ahash API?

If so, it should be part of this series.


> >
> > 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 <kamlesh@ti.com>
> >> ---
> >> 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 <kamlesh@ti.com>
> >>
Kamlesh Gurudasani Aug. 1, 2023, 7:02 a.m. UTC | #4
Ard Biesheuvel <ardb@kernel.org> writes:

> On Tue, 1 Aug 2023 at 08:22, Kamlesh Gurudasani <kamlesh@ti.com> wrote:
>>
>> Ard Biesheuvel <ardb@kernel.org> writes:
>>
>> > On Sun, 30 Jul 2023 at 20:56, Kamlesh Gurudasani <kamlesh@ti.com> 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.
>>
>
> Where is the implementation of this logic? Does it use the shash/ahash API?
>
> If so, it should be part of this series.

We have implemented user-space application to utilize crc64-iso using below kernel module

algif_hash: User-space interface for hash algorithms 

https://gist.github.com/ti-kamlesh/73abfcc1a33318bb3b199d36b6209e59

>
>
>> >
>> > 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 <kamlesh@ti.com>
>> >> ---
>> >> 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 <kamlesh@ti.com>
>> >>