[Qemu-devel] [PATCH v3 00/23] Add qemu_getrandom and ARMv8.5-RNG etc

Richard Henderson posted 23 patches 9 weeks ago
Test checkpatch passed
Test docker-clang@ubuntu passed
Test asan passed
Test docker-mingw@fedora passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20190315032629.21234-1-richard.henderson@linaro.org
Maintainers: David Gibson <david@gibson.dropbear.id.au>, Laurent Vivier <laurent@vivier.eu>, Riku Voipio <riku.voipio@iki.fi>, Paolo Bonzini <pbonzini@redhat.com>, Joel Stanley <joel@jms.id.au>, Peter Maydell <peter.maydell@linaro.org>, Richard Henderson <rth@twiddle.net>, Eduardo Habkost <ehabkost@redhat.com>, Igor Mitsyanko <i.mitsyanko@gmail.com>, Gerd Hoffmann <kraxel@redhat.com>
Makefile                            |  12 ++--
Makefile.objs                       |   8 +--
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                   |  34 +++++----
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             |  55 +++++++++++----
target/ppc/int_helper.c             |  38 +++++++---
ui/vnc.c                            |  53 ++++++--------
util/guest-random.c                 |  93 +++++++++++++++++++++++++
vl.c                                |   4 ++
configure                           |  27 ++++++--
crypto/Makefile.objs                |   5 +-
qemu-options.hx                     |  10 +++
util/Makefile.objs                  |   1 +
35 files changed, 548 insertions(+), 238 deletions(-)
create mode 100644 include/qemu/guest-random.h
create mode 100644 util/guest-random.c

[Qemu-devel] [PATCH v3 00/23] Add qemu_getrandom and ARMv8.5-RNG etc

Posted by Richard Henderson 9 weeks ago
Changes since v2:
  * Changes from review.
    - getrandom is not exclusive of /dev/urandom fallback.
    - vnc fails gracefully on crypto failure.
    - a great renaming.
  * Drop the "nonblock" argument, as it's not deliverable from the backend.
  * Propagate Error back through qemu_guest_getrandom.
  * Add qemu_guest_getrandom_nofail to centralize "Argh! Death!".
  * Convert hw/misc/
  * Implement ppc darn.
  * Implement x86 rdrand.

Changes since v1:
  * Build crypto-obj-y for linux-user as well.
  * Several patches to tidy crypto/random-platform.c.
  * Use getrandom(2) in crypto/random-platform.c.
  * Use qcrypto_random_bytes in ui/vnc.c.
  * In qemu_getrandom:
    - Use g_rand_int instead of srand48.
    - Use qcrypto_random_bytes instead of getrandom directly.


r~


Richard Henderson (23):
  crypto: Merge crypto-obj-y into libqemuutil.a
  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_failure
  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 qemu_guest_getrandom for DARN
  target/i386: Implement CPUID_EXT_RDRAND

 Makefile                            |  12 ++--
 Makefile.objs                       |   8 +--
 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                   |  34 +++++----
 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             |  55 +++++++++++----
 target/ppc/int_helper.c             |  38 +++++++---
 ui/vnc.c                            |  53 ++++++--------
 util/guest-random.c                 |  93 +++++++++++++++++++++++++
 vl.c                                |   4 ++
 configure                           |  27 ++++++--
 crypto/Makefile.objs                |   5 +-
 qemu-options.hx                     |  10 +++
 util/Makefile.objs                  |   1 +
 35 files changed, 548 insertions(+), 238 deletions(-)
 create mode 100644 include/qemu/guest-random.h
 create mode 100644 util/guest-random.c

-- 
2.17.2


Re: [Qemu-devel] [PATCH v3 00/23] Add qemu_getrandom and ARMv8.5-RNG etc

Posted by Daniel P. Berrangé 9 weeks ago
On Thu, Mar 14, 2019 at 08:26:06PM -0700, Richard Henderson wrote:
> Changes since v2:
>   * Changes from review.
>     - getrandom is not exclusive of /dev/urandom fallback.
>     - vnc fails gracefully on crypto failure.
>     - a great renaming.
>   * Drop the "nonblock" argument, as it's not deliverable from the backend.
>   * Propagate Error back through qemu_guest_getrandom.
>   * Add qemu_guest_getrandom_nofail to centralize "Argh! Death!".
>   * Convert hw/misc/
>   * Implement ppc darn.
>   * Implement x86 rdrand.
> 
> Changes since v1:
>   * Build crypto-obj-y for linux-user as well.
>   * Several patches to tidy crypto/random-platform.c.
>   * Use getrandom(2) in crypto/random-platform.c.
>   * Use qcrypto_random_bytes in ui/vnc.c.
>   * In qemu_getrandom:
>     - Use g_rand_int instead of srand48.
>     - Use qcrypto_random_bytes instead of getrandom directly.
> 
> 
> r~
> 
> 
> Richard Henderson (23):
>   crypto: Merge crypto-obj-y into libqemuutil.a
>   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*

Once the full series is acked, I'm fine if you want to do a
pull request with the whole series. If not, I'll take the
crypto patches into my pending queue.

>   ui/vnc: Split out authentication_failure
>   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 qemu_guest_getrandom for DARN
>   target/i386: Implement CPUID_EXT_RDRAND

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|