arm64: Implement archrandom.h for ARMv8.5-RNG
authorRichard Henderson <richard.henderson@linaro.org>
Tue, 21 Jan 2020 12:58:52 +0000 (12:58 +0000)
committerWill Deacon <will@kernel.org>
Wed, 22 Jan 2020 09:54:18 +0000 (09:54 +0000)
commit1a50ec0b3b2e9a83f1b1245ea37a853aac2f741c
tree14509c3a940e8c2072ff34ffef36d0c53c9905b6
parent46cf053efec6a3a5f343fead837777efe8252a46
arm64: Implement archrandom.h for ARMv8.5-RNG

Expose the ID_AA64ISAR0.RNDR field to userspace, as the RNG system
registers are always available at EL0.

Implement arch_get_random_seed_long using RNDR.  Given that the
TRNG is likely to be a shared resource between cores, and VMs,
do not explicitly force re-seeding with RNDRRS.  In order to avoid
code complexity and potential issues with hetrogenous systems only
provide values after cpufeature has finalized the system capabilities.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
[Modified to only function after cpufeature has finalized the system
capabilities and move all the code into the header -- broonie]
Signed-off-by: Mark Brown <broonie@kernel.org>
Reviewed-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
[will: Advertise HWCAP via /proc/cpuinfo]
Signed-off-by: Will Deacon <will@kernel.org>
Documentation/arm64/cpu-feature-registers.rst
Documentation/arm64/elf_hwcaps.rst
arch/arm64/Kconfig
arch/arm64/include/asm/archrandom.h [new file with mode: 0644]
arch/arm64/include/asm/cpucaps.h
arch/arm64/include/asm/hwcap.h
arch/arm64/include/asm/sysreg.h
arch/arm64/include/uapi/asm/hwcap.h
arch/arm64/kernel/cpufeature.c
arch/arm64/kernel/cpuinfo.c