[Qemu-devel] [PULL 00/25] Add qemu_getrandom and ARMv8.5-RNG etc

Richard Henderson posted 25 patches 4 years, 11 months ago
Test FreeBSD passed
Test docker-clang@ubuntu passed
Test s390x passed
Test docker-mingw@fedora passed
Test checkpatch passed
Test asan passed
Failed in applying to current master (apply log)
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
[Qemu-devel] [PULL 00/25] Add qemu_getrandom and ARMv8.5-RNG etc
Posted by Richard Henderson 4 years, 11 months ago
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é <berrange@redhat.com>
Acked-by: Laurent Vivier <laurent@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

Re: [Qemu-devel] [PULL 00/25] Add qemu_getrandom and ARMv8.5-RNG etc
Posted by Peter Maydell 4 years, 11 months ago
On Wed, 22 May 2019 at 19:42, Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> 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é <berrange@redhat.com>
> Acked-by: Laurent Vivier <laurent@vivier.eu>
>


Applied, thanks.

Please update the changelog at https://wiki.qemu.org/ChangeLog/4.1
for any user-visible changes.

-- PMM