[SOLVED] Naked qemu not working in 8.0

shwouchk

New Member
Jul 4, 2023
5
0
1
Hello,

I have a Windows VM that I can run on a vanilla debian-bookworm host (with qemu 7.2.2), as well as a gentoo host with qemu 8.0.2 compiled from source.

I installed Proxmox VE 8.0 on an existing server that was already able to run this VM directly with a qemu that I would like to be able to continue running directly. However, after installation, the VM no longer boots, but instead goes into a bootloop where windows crashes several seconds after "repairing disks". The same file still runs fine even inside a bookworm VM on that same host. I confirmed that the boot bios hasn't changed between vanilla debian qemu install and proxmox.

Not 100% sure how to diagnose this further.

Working versions:
Code:
QEMU emulator version 7.2.2 (Debian 1:7.2+dfsg-7)
QEMU emulator version 8.0.2
Non-working version:

Code:
QEMU emulator version 8.0.2 (pve-qemu-kvm_8.0.2-3)


running command approximately like this (IDs replaced, and I also have several more lines setting the smbios fields):
Code:
qemu-system-x86_64 \
  -S \
  -enable-kvm \
  -nodefaults \
  -machine q35,vmport=off,i8042=off \
  -smp cpus=1,sockets=1,cores=1,threads=1 \
  -m 4096 -device intel-hda -device hda-duplex \
  -name Windows \
  -uuid xxxx \
  -drive if=pflash,format=raw,unit=0,file=/usr/share/OVMF/OVMF_CODE.fd,readonly=on \
  -drive if=pflash,unit=1,file=/usr/share/OVMF/OVMF_VARS.fd,readonly=on \
  -drive if=none,media=disk,id=driveXXX,file=/YYY,discard=unmap,detect-zeroes=unmap,format=raw \
  -device ide-hd,bus=ide.0,drive=driveXXX,bootindex=1 \
  -device e1000,mac=XXX,netdev=net0 \
  -netdev user,id=net0 \
  -vga virtio \
  -monitor stdio \
  -rtc base=localtime \
  -device virtio-rng-pci \
  -global ICH9-LPC.disable_s3=1 \
  -usb \
  -device usb-tablet,bus=usb-bus.0 \
  -device usb-mouse,bus=usb-bus.0 \
  -device usb-kbd,bus=usb-bus.0 \
  -device nec-usb-xhci,id=usb-controller-0 \
  -chardev spicevmc,id=vdagent,debug=0,name=vdagent \
  -device virtio-serial -device virtserialport,chardev=vdagent,name=com.redhat.spice.0 \
  -chardev spiceport,name=org.spice-space.webdav.0,id=charchannel1 \
  -device virtserialport,chardev=charchannel1,id=channel1,name=org.spice-space.webdav.0 \
  -spice port=5900,addr=127.0.0.1,disable-ticketing=on,seamless-migration=on

I have also tried changing the storage controller ala below on a hunch that this might be storage controller related, but that didn't help
Code:
  -device virtio-scsi-pci,id=scsi0,num_queues=4 \
  -drive if=none,media=disk,id=driveXXX,file=/YYY,discard=unmap,detect-zeroes=unmap,format=raw \
  -device scsi-hd,bus=scsi0.0,bus=scsi0.0,channel=0,scsi-id=0,lun=0,drive=driveXXX,bootindex=1 \
 
Last edited:
if you do 'qm showcmd ID --pretty' you get the generated qemu commandline, maybe you can then compare what's different?
 
Thanks for the reply, perhaps I was unclear - the same VM runs on vanilla debian in qemu, as well as gentoo in plain qemu. It does not run on the proxmox host using qemu directly (i.e. not via proxmox api/ui). I have not tried porting it to proxmox yet as my little experiment suggested that it would be a futile exercise.

However, after a fresh night of sleep and following your suggestion, I looked at the commandline for a different VM that ran successfully and stole the cpu line from it;
Code:
-cpu host,+kvm_pv_eoi,+kvm_pv_unhalt

Before that I did not have a specific CPU set up, and the Gentoo host has a different CPU than the proxmox host, so it could be that some of the defaults changed in a detrimental way (for this VM) between 7.2.2 and 8.0.2.

Thanks for the help!
 
Last edited:
Makes sense! I'll try later to run the same VM with either type of CPU selected to confirm. Thanks for the explanation!