Messages in this thread Patch in this message | | | Date | Fri, 11 Dec 2020 16:26:12 +0000 | From | Mark Brown <> | Subject | Re: [PATCH v4 4/5] arm64: Add support for SMCCC TRNG entropy source |
| |
On Fri, Dec 11, 2020 at 04:00:04PM +0000, Andre Przywara wrote:
> static inline bool __must_check arch_get_random_seed_long(unsigned long *v) > { > + struct arm_smccc_res res; > + > + /* > + * We prefer the SMCCC call, since its semantics (return actual > + * hardware backed entropy) is closer to the idea behind this > + * function here than what even the RNDRSS register provides > + * (the output of a pseudo RNG freshly seeded by a TRNG). > + */
This logic...
> @@ -77,10 +117,20 @@ arch_get_random_seed_long_early(unsigned long *v) > { > WARN_ON(system_state != SYSTEM_BOOTING); > > - if (!__early_cpu_has_rndr()) > - return false; > + if (__early_cpu_has_rndr()) > + return __arm64_rndr(v); > + > + if (smccc_trng_available) { > + struct arm_smccc_res res; > > - return __arm64_rndr(v); > + arm_smccc_1_1_invoke(ARM_SMCCC_TRNG_RND64, 64, &res); > + if ((int)res.a0 >= 0) { > + *v = res.a3; > + return true; > + } > + } > + > + return false;
...seems to also apply here but we prefer the RNDR instead of the SMCC. We probably want to either do the same thing or add a comment saying what's going on. [unhandled content-type:application/pgp-signature] | |