[PATCH 2/4] rng: msm: don't enable PRNG if it's already enabled
Neil Armstrong
neil.armstrong at linaro.org
Fri Jan 31 10:42:07 CET 2025
On 27/01/2025 08:49, Sam Day wrote:
> msm_rng_enable is supposed to skip writing to LFSR_CFG + CONFIG
> registers in the PRNG_ block if PRNG_CONFIG_HW_ENABLE is already set.
> The logic to test for this was inverted.
>
> Without this fix, the driver was causing SError aborts on my MSM8916
> device. Stephan Gerhold suggested this was probably because TZ has
> marked this as a protected register, since it would also be using it for
> RNG.
>
> Fixes: 033ec636fcb ("rng: Add Qualcomm MSM PRNG driver")
> Signed-off-by: Sam Day <me at samcday.com>
> ---
> drivers/rng/msm_rng.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/rng/msm_rng.c b/drivers/rng/msm_rng.c
> index f790d3b60f99bfc04ecd9acdd21405a8c38c257a..01505509103f28f7c91dd47edb83c23359163c82 100644
> --- a/drivers/rng/msm_rng.c
> +++ b/drivers/rng/msm_rng.c
> @@ -76,7 +76,7 @@ static int msm_rng_enable(struct msm_rng_priv *priv, int enable)
> if (enable) {
> /* Enable PRNG only if it is not already enabled */
> val = readl_relaxed(priv->base + PRNG_CONFIG);
> - if (val & PRNG_CONFIG_HW_ENABLE) {
> + if (!(val & PRNG_CONFIG_HW_ENABLE)) {
> val = readl_relaxed(priv->base + PRNG_LFSR_CFG);
> val &= ~PRNG_LFSR_CFG_MASK;
> val |= PRNG_LFSR_CFG_CLOCKS;
>
Good catch !
Reviewed-by: Neil Armstrong <neil.armstrong at linaro.org>
More information about the U-Boot
mailing list