From: Richard Henderson <richard.henderson@xxxxxxxxxx> 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