This is v8, rebased to avoid a conflict with 8d5d515a0fb ("build: chardev is only needed for softmmu targets"), which affected patch 2.
Daniel and Laurent gave me acks for issuing a pull request touching their subsystems. The reasonable thing seemed to be to put those into the log for the signed tag itself. r~ The following changes since commit a4f667b6714916683408b983cfe0a615a725775f: Merge remote-tracking branch 'remotes/cohuck/tags/s390x-20190521-3' into staging (2019-05-21 16:30:13 +0100) are available in the Git repository at: https://github.com/rth7680/qemu.git tags/pull-rng-20190522 for you to fetch changes up to 369fd5ca66810b2ddb16e23a497eabe59385eceb: target/i386: Implement CPUID_EXT_RDRAND (2019-05-22 12:38:54 -0400) ---------------------------------------------------------------- Introduce qemu_guest_getrandom. Use qemu_guest_getrandom in aspeed, nrf51, bcm2835, exynos4210 rng devices. Use qemu_guest_getrandom in target/ppc darn instruction. Support ARMv8.5-RNG extension. Support x86 RDRAND extension. Acked-by: Daniel P. Berrangé <berra...@redhat.com> Acked-by: Laurent Vivier <laur...@vivier.eu> ---------------------------------------------------------------- Richard Henderson (25): configure: Link test before auto-enabling crypto libraries build: Link user-only with crypto random number objects crypto: Reverse code blocks in random-platform.c crypto: Do not fail for EINTR during qcrypto_random_bytes crypto: Use O_CLOEXEC in qcrypto_random_init crypto: Use getrandom for qcrypto_random_bytes crypto: Change the qcrypto_random_bytes buffer type to void* ui/vnc: Split out authentication_failed ui/vnc: Use gcrypto_random_bytes for start_auth_vnc util: Add qemu_guest_getrandom and associated routines cpus: Initialize pseudo-random seeds for all guest cpus linux-user: Initialize pseudo-random seeds for all guest cpus linux-user: Call qcrypto_init if not using -seed linux-user: Use qemu_guest_getrandom_nofail for AT_RANDOM linux-user/aarch64: Use qemu_guest_getrandom for PAUTH keys linux-user: Remove srand call aspeed/scu: Use qemu_guest_getrandom_nofail hw/misc/nrf51_rng: Use qemu_guest_getrandom_nofail hw/misc/bcm2835_rng: Use qemu_guest_getrandom_nofail hw/misc/exynos4210_rng: Use qemu_guest_getrandom target/arm: Put all PAC keys into a structure target/arm: Implement ARMv8.5-RNG target/ppc: Use gen_io_start/end around DARN target/ppc: Use qemu_guest_getrandom for DARN target/i386: Implement CPUID_EXT_RDRAND Makefile | 4 +- Makefile.objs | 2 +- Makefile.target | 4 +- include/crypto/random.h | 2 +- include/qemu/guest-random.h | 68 +++++++++++++++++++++++ include/qom/cpu.h | 1 + linux-user/aarch64/target_syscall.h | 2 - target/arm/cpu.h | 17 ++++-- target/i386/helper.h | 2 + cpus.c | 9 ++++ crypto/random-gcrypt.c | 2 +- crypto/random-gnutls.c | 2 +- crypto/random-platform.c | 104 +++++++++++++++++++++--------------- hw/misc/aspeed_scu.c | 10 +--- hw/misc/bcm2835_rng.c | 32 +++++------ hw/misc/exynos4210_rng.c | 11 ++-- hw/misc/nrf51_rng.c | 4 +- linux-user/aarch64/cpu_loop.c | 25 +-------- linux-user/elfload.c | 8 ++- linux-user/main.c | 33 +++++++----- linux-user/syscall.c | 34 ++++++++++-- target/arm/cpu64.c | 1 + target/arm/helper.c | 64 ++++++++++++++++++---- target/arm/pauth_helper.c | 18 +++---- target/i386/cpu.c | 5 +- target/i386/int_helper.c | 21 ++++++++ target/i386/translate.c | 62 +++++++++++++++------ target/ppc/int_helper.c | 39 +++++++++----- target/ppc/translate.c | 21 +++++--- ui/vnc.c | 53 ++++++++---------- util/guest-random.c | 93 ++++++++++++++++++++++++++++++++ vl.c | 4 ++ configure | 87 ++++++++++++++++++++---------- crypto/Makefile.objs | 11 ++-- qemu-options.hx | 10 ++++ util/Makefile.objs | 1 + 36 files changed, 610 insertions(+), 256 deletions(-) create mode 100644 include/qemu/guest-random.h create mode 100644 util/guest-random.c