diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2020-04-05 10:59:18 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2020-04-05 10:59:18 -0700 |
commit | 31c0aa87ec8a30b1e9e4cf862905a369560f7705 (patch) | |
tree | 0bdbff8a5adf82925fff819bd1d12a9696387a49 /arch/arm64/include | |
parent | 9c94b39560c3a013de5886ea21ef1eaf21840cb9 (diff) | |
parent | ab9a7e27044b87ff2be47b8f8e095400e7fccc44 (diff) | |
download | linux-31c0aa87ec8a30b1e9e4cf862905a369560f7705.tar.bz2 |
Merge tag 'random_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/random
Pull /dev/random updates from Ted Ts'o:
- Improve getrandom and /dev/random's support for those arm64
architecture variants that have RNG instructions.
- Use batched output from CRNG instead of CPU's RNG instructions for
better performance.
- Miscellaneous bug fixes.
* tag 'random_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/random:
random: avoid warnings for !CONFIG_NUMA builds
random: fix data races at timer_rand_state
random: always use batched entropy for get_random_u{32,64}
random: Make RANDOM_TRUST_CPU depend on ARCH_RANDOM
arm64: add credited/trusted RNG support
random: add arch_get_random_*long_early()
random: split primary/secondary crng init paths
Diffstat (limited to 'arch/arm64/include')
-rw-r--r-- | arch/arm64/include/asm/archrandom.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/arm64/include/asm/archrandom.h b/arch/arm64/include/asm/archrandom.h index 3fe02da70004..fc1594a0710e 100644 --- a/arch/arm64/include/asm/archrandom.h +++ b/arch/arm64/include/asm/archrandom.h @@ -4,6 +4,8 @@ #ifdef CONFIG_ARCH_RANDOM +#include <linux/bug.h> +#include <linux/kernel.h> #include <linux/random.h> #include <asm/cpufeature.h> @@ -66,6 +68,18 @@ static inline bool __init __early_cpu_has_rndr(void) return (ftr >> ID_AA64ISAR0_RNDR_SHIFT) & 0xf; } +static inline bool __init __must_check +arch_get_random_seed_long_early(unsigned long *v) +{ + WARN_ON(system_state != SYSTEM_BOOTING); + + if (!__early_cpu_has_rndr()) + return false; + + return __arm64_rndr(v); +} +#define arch_get_random_seed_long_early arch_get_random_seed_long_early + #else static inline bool __arm64_rndr(unsigned long *v) { return false; } |