kernel_optimize_test/arch/s390/kernel
Jason A. Donenfeld ed03a650fb s390/archrandom: simplify back to earlier design and initialize earlier
commit e4f74400308cb8abde5fdc9cad609c2aba32110c upstream.

s390x appears to present two RNG interfaces:
- a "TRNG" that gathers entropy using some hardware function; and
- a "DRBG" that takes in a seed and expands it.

Previously, the TRNG was wired up to arch_get_random_{long,int}(), but
it was observed that this was being called really frequently, resulting
in high overhead. So it was changed to be wired up to arch_get_random_
seed_{long,int}(), which was a reasonable decision. Later on, the DRBG
was then wired up to arch_get_random_{long,int}(), with a complicated
buffer filling thread, to control overhead and rate.

Fortunately, none of the performance issues matter much now. The RNG
always attempts to use arch_get_random_seed_{long,int}() first, which
means a complicated implementation of arch_get_random_{long,int}() isn't
really valuable or useful to have around. And it's only used when
reseeding, which means it won't hit the high throughput complications
that were faced before.

So this commit returns to an earlier design of just calling the TRNG in
arch_get_random_seed_{long,int}(), and returning false in arch_get_
random_{long,int}().

Part of what makes the simplification possible is that the RNG now seeds
itself using the TRNG at bootup. But this only works if the TRNG is
detected early in boot, before random_init() is called. So this commit
also causes that check to happen in setup_arch().

Cc: stable@vger.kernel.org
Cc: Harald Freudenberger <freude@linux.ibm.com>
Cc: Ingo Franzki <ifranzki@linux.ibm.com>
Cc: Juergen Christ <jchrist@linux.ibm.com>
Cc: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Link: https://lore.kernel.org/r/20220610222023.378448-1-Jason@zx2c4.com
Reviewed-by: Harald Freudenberger <freude@linux.ibm.com>
Acked-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-07-07 17:52:16 +02:00
..
syscalls mm/madvise: introduce process_madvise() syscall: an external memory hinting API 2020-10-18 09:27:10 -07:00
vdso64 Kbuild updates for v5.10 2020-10-22 13:13:57 -07:00
.gitignore
alternative.c
asm-offsets.c s390: fix fpu restore in entry.S 2020-11-23 11:52:13 +01:00
audit.c
audit.h
base.S
cache.c
compat_audit.c
compat_linux.c
compat_linux.h
compat_ptrace.h
compat_signal.c
cpcmd.c s390/cpcmd: fix inline assembly register clobbering 2021-04-14 08:42:10 +02:00
crash_dump.c s390/nvme: support firmware-assisted dump to NVMe disks 2020-10-02 14:40:48 +02:00
debug.c s390/debug: fix debug area life cycle 2021-09-15 09:50:27 +02:00
diag.c s390/diag: convert to use DEFINE_SEQ_ATTRIBUTE macro 2020-09-17 14:11:03 +02:00
dis.c s390/disassembler: increase ebpf disasm buffer size 2021-05-11 14:47:11 +02:00
dumpstack.c
early_printk.c s390/sclp: remove unused sclp_early_printk_forced 2020-09-21 08:08:44 +02:00
early.c s390: make PCI mio support a machine flag 2021-09-18 13:40:22 +02:00
ebcdic.c
entry.h s390 updates for the 5.10 merge window 2020-10-16 12:36:38 -07:00
entry.S s390/mcck: fix calculation of SIE critical section size 2021-06-23 14:42:51 +02:00
fpu.c
ftrace.c s390/ftrace: fix ftrace_update_ftrace_func implementation 2021-07-28 14:35:42 +02:00
guarded_storage.c
head64.S
idle.c sched/idle: Fix arch_cpu_idle() vs tracing 2020-11-24 16:47:35 +01:00
ima_arch.c
ipl_vmparm.c
ipl.c s390/kexec: fix return code handling 2021-11-26 10:39:18 +01:00
irq.c
jump_label.c s390/jump_label: print real address in a case of a jump label bug 2021-09-18 13:40:22 +02:00
kdebugfs.c
kexec_elf.c
kexec_image.c
kprobes_insn_page.S s390/kprobes: move insn_page to text segment 2020-10-09 23:45:30 +02:00
kprobes.c s390 updates for the 5.10 merge window 2020-10-16 12:36:38 -07:00
lgr.c
machine_kexec_file.c s390/kexec_file: fix error handling when applying relocations 2021-12-22 09:30:53 +01:00
machine_kexec_reloc.c
machine_kexec.c mm: remove unneeded includes of <asm/pgalloc.h> 2020-08-07 11:33:26 -07:00
Makefile s390/kprobes: move insn_page to text segment 2020-10-09 23:45:30 +02:00
mcount.S s390/ftrace: fix ftrace_update_ftrace_func implementation 2021-07-28 14:35:42 +02:00
module.c s390/module: fix loading modules with a lot of relocations 2022-02-01 17:25:38 +01:00
nmi.c
nospec-branch.c
nospec-sysfs.c
numa.c s390/numa: move code to arch/s390/kernel 2020-08-11 18:16:55 +02:00
os_info.c
perf_cpum_cf_common.c
perf_cpum_cf_diag.c
perf_cpum_cf_events.c s390/cpum_cf,perf: change DFLT_CCERROR counter name 2020-07-21 13:53:56 +02:00
perf_cpum_cf.c s390/cpumf: Handle events cycles and instructions identical 2022-06-29 08:59:50 +02:00
perf_cpum_sf.c - fix system call exit path; avoid return to user space with 2020-11-17 11:22:03 -08:00
perf_event.c s390/perf: obtain sie_block from the right address 2022-06-09 10:21:24 +02:00
perf_regs.c perf/arch: Remove perf_sample_data::regs_user_copy 2020-11-09 18:12:34 +01:00
pgm_check.S s390: add 3f program exception handler 2020-09-14 10:08:07 +02:00
process.c Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2020-08-09 13:33:54 -07:00
processor.c
ptrace.c s390/ptrace: fix storage key handling 2020-08-17 13:17:14 +02:00
reipl.S
relocate_kernel.S
runtime_instr.c s390/runtime_instrumentation: fix storage key handling 2020-08-17 13:17:10 +02:00
setup.c s390/archrandom: simplify back to earlier design and initialize earlier 2022-07-07 17:52:16 +02:00
signal.c tracehook: clear TIF_NOTIFY_RESUME in tracehook_notify_resume() 2020-10-17 15:04:36 -06:00
smp.c s390: preempt: Fix preempt_count initialization 2021-07-14 16:56:54 +02:00
stacktrace.c stacktrace: Remove reliable argument from arch_stack_walk() callback 2020-09-18 14:24:16 +01:00
sthyi.c
sys_s390.c
sysinfo.c
time.c s390/vdso: copy tod_steering_delta value to vdso_data page 2021-04-07 15:00:10 +02:00
topology.c
trace.c
traps.c s390/traps: do not test MONITOR CALL without CONFIG_BUG 2021-07-25 14:36:17 +02:00
unwind_bc.c
uprobes.c
uv.c s390: mm: Fix secure storage access exception handling 2021-07-14 16:55:43 +02:00
vdso.c s390: convert to GENERIC_VDSO 2020-08-26 18:47:21 +02:00
vmlinux.lds.S vmlinux.lds.h: Split ELF_DETAILS from STABS_DEBUG 2020-09-01 09:50:35 +02:00
vtime.c s390/vtime: fix increased steal time accounting 2021-03-25 09:04:05 +01:00