[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <trinity-a0ee3146-f23d-4f6c-b29c-5fe446c4d4ad-1699797868421@3c-app-gmx-bs50>
Date: Sun, 12 Nov 2023 15:04:28 +0100
From: Frank Wunderlich <frank-w@...lic-files.de>
To: Corentin Labbe <clabbe@...libre.com>
Cc: davem@...emloft.net, heiko@...ech.de, herbert@...dor.apana.org.au,
krzysztof.kozlowski+dt@...aro.org, mturquette@...libre.com,
p.zabel@...gutronix.de, robh+dt@...nel.org, sboyd@...nel.org,
ricardo@...dini.net, devicetree@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org, linux-clk@...r.kernel.org,
linux-crypto@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-rockchip@...ts.infradead.org,
Corentin Labbe <clabbe@...libre.com>
Subject: Aw: [PATCH 6/6] crypto: rockchip: add rk3588 driver
Hi Corentin
thanks for working on it
> Gesendet: Dienstag, 07. November 2023 um 16:55 Uhr
> Von: "Corentin Labbe" <clabbe@...libre.com>
> An: davem@...emloft.net, heiko@...ech.de, herbert@...dor.apana.org.au, krzysztof.kozlowski+dt@...aro.org, mturquette@...libre.com, p.zabel@...gutronix.de, robh+dt@...nel.org, sboyd@...nel.org
> Cc: ricardo@...dini.net, devicetree@...r.kernel.org, linux-arm-kernel@...ts.infradead.org, linux-clk@...r.kernel.org, linux-crypto@...r.kernel.org, linux-kernel@...r.kernel.org, linux-rockchip@...ts.infradead.org, "Corentin Labbe" <clabbe@...libre.com>
> 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 <clabbe@...libre.com>
> ---
> 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/
> + 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@...-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@...-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@...-r2pro:~# kcapi-rng -b 512 > rng.bin
root@...-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@...-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
regards Frank
Powered by blists - more mailing lists