Re: Locking for HW crypto accelerators
From: Krzysztof Kozlowski <krzk@kernel.org>
Date: 2018-08-30 14:00:07
Also in:
linux-crypto
On Thu, 30 Aug 2018 at 15:27, Kamil Konieczny [off-list ref] wrote:
On 30.08.2018 15:09, Krzysztof Kozlowski wrote:quoted
[...] Thanks Stephan for hints. Let's assume the each of init, update and final are atomic... but how about the relation between update and final? I have two concurrent users in user-space but only one HW: Process A: Process B: init() and set_key() init() and different key update(some_data) update(different_data) final() final() The final() from process A will now produce the result of hashing/CRC of some_data and different_data (and even maybe mixed with init() for different key). All because in the meantime process B added its own data to the HW. Best regards, KrzysztofCan your hardware do export/import ? If yes, you can use workqueue and guard HW with spinlock, as in exynos hash in s5p-sss.c (or see other drivers).
Yes, workqueue doing all necessary HW initialization would be the solution here as well. The point is what later Herbert wrote - I need to take care about the HW state because the requests even for shash will be coming in random order. Best regards, Krzysztof