On Wed, Mar 25, 2020 at 07:44:34PM +0100, Igor Mammedov wrote: > On Wed, 25 Mar 2020 16:03:39 +0100 > Gerd Hoffmann <kra...@redhat.com> wrote: > > > On Wed, Mar 25, 2020 at 01:32:12PM +0100, Igor Mammedov wrote: > > > On Thu, 19 Mar 2020 09:01:04 +0100 > > > Gerd Hoffmann <kra...@redhat.com> wrote: > > > > > > > I know that not supporting ACPI in microvm is intentional. If you still > > > > don't want ACPI this is perfectly fine, you can use the usual -no-acpi > > > > switch to toggle ACPI support. > > > > > > > > These are the advantages you are going to loose then: > > > > > > > > (1) virtio-mmio device discovery without command line hacks (tweaking > > > > the command line is a problem when not using direct kernel boot). > > > > (2) Better IO-APIC support, we can use IRQ lines 16-23. > > > > (3) ACPI power button (aka powerdown request) works. > > > > (4) machine poweroff (aka S5 state) works. > > > > > > > > Together with seabios patches for virtio-mmio support this allows to > > > > boot standard fedora images (cloud, coreos, workstation live) with the > > > > microvm machine type. > > > > > > what CLI do you use to test it? > > > > Test script below. "qemu-default" is a wrapper script which starts > > qemu-system-x86_64 from my build directory. "qemu-firmware" is the > > same plus isa-debugcon configured for a firmware log on stdout. > > > > Latest bits (with some of the review comments addressed) just pushed > > to git://git,kraxel.org/qemu sirius/microvm > > thanks, below are test results I got on my system, > spoiler hw-reduced reduces boot time on ~0.02s compared to full blown acpi > ---- > using timestamp at "Run /init as init process" as measuring point > > no acpi > 1.967316 > 1.975272 > 1.981267 > 1.974316 > 1.962452 > 1.960988 > > hw reduced acpi > 0.893838 > 0.892573 > 0.890585 > 0.900306 > 0.897902 > > normal acpi: > 0.921647 > 0.916298 > 0.923518 > 0.916298 > 0.913234 > > PS: > I just quickly hacked hw-reduced acpi (using arm/virt as model) > without implementing power button but I doubt that would affect results > noticeably > on qemu side it probably also will save some time since there are less > things to setup for qemu.
And no ACPI is faster because of PS/2 probing, right? > > > > HTH, > > Gerd > > > > ============================ cut here ============================ > > #!/bin/sh > > > > mode="${1}" > > shift > > > > back=() > > devs=() > > args=() > > qemu="qemu-firmware -monitor none -boot menu=on" > > disk="" > > liso="" > > krnl="" > > karg="console=ttyS0,115200" > > > > case "$mode" in > > kernel) > > qemu="qemu-default -nographic" > > disk="/vmdisk/imagefish/rhel-8.1.0-ks-x86_64-testboot-sys-disk.qcow2" > > krnl="$HOME/build/linux-sirius-x86_64-qemu/arch/x86/boot/bzImage" > > karg="$karg root=/dev/sda4" > > karg="$karg quiet" > > ;; > > seabios) > > disk="/vmdisk/imagefish/rhel-8.1.0-ks-x86_64-testboot-sys-disk.qcow2" > > krnl="$HOME/build/linux-sirius-x86_64-qemu/arch/x86/boot/bzImage" > > karg="$karg root=/dev/sda4" > > args+=("-bios" > > "/home/kraxel/projects/seabios/out-bios-microvm/bios.bin") > > ;; > > cloud) > > disk="/vmdisk/iso/Fedora-Cloud-Base-31-1.9.x86_64.raw" > > ;; > > coreos) > > disk="/vmdisk/iso/fedora-coreos-31.20200210.3.0-metal.x86_64.raw" > > ;; > > live) > > liso="/vmdisk/iso/Fedora-Workstation-Live-x86_64-30-1.2.iso" > > devs+=("-device" "virtio-gpu-device") > > devs+=("-device" "virtio-keyboard-device") > > devs+=("-device" "virtio-tablet-device") > > ;; > > *) > > echo "unknown mode: $mode" > > echo "known modes: kernel seabios cloud coreos live" > > exit 1 > > ;; > > esac > > > > if test "$disk" != ""; then > > format="${disk##*.}" > > back+=("-drive" "if=none,id=disk,format=${format},file=${disk}") > > devs+=("-device" "scsi-hd,drive=disk,bootindex=1") > > fi > > if test "$liso" != ""; then > > back+=("-drive" > > "if=none,id=cdrom,media=cdrom,readonly,format=raw,file=${liso}") > > devs+=("-device" "scsi-cd,drive=cdrom,bootindex=2") > > fi > > if test "$krnl" != ""; then > > args+=("-kernel" "$krnl") > > args+=("-append" "$karg") > > fi > > > > set -ex > > $qemu \ > > -enable-kvm \ > > -cpu host \ > > -M microvm,graphics=off,pit=off,pic=on,rtc=on \ > > \ > > -m 4G \ > > \ > > -netdev user,id=net \ > > "${back[@]}" \ > > \ > > -global virtio-mmio.force-legacy=false \ > > -device virtio-net-device,netdev=net \ > > -device virtio-scsi-device \ > > "${devs[@]}" \ > > \ > > "${args[@]}" \ > > "$@"