From: Klaus Heinrich Kiwi <klaus@linux.vnet.ibm.com>
To: Joel Stanley <joel@jms.id.au>,
openbmc@lists.ozlabs.org, Andrew Jeffery <andrew@aj.id.au>
Cc: "Cédric Le Goater" <clg@kaod.org>
Subject: Re: [PATCH u-boot v2019.04-aspeed-openbmc 07/11] hash: Allow for SHA512 hardware implementations
Date: Tue, 13 Apr 2021 09:51:16 -0300 [thread overview]
Message-ID: <38594b05-ae35-5df5-7503-70e6d717d91c@linux.vnet.ibm.com> (raw)
In-Reply-To: <20210413080755.73572-8-joel@jms.id.au>
On 4/13/2021 5:07 AM, Joel Stanley wrote:
> Similar to support for SHA1 and SHA256, allow the use of hardware hashing
> engine by enabling the algorithm and setting CONFIG_SHA_HW_ACCEL /
> CONFIG_SHA_PROG_HW_ACCEL.
>
> Signed-off-by: Joel Stanley <joel@jms.id.au>
> ---
> common/hash.c | 24 ++++++++++++++++++++++--
> include/hw_sha.h | 26 ++++++++++++++++++++++++++
> lib/Kconfig | 15 +++++++--------
> 3 files changed, 55 insertions(+), 10 deletions(-)
>
> diff --git a/common/hash.c b/common/hash.c
> index c00ec4d36c41..a19cba07d779 100644
> --- a/common/hash.c
> +++ b/common/hash.c
> @@ -86,7 +86,7 @@ static int hash_finish_sha256(struct hash_algo *algo, void *ctx, void
> }
> #endif
>
> -#if defined(CONFIG_SHA384)
> +#if defined(CONFIG_SHA384) && !defined(CONFIG_SHA_PROG_HW_ACCEL)
> static int hash_init_sha384(struct hash_algo *algo, void **ctxp)
> {
> sha512_context *ctx = malloc(sizeof(sha512_context));
> @@ -114,7 +114,7 @@ static int hash_finish_sha384(struct hash_algo *algo, void *ctx, void
> }
> #endif
>
> -#if defined(CONFIG_SHA512)
> +#if defined(CONFIG_SHA512) && !defined(CONFIG_SHA_PROG_HW_ACCEL)
> static int hash_init_sha512(struct hash_algo *algo, void **ctxp)
> {
> sha512_context *ctx = malloc(sizeof(sha512_context));
> @@ -249,10 +249,20 @@ static struct hash_algo hash_algo[] = {
> .name = "sha384",
> .digest_size = SHA384_SUM_LEN,
> .chunk_size = CHUNKSZ_SHA384,
> +#ifdef CONFIG_SHA_HW_ACCEL
> + .hash_func_ws = hw_sha384,
> +#else
> .hash_func_ws = sha384_csum_wd,
> +#endif
> +#ifdef CONFIG_SHA_PROG_HW_ACCEL
> + .hash_init = hw_sha_init,
> + .hash_update = hw_sha_update,
> + .hash_finish = hw_sha_finish,
> +#else
> .hash_init = hash_init_sha384,
> .hash_update = hash_update_sha384,
> .hash_finish = hash_finish_sha384,
> +#endif
> },
> #endif
> #ifdef CONFIG_SHA512
> @@ -260,10 +270,20 @@ static struct hash_algo hash_algo[] = {
> .name = "sha512",
> .digest_size = SHA512_SUM_LEN,
> .chunk_size = CHUNKSZ_SHA512,
> +#ifdef CONFIG_SHA_HW_ACCEL
> + .hash_func_ws = hw_sha512,
> +#else
> .hash_func_ws = sha512_csum_wd,
> +#endif
> +#ifdef CONFIG_SHA_PROG_HW_ACCEL
> + .hash_init = hw_sha_init,
> + .hash_update = hw_sha_update,
> + .hash_finish = hw_sha_finish,
> +#else
> .hash_init = hash_init_sha512,
> .hash_update = hash_update_sha512,
> .hash_finish = hash_finish_sha512,
> +#endif
> },
> #endif
> {
> diff --git a/include/hw_sha.h b/include/hw_sha.h
> index 991e496a3cb2..8cdf821218a0 100644
> --- a/include/hw_sha.h
> +++ b/include/hw_sha.h
> @@ -8,6 +8,32 @@
> #define __HW_SHA_H
> #include <hash.h>
>
> +/**
> + * Computes hash value of input pbuf using h/w acceleration
> + *
> + * @param in_addr A pointer to the input buffer
> + * @param bufleni Byte length of input buffer
> + * @param out_addr A pointer to the output buffer. When complete
> + * 64 bytes are copied to pout[0]...pout[63]. Thus, a user
> + * should allocate at least 64 bytes at pOut in advance.
> + * @param chunk_size chunk size for sha512
> + */
> +void hw_sha512(const uchar * in_addr, uint buflen,
> + uchar * out_addr, uint chunk_size);
> +
> +/**
> + * Computes hash value of input pbuf using h/w acceleration
> + *
> + * @param in_addr A pointer to the input buffer
> + * @param bufleni Byte length of input buffer
> + * @param out_addr A pointer to the output buffer. When complete
> + * 48 bytes are copied to pout[0]...pout[47]. Thus, a user
> + * should allocate at least 48 bytes at pOut in advance.
> + * @param chunk_size chunk size for sha384
> + */
> +void hw_sha384(const uchar * in_addr, uint buflen,
> + uchar * out_addr, uint chunk_size);
> +
> /**
> * Computes hash value of input pbuf using h/w acceleration
> *
> diff --git a/lib/Kconfig b/lib/Kconfig
> index 984a783fd16f..f77272d0a94a 100644
> --- a/lib/Kconfig
> +++ b/lib/Kconfig
> @@ -273,19 +273,18 @@ config SHA384
> config SHA_HW_ACCEL
> bool "Enable hashing using hardware"
> help
> - This option enables hardware acceleration
> - for SHA1/SHA256 hashing.
> - This affects the 'hash' command and also the
> - hash_lookup_algo() function.
> + This option enables hardware acceleration for SHA hashing.
> + This affects the 'hash' command and also the hash_lookup_algo()
> + function.
>
> config SHA_PROG_HW_ACCEL
> bool "Enable Progressive hashing support using hardware"
> depends on SHA_HW_ACCEL
> help
> - This option enables hardware-acceleration for
> - SHA1/SHA256 progressive hashing.
> - Data can be streamed in a block at a time and the hashing
> - is performed in hardware.
> + This option enables hardware-acceleration for SHA progressive
> + hashing.
> + Data can be streamed in a block at a time and the hashing is
> + performed in hardware.
>
> config MD5
> bool
>
Reviewed-by: Klaus Heinrich Kiwi <klaus@linux.vnet.ibm.com>
--
Klaus Heinrich Kiwi <klaus@linux.vnet.ibm.com>
next prev parent reply other threads:[~2021-04-13 12:51 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-13 8:07 [PATCH u-boot v2019.04-aspeed-openbmc 00/11] Use HACE to Joel Stanley
2021-04-13 8:07 ` [PATCH u-boot v2019.04-aspeed-openbmc 01/11] aspeed: Build secboot only when enabled Joel Stanley
2021-04-13 12:28 ` Klaus Heinrich Kiwi
2021-04-13 8:07 ` [PATCH u-boot v2019.04-aspeed-openbmc 02/11] ast2600: Specify boot order Joel Stanley
2021-04-14 11:17 ` Klaus Heinrich Kiwi
2021-04-13 8:07 ` [PATCH u-boot v2019.04-aspeed-openbmc 03/11] ast2600: Configure emmc boot options Joel Stanley
2021-04-13 8:07 ` [PATCH u-boot v2019.04-aspeed-openbmc 04/11] ast2600: spl: Support common boot devices Joel Stanley
2021-04-13 12:31 ` Klaus Heinrich Kiwi
2021-04-13 8:07 ` [PATCH u-boot v2019.04-aspeed-openbmc 05/11] config: ast2600: Enable common eMMC SPL loader Joel Stanley
2021-04-13 20:47 ` Klaus Heinrich Kiwi
2021-04-13 23:48 ` Joel Stanley
2021-04-13 8:07 ` [PATCH u-boot v2019.04-aspeed-openbmc 06/11] image-fit: use hashing infra Joel Stanley
2021-04-13 12:38 ` Klaus Heinrich Kiwi
2021-04-13 23:49 ` Joel Stanley
2021-04-13 8:07 ` [PATCH u-boot v2019.04-aspeed-openbmc 07/11] hash: Allow for SHA512 hardware implementations Joel Stanley
2021-04-13 12:51 ` Klaus Heinrich Kiwi [this message]
2021-04-13 8:07 ` [PATCH u-boot v2019.04-aspeed-openbmc 08/11] ast2600: Add HACE to device tree Joel Stanley
2021-04-13 20:43 ` Klaus Heinrich Kiwi
2021-04-13 8:07 ` [PATCH u-boot v2019.04-aspeed-openbmc 09/11] clk: aspeed: Add HACE yclk to ast2600 Joel Stanley
2021-04-13 20:42 ` Klaus Heinrich Kiwi
2021-04-13 8:07 ` [PATCH u-boot v2019.04-aspeed-openbmc 10/11] crypto: Add driver for Aspeed HACE Joel Stanley
2021-04-13 20:41 ` Klaus Heinrich Kiwi
2021-04-14 20:28 ` Klaus Heinrich Kiwi
2021-04-15 2:32 ` Joel Stanley
2021-04-15 21:37 ` Klaus Heinrich Kiwi
2021-04-19 12:49 ` Joel Stanley
2021-04-19 12:58 ` Klaus Heinrich Kiwi
2021-04-13 8:07 ` [PATCH u-boot v2019.04-aspeed-openbmc 11/11] configs/openbmc: Enable hw accelerated sha Joel Stanley
2021-04-13 20:42 ` Klaus Heinrich Kiwi
2021-04-14 21:03 ` Klaus Heinrich Kiwi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=38594b05-ae35-5df5-7503-70e6d717d91c@linux.vnet.ibm.com \
--to=klaus@linux.vnet.ibm.com \
--cc=andrew@aj.id.au \
--cc=clg@kaod.org \
--cc=joel@jms.id.au \
--cc=openbmc@lists.ozlabs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).