hwrng: stm32 - put IP into RPM suspend on failure
BugLink: https://bugs.launchpad.net/bugs/2071621
[ Upstream commit da62ed5c019cc48648f37c7a07e6a56cf637a795 ]
In case of an irrecoverable failure, put the IP into RPM suspend
to avoid RPM imbalance. I did not trigger this case, but it seems
it should be done based on reading the code.
Fixes: b17bc6eb7c ("hwrng: stm32 - rework error handling in stm32_rng_read()")
Signed-off-by: Marek Vasut <marex@denx.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Manuel Diewald <manuel.diewald@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
This commit is contained in:
committed by
Stefan Bader
parent
f72a224270
commit
6711a39154
@@ -220,7 +220,8 @@ static int stm32_rng_read(struct hwrng *rng, void *data, size_t max, bool wait)
|
||||
if (err && i > RNG_NB_RECOVER_TRIES) {
|
||||
dev_err((struct device *)priv->rng.priv,
|
||||
"Couldn't recover from seed error\n");
|
||||
return -ENOTRECOVERABLE;
|
||||
retval = -ENOTRECOVERABLE;
|
||||
goto exit_rpm;
|
||||
}
|
||||
|
||||
continue;
|
||||
@@ -238,7 +239,8 @@ static int stm32_rng_read(struct hwrng *rng, void *data, size_t max, bool wait)
|
||||
if (err && i > RNG_NB_RECOVER_TRIES) {
|
||||
dev_err((struct device *)priv->rng.priv,
|
||||
"Couldn't recover from seed error");
|
||||
return -ENOTRECOVERABLE;
|
||||
retval = -ENOTRECOVERABLE;
|
||||
goto exit_rpm;
|
||||
}
|
||||
|
||||
continue;
|
||||
@@ -250,6 +252,7 @@ static int stm32_rng_read(struct hwrng *rng, void *data, size_t max, bool wait)
|
||||
max -= sizeof(u32);
|
||||
}
|
||||
|
||||
exit_rpm:
|
||||
pm_runtime_mark_last_busy((struct device *) priv->rng.priv);
|
||||
pm_runtime_put_sync_autosuspend((struct device *) priv->rng.priv);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user