2023-11-20 12:48:44

by Corentin LABBE

[permalink] [raw]
Subject: Re: Aw: [PATCH 6/6] crypto: rockchip: add rk3588 driver

Le Sun, Nov 12, 2023 at 03:04:28PM +0100, Frank Wunderlich a ?crit :
> Hi Corentin
>
> thanks for working on it
>
> > Gesendet: Dienstag, 07. November 2023 um 16:55 Uhr
> > Von: "Corentin Labbe" <[email protected]>
> > An: [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]
> > Cc: [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], "Corentin Labbe" <[email protected]>
> > Betreff: [PATCH 6/6] crypto: rockchip: add rk3588 driver
> >
> > RK3588 have a new crypto IP, this patch adds basic support for it.
> > Only hashes and cipher are handled for the moment.
> >
> > Signed-off-by: Corentin Labbe <[email protected]>
> > ---
> > drivers/crypto/Kconfig | 29 +
> > drivers/crypto/rockchip/Makefile | 5 +
> > drivers/crypto/rockchip/rk2_crypto.c | 739 ++++++++++++++++++
> > drivers/crypto/rockchip/rk2_crypto.h | 246 ++++++
> > drivers/crypto/rockchip/rk2_crypto_ahash.c | 344 ++++++++
> > drivers/crypto/rockchip/rk2_crypto_skcipher.c | 576 ++++++++++++++
> > 6 files changed, 1939 insertions(+)
> > create mode 100644 drivers/crypto/rockchip/rk2_crypto.c
> > create mode 100644 drivers/crypto/rockchip/rk2_crypto.h
> > create mode 100644 drivers/crypto/rockchip/rk2_crypto_ahash.c
> > create mode 100644 drivers/crypto/rockchip/rk2_crypto_skcipher.c
> >
> > diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig
> > index 79c3bb9c99c3..b6a2027b1f9a 100644
> > --- a/drivers/crypto/Kconfig
> > +++ b/drivers/crypto/Kconfig
> > @@ -660,6 +660,35 @@ config CRYPTO_DEV_ROCKCHIP_DEBUG
> > the number of requests per algorithm and other internal stats.
> >
> >
> > +config CRYPTO_DEV_ROCKCHIP2
> > + tristate "Rockchip's cryptographic offloader V2"
> > + depends on OF && ARCH_ROCKCHIP
> > + depends on PM
>
> it should depend on CONFIG_CRYPTO_DEV_ROCKCHIP as rockchip folder is not included without it
>
> drivers/crypto/Makefile
> obj-$(CONFIG_CRYPTO_DEV_ROCKCHIP) += rockchip/
>

Hello

I will move all rockchip kconfig in the rockchip directory like I did for Allwinner, this will fix this.

> > + select CRYPTO_ECB
> > + select CRYPTO_CBC
> > + select CRYPTO_AES
> > + select CRYPTO_MD5
> > + select CRYPTO_SHA1
> > + select CRYPTO_SHA256
> > + select CRYPTO_SHA512
> > + select CRYPTO_SM3_GENERIC
> > + select CRYPTO_HASH
> > + select CRYPTO_SKCIPHER
> > + select CRYPTO_ENGINE
> > +
> > + help
> > + This driver interfaces with the hardware crypto offloader present
> > + on RK3566, RK3568 and RK3588.
> > +
> > +config CRYPTO_DEV_ROCKCHIP2_DEBUG
> > + bool "Enable Rockchip V2 crypto stats"
> > + depends on CRYPTO_DEV_ROCKCHIP2
> > + depends on DEBUG_FS
> > + help
> > + Say y to enable Rockchip crypto debug stats.
> > + This will create /sys/kernel/debug/rk3588_crypto/stats for displaying
> > + the number of requests per algorithm and other internal stats.
> > +
> > config CRYPTO_DEV_ZYNQMP_AES
> > tristate "Support for Xilinx ZynqMP AES hw accelerator"
> > depends on ZYNQMP_FIRMWARE || COMPILE_TEST
> > diff --git a/drivers/crypto/rockchip/Makefile b/drivers/crypto/rockchip/Makefile
> > index 785277aca71e..452a12ff6538 100644
>
> else i did some tests, but it does not seem that the offloader is used (requests stay at initial value after the bootup test)
>
> i wonder about the last 3 lines in dmesg (fallback), seems i miss something for these.
>
> root@bpi-r2pro:~# dmesg | grep crypto
> [ 0.150643] alg: extra crypto tests enabled. This is intended for developer use only.
> [ 2.718110] rk2-crypto fe380000.crypto: will run requests pump with realtime priority
> [ 2.720605] rk2-crypto fe380000.crypto: Registers crypto algos
> [ 2.721910] rk2-crypto fe380000.crypto: Register ecb(aes) as ecb-aes-rk2
> [ 2.724435] rk2-crypto fe380000.crypto: Register cbc(aes) as cbc-aes-rk2
> [ 2.725072] rk2-crypto fe380000.crypto: Register xts(aes) as xts-aes-rk2
> [ 2.725731] rk2-crypto fe380000.crypto: Register md5 as rk2-md5 3
> [ 2.726310] rk2-crypto fe380000.crypto: Register sha1 as rk2-sha1 4
> [ 2.726901] rk2-crypto fe380000.crypto: Register sha256 as rk2-sha256 5
> [ 2.727521] rk2-crypto fe380000.crypto: Register sha384 as rk2-sha384 6
> [ 2.728142] rk2-crypto fe380000.crypto: Register sha512 as rk2-sha512 7
> [ 2.728763] rk2-crypto fe380000.crypto: Register sm3 as rk2-sm3 8
> [ 3.502442] rk2-crypto fe380000.crypto: Fallback for xts-aes-rk2 is xts-aes-ce
> [ 3.770678] rk2-crypto fe380000.crypto: Fallback for cbc-aes-rk2 is cbc-aes-ce
> [ 3.939055] rk2-crypto fe380000.crypto: Fallback for ecb-aes-rk2 is ecb-aes-ce
>
> root@bpi-r2pro:~# cat /sys/kernel/debug/rk2_crypto/stats
> rk2-crypto fe380000.crypto requests: 581
> ecb-aes-rk2 ecb(aes) reqs=132 fallback=1994
> fallback due to length: 342
> fallback due to alignment: 1648
> fallback due to SGs: 0
> cbc-aes-rk2 cbc(aes) reqs=156 fallback=2182
> fallback due to length: 329
> fallback due to alignment: 1841
> fallback due to SGs: 6
> xts-aes-rk2 xts(aes) reqs=137 fallback=2143
> fallback due to length: 116
> fallback due to alignment: 739
> fallback due to SGs: 0
> rk2-md5 md5 reqs=14 fallback=739
> rk2-sha1 sha1 reqs=28 fallback=716
> rk2-sha256 sha256 reqs=25 fallback=654
> rk2-sha384 sha384 reqs=32 fallback=656
> rk2-sha512 sha512 reqs=34 fallback=638
> rk2-sm3 sm3 reqs=23 fallback=712
> root@bpi-r2pro:~# kcapi-rng -b 512 > rng.bin
> root@bpi-r2pro:~# cat /sys/kernel/debug/rk2_crypto/stats
> rk2-crypto fe380000.crypto requests: 581
> ecb-aes-rk2 ecb(aes) reqs=132 fallback=1994
> fallback due to length: 342
> fallback due to alignment: 1648
> fallback due to SGs: 0
> cbc-aes-rk2 cbc(aes) reqs=156 fallback=2182
> fallback due to length: 329
> fallback due to alignment: 1841
> fallback due to SGs: 6
> xts-aes-rk2 xts(aes) reqs=137 fallback=2143
> fallback due to length: 116
> fallback due to alignment: 739
> fallback due to SGs: 0
> rk2-md5 md5 reqs=14 fallback=739
> rk2-sha1 sha1 reqs=28 fallback=716
> rk2-sha256 sha256 reqs=25 fallback=654
> rk2-sha384 sha384 reqs=32 fallback=656
> rk2-sha512 sha512 reqs=34 fallback=638
> rk2-sm3 sm3 reqs=23 fallback=712
> root@bpi-r2pro:~#
>
> if needed this is my current defconfig/tree:
>
> https://github.com/frank-w/BPI-Router-Linux/blob/6.6-r2pro2/arch/arm64/configs/quartz64_defconfig#L924
>

You are using kcapi-rng but the driver do not support RNG yet. (and probably never if I continue to fail having good results with it).
So it is normal values does not change.

Thanks for your test
Regards


2023-11-24 15:09:00

by Frank Wunderlich

[permalink] [raw]
Subject: Aw: Re: [PATCH 6/6] crypto: rockchip: add rk3588 driver

Hi

> Gesendet: Montag, 20. November 2023 um 13:48 Uhr
> Von: "Corentin LABBE" <[email protected]>

> You are using kcapi-rng but the driver do not support RNG yet. (and probably never if I continue to fail having good results with it).
> So it is normal values does not change.

which functions does the driver support atm? or how can i test correctly
(and which kernel options i need for this)?

regards Frank

2023-11-27 11:47:23

by Corentin LABBE

[permalink] [raw]
Subject: Re: Aw: Re: [PATCH 6/6] crypto: rockchip: add rk3588 driver

Le Fri, Nov 24, 2023 at 04:05:01PM +0100, Frank Wunderlich a ?crit :
> Hi
>
> > Gesendet: Montag, 20. November 2023 um 13:48 Uhr
> > Von: "Corentin LABBE" <[email protected]>
>
> > You are using kcapi-rng but the driver do not support RNG yet. (and probably never if I continue to fail having good results with it).
> > So it is normal values does not change.
>
> which functions does the driver support atm? or how can i test correctly
> (and which kernel options i need for this)?
>
> regards Frank

Hello

The driver handle AES(ECB CBC XTS) and hashes (MD5 SHAxxx and SM3)
For testing you need:
CONFIG_CRYPTO_MANAGER_DISABLES_TESTS is not set
CONFIG_CRYPTO_MANAGER_EXTRA_TESTS=y

Note that I have already got several report of random hashes tests failling, but I am near to have a reproducer.

Regards