mbox series

[v6,0/1] arm64: Implement archrandom.h for ARMv8.5-RNG

Message ID 20191113101151.13389-1-richard.henderson@linaro.org (mailing list archive)
Headers show
Series arm64: Implement archrandom.h for ARMv8.5-RNG | expand

Message

Richard Henderson Nov. 13, 2019, 10:11 a.m. UTC
From: Richard Henderson <richard.henderson@linaro.org>

Here's v6.  I believe I've collected all of the comments
from both Ard and Mark across v4 and v5, as well as from
the cafe in Lyon.

I had thought about using a simple function pointer for
arch_get_random_seed_long, but didn't see a good place
where I could update that at the end of boot.

Which lead me to ALTERNATIVE_CB, which is way overkill,
but is already part of the update infrastructure.

Tested with qemu -cpu {max,cortex-a57}, which covers both
sides of the alternative.  GDB breakpoints confirm that
boot_get_random_seed_long is what is called from rand_initialize,
and that this_cpu_has_cap returns the correct result.


r~


 Documentation/arm64/cpu-feature-registers.rst |  2 +
 arch/arm64/include/asm/archrandom.h           | 55 +++++++++++++++
 arch/arm64/include/asm/cpucaps.h              |  3 +-
 arch/arm64/include/asm/sysreg.h               |  4 ++
 arch/arm64/kernel/cpufeature.c                | 13 ++++
 arch/arm64/kernel/random.c                    | 67 +++++++++++++++++++
 arch/arm64/Kconfig                            | 12 ++++
 arch/arm64/kernel/Makefile                    |  1 +
 drivers/char/Kconfig                          |  4 +-
 9 files changed, 158 insertions(+), 3 deletions(-)
 create mode 100644 arch/arm64/include/asm/archrandom.h
 create mode 100644 arch/arm64/kernel/random.c