From: Richard Henderson <[email protected]>
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
--
2.17.1