From: Linus Walleij <linus.walleij@linaro.org>
To: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Lionel Debieve <lionel.debieve@foss.st.com>,
Li kunyu <kunyu@nfschina.com>,
davem@davemloft.net, linux-arm-kernel@lists.infradead.org,
linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-stm32@st-md-mailman.stormreply.com,
mcoquelin.stm32@gmail.com
Subject: Re: [v2 PATCH] crypto: stm32 - Save and restore between each request
Date: Sat, 25 Feb 2023 01:01:46 +0100 [thread overview]
Message-ID: <CACRpkdZe3cMMxJesD0mpqHTwvuWHjSGVHsiFUQQyuA+VWknMTQ@mail.gmail.com> (raw)
In-Reply-To: <Y/hQdzsKMYgkIfMY@gondor.apana.org.au>
Hi Herbert,
I tested this on the Ux500 and sadly this happens
already in probe():
[ 2.802539] stm32-hash a03c2000.hash: dma-maxburst not specified, using 0
[ 2.809342] stm32-hash a03c2000.hash: No IRQ, use polling mode
[ 2.815226] stm32-hash a03c2000.hash: DMA mode not available
[ 2.821140] stm32-hash a03c2000.hash: will run requests pump with
realtime priority
[ 2.828815] stm32-hash a03c2000.hash: Algo 0 : 0 failed
[ 2.834144] stm32-hash: probe of a03c2000.hash failed with error -22
I don't quite understand why, we never get to the tests...
On Fri, Feb 24, 2023 at 6:52 AM Herbert Xu <herbert@gondor.apana.org.au> wrote:
> v2 fixes potential state clobbering from the disconnect between
> hdev->flags and rctx->flags.
>
> ---8<---
> The Crypto API hashing paradigm requires the hardware state to
> be exported between *each* request because multiple unrelated
> hashes may be processed concurrently.
>
> The stm32 hardware is capable of producing the hardware hashing
> state but it was only doing it in the export function. This is
> not only broken for export as you can't export a kernel pointer
> and reimport it, but it also means that concurrent hashing was
> fundamentally broken.
>
> Fix this by moving the saving and restoring of hardware hash
> state between each and every hashing request.
>
> Fixes: 8a1012d3f2ab ("crypto: stm32 - Support for STM32 HASH module")
> Reported-by: Li kunyu <kunyu@nfschina.com>
> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
I think I understand the direction of the patch but it seems
the pm_runtime_* calls get unbalanced since now this is taken
in
stm32_hash_one_request
-> stm32_hash_hw_init()
-> pm_runtime_get_sync()
But no corresponding
pm_runtime_mark_last_busy(hdev->dev);
pm_runtime_put_autosuspend(hdev->dev);
Exist anymore? You know the semantics better than me,
I'm not sure where to put this, I guess where you save
the HW state in stm32_hash_update_cpu()?
I don't know about the DMA case then though.
Yours,
Linus Walleij
next prev parent reply other threads:[~2023-02-25 0:02 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-24 21:50 [PATCH] stm32: stm32-hash: Add kmalloc_array allocation check Li kunyu
2023-02-23 6:00 ` Herbert Xu
2023-02-24 23:14 ` Li kunyu
2023-02-23 9:33 ` Herbert Xu
2023-02-23 9:52 ` Linus Walleij
2023-02-23 10:10 ` [PATCH] crypto: stm32 - Save and restore between each request Herbert Xu
2023-02-24 5:51 ` [v2 PATCH] " Herbert Xu
2023-02-25 0:01 ` Linus Walleij [this message]
2023-02-25 2:26 ` Li kunyu
2023-02-25 23:15 ` Linus Walleij
2023-02-27 10:39 ` [v3 " Herbert Xu
2023-02-27 21:17 ` Linus Walleij
2023-02-27 21:28 ` Linus Walleij
2023-02-28 8:58 ` Herbert Xu
2023-02-28 9:12 ` Herbert Xu
2023-02-28 9:23 ` Herbert Xu
2023-02-28 9:48 ` [v4 " Herbert Xu
2023-02-28 20:50 ` Linus Walleij
2023-03-01 1:30 ` Herbert Xu
2023-03-01 1:36 ` Herbert Xu
2023-03-01 1:46 ` Herbert Xu
2023-03-01 12:22 ` Linus Walleij
2023-03-02 1:16 ` Herbert Xu
2023-03-02 6:04 ` Herbert Xu
2023-03-04 9:34 ` [v5 PATCH 0/7] " Herbert Xu
2023-03-04 9:37 ` [v5 PATCH 1/7] crypto: stm32 - Save 54 CSR registers Herbert Xu
2023-03-05 21:48 ` Linus Walleij
2023-03-04 9:37 ` [v5 PATCH 2/7] crypto: stm32 - Move polling into do_one_request Herbert Xu
2023-03-05 21:51 ` Linus Walleij
2023-03-04 9:37 ` [v5 PATCH 3/7] crypto: stm32 - Simplify finup Herbert Xu
2023-03-05 22:08 ` Linus Walleij
2023-03-06 4:37 ` Herbert Xu
2023-03-04 9:37 ` [v5 PATCH 4/7] crypto: stm32 - Remove unused hdev->err field Herbert Xu
2023-03-05 22:11 ` Linus Walleij
2023-03-04 9:37 ` [v5 PATCH 5/7] crypto: stm32 - Move hash state into separate structure Herbert Xu
2023-03-04 9:37 ` [v5 PATCH 6/7] crypto: stm32 - Remove unused HASH_FLAGS_ERRORS Herbert Xu
2023-03-04 9:37 ` [v5 PATCH 7/7] crypto: stm32 - Save and restore between each request Herbert Xu
2023-03-06 4:41 ` [v6 PATCH 0/7] " Herbert Xu
2023-03-06 4:41 ` [v5 PATCH 1/7] crypto: stm32 - Save 54 CSR registers Herbert Xu
2023-03-06 4:42 ` [v5 PATCH 2/7] crypto: stm32 - Move polling into do_one_request Herbert Xu
2023-03-06 4:42 ` [v5 PATCH 3/7] crypto: stm32 - Simplify finup Herbert Xu
2023-03-06 8:28 ` Linus Walleij
2023-03-06 4:42 ` [v5 PATCH 4/7] crypto: stm32 - Remove unused hdev->err field Herbert Xu
2023-03-06 4:42 ` [v5 PATCH 5/7] crypto: stm32 - Move hash state into separate structure Herbert Xu
2023-03-06 9:59 ` Linus Walleij
2023-03-06 4:42 ` [v5 PATCH 6/7] crypto: stm32 - Remove unused HASH_FLAGS_ERRORS Herbert Xu
2023-03-06 10:01 ` Linus Walleij
2023-03-06 4:42 ` [v5 PATCH 7/7] crypto: stm32 - Save and restore between each request Herbert Xu
2023-03-06 10:08 ` Linus Walleij
2023-03-07 10:10 ` Herbert Xu
2023-03-07 15:31 ` Linus Walleij
2023-03-08 3:23 ` Herbert Xu
2023-03-08 3:40 ` Herbert Xu
2023-03-08 3:52 ` Herbert Xu
2023-03-08 9:05 ` Linus Walleij
2023-03-08 9:13 ` Herbert Xu
2023-03-08 10:10 ` Herbert Xu
2023-03-08 10:19 ` Herbert Xu
2023-03-08 21:19 ` Linus Walleij
2023-03-09 5:58 ` Herbert Xu
2023-03-09 7:35 ` Linus Walleij
2023-03-09 9:59 ` Herbert Xu
2023-03-09 22:19 ` David Laight
2023-03-10 8:07 ` Linus Walleij
2023-03-07 13:55 ` [v6 PATCH 0/7] " lionel.debieve
2023-03-08 3:46 ` Herbert Xu
2023-03-11 9:08 ` [v7 PATCH 0/8] " Herbert Xu
2023-03-11 9:09 ` [v7 PATCH 1/8] crypto: stm32 - Save 54 CSR registers Herbert Xu
2023-03-11 9:09 ` [v7 PATCH 2/8] crypto: stm32 - Move polling into do_one_request Herbert Xu
2023-03-11 9:09 ` [v7 PATCH 3/8] crypto: stm32 - Simplify finup Herbert Xu
2023-03-11 9:09 ` [v7 PATCH 4/8] crypto: stm32 - Remove unused hdev->err field Herbert Xu
2023-03-11 9:09 ` [v7 PATCH 5/8] crypto: stm32 - Move hash state into separate structure Herbert Xu
2023-03-11 9:09 ` [v7 PATCH 6/8] crypto: stm32 - Remove unused HASH_FLAGS_ERRORS Herbert Xu
2023-03-11 9:09 ` [v7 PATCH 7/8] crypto: stm32 - Fix empty message processing Herbert Xu
2023-03-11 21:44 ` Linus Walleij
2023-03-11 9:09 ` [v7 PATCH 8/8] crypto: stm32 - Save and restore between each request Herbert Xu
2023-03-11 21:45 ` Linus Walleij
[not found] ` <e7cd1e8b-9ebc-ff6d-a8c4-1ccd11df6de1@foss.st.com>
2023-03-28 3:58 ` [Linux-stm32] " Herbert Xu
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=CACRpkdZe3cMMxJesD0mpqHTwvuWHjSGVHsiFUQQyuA+VWknMTQ@mail.gmail.com \
--to=linus.walleij@linaro.org \
--cc=davem@davemloft.net \
--cc=herbert@gondor.apana.org.au \
--cc=kunyu@nfschina.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-stm32@st-md-mailman.stormreply.com \
--cc=lionel.debieve@foss.st.com \
--cc=mcoquelin.stm32@gmail.com \
/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).