linux/arch/x86
Jason A. Donenfeld d349ab99ee random: handle archrandom with multiple longs
The archrandom interface was originally designed for x86, which supplies
RDRAND/RDSEED for receiving random words into registers, resulting in
one function to generate an int and another to generate a long. However,
other architectures don't follow this.

On arm64, the SMCCC TRNG interface can return between one and three
longs. On s390, the CPACF TRNG interface can return arbitrary amounts,
with four longs having the same cost as one. On UML, the os_getrandom()
interface can return arbitrary amounts.

So change the api signature to take a "max_longs" parameter designating
the maximum number of longs requested, and then return the number of
longs generated.

Since callers need to check this return value and loop anyway, each arch
implementation does not bother implementing its own loop to try again to
fill the maximum number of longs. Additionally, all existing callers
pass in a constant max_longs parameter. Taken together, these two things
mean that the codegen doesn't really change much for one-word-at-a-time
platforms, while performance is greatly improved on platforms such as
s390.

Acked-by: Heiko Carstens <hca@linux.ibm.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Acked-by: Michael Ellerman <mpe@ellerman.id.au>
Acked-by: Borislav Petkov <bp@suse.de>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2022-07-25 13:26:14 +02:00
..
boot x86/compressed/64: Add identity mappings for setup_data entries 2022-07-06 11:23:39 +02:00
coco x86/tdx: Handle load_unaligned_zeropad() page-cross to a shared page 2022-06-17 15:37:33 -07:00
configs x86/config: Make the x86 defconfigs a bit more usable 2022-03-27 20:58:35 +02:00
crypto crypto: x86 - eliminate anonymous module_init & module_exit 2022-04-08 16:13:31 +08:00
entry x86/entry: Move PUSH_AND_CLEAR_REGS() back into error_entry 2022-07-07 13:39:42 +02:00
events Two small perf updates: 2022-06-05 10:40:31 -07:00
hyperv x86/Hyper-V: Add SEV negotiate protocol support in Isolation VM 2022-06-15 18:27:40 +00:00
ia32 x86: Remove a.out support 2022-04-11 18:04:27 +02:00
include random: handle archrandom with multiple longs 2022-07-25 13:26:14 +02:00
kernel random: handle archrandom with multiple longs 2022-07-25 13:26:14 +02:00
kvm KVM: emulate: do not adjust size of fastop and setcc subroutines 2022-07-15 07:49:40 -04:00
lib x86/retbleed: Add fine grained Kconfig knobs 2022-06-29 17:43:41 +02:00
math-emu x86/32: Remove lazy GS macros 2022-04-14 14:09:43 +02:00
mm objtool: Update Retpoline validation 2022-06-27 10:33:59 +02:00
net x86/bpf: Use alternative RET encoding 2022-06-27 10:33:58 +02:00
pci x86/PCI: Revert "x86/PCI: Clip only host bridge windows for E820 regions" 2022-06-17 14:24:14 -05:00
platform efi/x86: use naked RET on mixed mode call wrapper 2022-07-16 09:51:24 -07:00
power x86/cpu: Load microcode during restore_processor_state() 2022-04-19 19:37:05 +02:00
purgatory
ras
realmode Intel Trust Domain Extensions 2022-05-23 17:51:12 -07:00
tools
um um: Fix out-of-bounds read in LDT setup 2022-05-27 09:03:41 +02:00
video
virt/vmx/tdx x86/tdx: Provide common base for SEAMCALL and TDCALL C wrappers 2022-04-07 08:27:50 -07:00
xen Just when you thought that all the speculation bugs were addressed and 2022-07-11 18:15:25 -07:00
.gitignore
Kbuild
Kconfig random: remove CONFIG_ARCH_RANDOM 2022-07-18 15:03:37 +02:00
Kconfig.assembler
Kconfig.cpu
Kconfig.debug x86/Kconfig: Fix indentation of arch/x86/Kconfig.debug 2022-05-25 15:39:27 +02:00
Makefile x86/retbleed: Add fine grained Kconfig knobs 2022-06-29 17:43:41 +02:00
Makefile_32.cpu
Makefile.um