summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorHongxu Jia <hongxu.jia@windriver.com>2018-10-29 22:22:49 -0400
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-11-14 11:14:40 +0000
commitbc0d9a1a5e6c56302be8ba9b37a66b90ac941056 (patch)
tree1ef378161755bc6649771b0a0081624b2762f58a /meta
parent81fc280bae13c573d8b82b05ad5eb18e7882ad24 (diff)
downloadpoky-bc0d9a1a5e6c56302be8ba9b37a66b90ac941056.tar.gz
machine/qemu*: fix kernel finish crng init more and more slowly
Just adding `-device virtio-rng-pci' to the QEMU invocation will add the device with a default host backend. As of QEMU 1.3+, the default backend is to use the host's /dev/random as a source of entropy. [1] When the entropy pool is empty, reads from /dev/random will block until additional environmental noise is gathered. [2] For Yocto, if call runqemu frequently, it will consume lots of host's /dev/random, and kernel finish crng init in guest get more and more slowly. Here are 4 times runqemu boot test: [ 3.464432] random: crng init done [ 20.874030] random: crng init done [ 23.583589] random: crng init done [ 23.858945] random: crng init done Modify entropy source to /dev/urandom device on the host which returns random bytes using a pseudorandom number generator seeded from the entropy pool. Reads from this device do not block and kernel finish crng init in guest will not delay. Of course, the side effect is obviously, we lost the quality of randomness, but the modification is only on runqemu script rather than real embedded device, and it benefits oeqa efficiency in which many cases call runqemu especially multiple oeqa builds on one host. After apply the fix: [ 3.364670] random: crng init done [ 4.619061] random: crng init done [ 3.403897] random: crng init done [ 3.450717] random: crng init done [1] https://wiki.qemu.org/Features/VirtIORNG [2] http://man7.org/linux/man-pages/man4/random.4.html (From OE-Core rev: 853644f82eb3205ef3efc1ea3959c7225dfacf61) Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/conf/machine/include/qemuboot-mips.inc3
-rw-r--r--meta/conf/machine/include/qemuboot-x86.inc3
-rw-r--r--meta/conf/machine/qemuarm.conf3
-rw-r--r--meta/conf/machine/qemuarm64.conf4
-rw-r--r--meta/conf/machine/qemuppc.conf3
5 files changed, 11 insertions, 5 deletions
diff --git a/meta/conf/machine/include/qemuboot-mips.inc b/meta/conf/machine/include/qemuboot-mips.inc
index 7d9fa52da6..75bb98861f 100644
--- a/meta/conf/machine/include/qemuboot-mips.inc
+++ b/meta/conf/machine/include/qemuboot-mips.inc
@@ -3,6 +3,7 @@ IMAGE_CLASSES += "qemuboot"
3QB_MEM = "-m 256" 3QB_MEM = "-m 256"
4QB_MACHINE = "-machine malta" 4QB_MACHINE = "-machine malta"
5QB_KERNEL_CMDLINE_APPEND = "console=ttyS0 console=tty" 5QB_KERNEL_CMDLINE_APPEND = "console=ttyS0 console=tty"
6QB_OPT_APPEND = "-vga cirrus -show-cursor -usb -device usb-tablet"
6# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy 7# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
7QB_OPT_APPEND = "-vga cirrus -show-cursor -usb -device usb-tablet -device virtio-rng-pci" 8QB_OPT_APPEND += "-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0"
8QB_SYSTEM_NAME = "qemu-system-${TUNE_ARCH}" 9QB_SYSTEM_NAME = "qemu-system-${TUNE_ARCH}"
diff --git a/meta/conf/machine/include/qemuboot-x86.inc b/meta/conf/machine/include/qemuboot-x86.inc
index 1456bf7e8b..5fdbe4df50 100644
--- a/meta/conf/machine/include/qemuboot-x86.inc
+++ b/meta/conf/machine/include/qemuboot-x86.inc
@@ -11,7 +11,8 @@ QB_CPU_KVM_x86-64 = "-cpu core2duo"
11QB_AUDIO_DRV = "alsa" 11QB_AUDIO_DRV = "alsa"
12QB_AUDIO_OPT = "-soundhw ac97,es1370" 12QB_AUDIO_OPT = "-soundhw ac97,es1370"
13QB_KERNEL_CMDLINE_APPEND = "vga=0 uvesafb.mode_option=${UVESA_MODE} oprofile.timer=1 uvesafb.task_timeout=-1" 13QB_KERNEL_CMDLINE_APPEND = "vga=0 uvesafb.mode_option=${UVESA_MODE} oprofile.timer=1 uvesafb.task_timeout=-1"
14QB_OPT_APPEND = "-vga vmware -show-cursor -usb -device usb-tablet"
14# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy 15# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
15QB_OPT_APPEND = "-vga vmware -show-cursor -usb -device usb-tablet -device virtio-rng-pci" 16QB_OPT_APPEND += "-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0"
16 17
17UVESA_MODE ?= "640x480-32" 18UVESA_MODE ?= "640x480-32"
diff --git a/meta/conf/machine/qemuarm.conf b/meta/conf/machine/qemuarm.conf
index d2f2c85c3f..a544312627 100644
--- a/meta/conf/machine/qemuarm.conf
+++ b/meta/conf/machine/qemuarm.conf
@@ -14,7 +14,8 @@ SERIAL_CONSOLES ?= "115200;ttyAMA0 115200;ttyAMA1"
14QB_SYSTEM_NAME = "qemu-system-arm" 14QB_SYSTEM_NAME = "qemu-system-arm"
15QB_MACHINE = "-machine versatilepb" 15QB_MACHINE = "-machine versatilepb"
16QB_KERNEL_CMDLINE_APPEND = "console=ttyAMA0,115200 console=tty" 16QB_KERNEL_CMDLINE_APPEND = "console=ttyAMA0,115200 console=tty"
17QB_OPT_APPEND = "-show-cursor -usb -device usb-tablet"
17# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy 18# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
18QB_OPT_APPEND = "-show-cursor -usb -device usb-tablet -device virtio-rng-pci" 19QB_OPT_APPEND += "-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0"
19PREFERRED_VERSION_linux-yocto ??= "4.18%" 20PREFERRED_VERSION_linux-yocto ??= "4.18%"
20QB_DTB = "${@oe.utils.version_less_or_equal('PREFERRED_VERSION_linux-yocto', '4.7', '', 'zImage-versatile-pb.dtb', d)}" 21QB_DTB = "${@oe.utils.version_less_or_equal('PREFERRED_VERSION_linux-yocto', '4.7', '', 'zImage-versatile-pb.dtb', d)}"
diff --git a/meta/conf/machine/qemuarm64.conf b/meta/conf/machine/qemuarm64.conf
index 242889ac8a..34fcd2aed0 100644
--- a/meta/conf/machine/qemuarm64.conf
+++ b/meta/conf/machine/qemuarm64.conf
@@ -16,7 +16,9 @@ QB_MACHINE = "-machine virt"
16QB_CPU = "-cpu cortex-a57" 16QB_CPU = "-cpu cortex-a57"
17QB_KERNEL_CMDLINE_APPEND = "console=ttyAMA0,38400" 17QB_KERNEL_CMDLINE_APPEND = "console=ttyAMA0,38400"
18# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy 18# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
19QB_OPT_APPEND = "-show-cursor -device virtio-rng-pci -monitor null" 19QB_OPT_APPEND = "-show-cursor -monitor null"
20# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
21QB_OPT_APPEND += "-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0"
20QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no" 22QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no"
21QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@" 23QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@"
22QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0" 24QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0"
diff --git a/meta/conf/machine/qemuppc.conf b/meta/conf/machine/qemuppc.conf
index 537b2f6774..743d26170e 100644
--- a/meta/conf/machine/qemuppc.conf
+++ b/meta/conf/machine/qemuppc.conf
@@ -16,6 +16,7 @@ QB_SYSTEM_NAME = "qemu-system-ppc"
16QB_MACHINE = "-machine mac99" 16QB_MACHINE = "-machine mac99"
17QB_CPU = "-cpu G4" 17QB_CPU = "-cpu G4"
18QB_KERNEL_CMDLINE_APPEND = "console=tty console=ttyS0" 18QB_KERNEL_CMDLINE_APPEND = "console=tty console=ttyS0"
19QB_OPT_APPEND = "-show-cursor -usb -device usb-tablet"
19# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy 20# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
20QB_OPT_APPEND = "-show-cursor -usb -device usb-tablet -device virtio-rng-pci" 21QB_OPT_APPEND += "-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0"
21QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no" 22QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no"