Sunday, January 15, 2023

OpenBSD guest hangs when using a virtio SCSI controller with Synology VMM

Hello misc,

I'm testing OpenBSD 7.2-stable as a guest on Synology's Virtual Machine
Manager (<https://www.synology.com/en-
global/dsm/feature/virtual_machine_manager
>).

The storage controller options are IDE, SATA, and VirtIO SCSI. IDE and
SATA work fine, but if I change one SATA drive to use VirtIO, the system
hangs during boot.
 
Not sure if this is a Synology or OpenBSD issue. Any ideas on where to
start looking, and what changes to test?

The main difference seems to be this qemu option:
-device vhost-scsi-
pci,virtqueue_size=256,cmd_per_lun=250,wwpn=naa.c05d15cd-26da-4c23-86b4-
edff214aa49b,addr=0xa,id=vdisk_c05d15cd-26da-4c23-86b4-
edff214aa49b,set_driverok=off,num_queues=1,max_sectors=16384,boot_tpgt=1,bootindex=4
Full Synology qemu command using SATA:
23845 ?        S<Ll   1:28 /usr/local/bin/qemu-system-x86_64 -name
guest=50a448f2-136c-44a4-95f6-d6ce056c2e11,debug-threads=on -S -object
secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-8-
50a448f2-136c-44a4-9/master-key.aes -machine pc-i440fx-
2.2,accel=kvm,usb=off,dump-guest-core=off -cpu host,migratable=on -m
1024 -mem-prealloc -mem-path /dev/virtualization/libvirt/qemu -
overcommit mem-lock=on -smp 1,sockets=1,dies=1,cores=1,threads=1 -uuid
50a448f2-136c-44a4-95f6-d6ce056c2e11 -no-user-config -nodefaults -
chardev socket,id=charmonitor,fd=28,server,nowait -mon
chardev=charmonitor,id=monitor,mode=control -rtc base=2023-01-
15T15:11:39,clock=vm,driftfix=slew -global kvm-
pit.lost_tick_policy=delay -no-hpet -no-shutdown -boot strict=on -device
piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -device
ahci,id=sata0,bus=pci.0,addr=0x1a -device virtio-serial-pci,id=virtio-
serial0,bus=pci.0,addr=0x4 -blockdev
{"driver":"host_device","filename":"/dev/iscsi1","node-name":"libvirt-6-
storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-
name":"libvirt-6-format","read-
only":false,"discard":"ignore","driver":"raw","file":"libvirt-6-
storage"} -device ide-hd,bus=sata0.0,drive=libvirt-6-format,id=sata0-0-
0,bootindex=1 -blockdev
{"driver":"host_device","filename":"/dev/iscsi2","node-name":"libvirt-5-
storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-
name":"libvirt-5-format","read-
only":false,"discard":"ignore","driver":"raw","file":"libvirt-5-
storage"} -device ide-hd,bus=sata0.1,drive=libvirt-5-format,id=sata0-0-
1,bootindex=2 -blockdev
{"driver":"host_device","filename":"/dev/iscsi3","node-name":"libvirt-4-
storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-
name":"libvirt-4-format","read-
only":false,"discard":"ignore","driver":"raw","file":"libvirt-4-
storage"} -device ide-hd,bus=sata0.2,drive=libvirt-4-format,id=sata0-0-
2,bootindex=3 -blockdev
{"driver":"host_device","filename":"/dev/iscsi4","node-name":"libvirt-3-
storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-
name":"libvirt-3-format","read-
only":false,"discard":"ignore","driver":"raw","file":"libvirt-3-
storage"} -device ide-hd,bus=sata0.3,drive=libvirt-3-format,id=sata0-0-
3,bootindex=4 -device ide-cd,bus=ide.0,unit=0,id=ide0-0-0,bootindex=5 -
device ide-cd,bus=ide.0,unit=1,id=ide0-0-1,bootindex=6 -netdev
tap,fd=30,id=hostnet0 -device
e1000,netdev=hostnet0,id=net0,mac=02:11:32:2a:ee:ef,bus=pci.0,addr=0x3 -
chardev pty,id=charserial0 -device isa-
serial,chardev=charserial0,id=serial0 -chardev
socket,id=charchannel0,fd=31,server,nowait -device
virtserialport,bus=virtio-
serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0
-device usb-tablet,id=input0,bus=usb.0,port=1 -vnc 127.0.0.1:0 -device
vmware-svga,id=video0,vgamem_mb=16,bus=pci.0,addr=0x2 -device virtio-
balloon-pci,id=balloon0,bus=pci.0,addr=0x5 -msg timestamp=on

Full Synology qemu with the last drive using VirtIO SCSI:
  404 ?        S<Ll   1:24 /usr/local/bin/qemu-system-x86_64 -name
guest=50a448f2-136c-44a4-95f6-d6ce056c2e11,debug-threads=on -S -object
secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-9-
50a448f2-136c-44a4-9/master-key.aes -machine pc-i440fx-
2.2,accel=kvm,usb=off,dump-guest-core=off -cpu host,migratable=on -m
1024 -mem-prealloc -mem-path /dev/virtualization/libvirt/qemu -
overcommit mem-lock=on -smp 1,sockets=1,dies=1,cores=1,threads=1 -uuid
50a448f2-136c-44a4-95f6-d6ce056c2e11 -no-user-config -nodefaults -
chardev socket,id=charmonitor,fd=28,server,nowait -mon
chardev=charmonitor,id=monitor,mode=control -rtc base=2023-01-
15T15:25:58,clock=vm,driftfix=slew -global kvm-
pit.lost_tick_policy=delay -no-hpet -no-shutdown -boot strict=on -device
piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -device
ahci,id=sata0,bus=pci.0,addr=0x1a -device virtio-serial-pci,id=virtio-
serial0,bus=pci.0,addr=0x4 -blockdev
{"driver":"host_device","filename":"/dev/iscsi1","node-name":"libvirt-5-
storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-
name":"libvirt-5-format","read-
only":false,"discard":"ignore","driver":"raw","file":"libvirt-5-
storage"} -device ide-hd,bus=sata0.0,drive=libvirt-5-format,id=sata0-0-
0,bootindex=1 -blockdev
{"driver":"host_device","filename":"/dev/iscsi2","node-name":"libvirt-4-
storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-
name":"libvirt-4-format","read-
only":false,"discard":"ignore","driver":"raw","file":"libvirt-4-
storage"} -device ide-hd,bus=sata0.1,drive=libvirt-4-format,id=sata0-0-
1,bootindex=2 -blockdev
{"driver":"host_device","filename":"/dev/iscsi3","node-name":"libvirt-3-
storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-
name":"libvirt-3-format","read-
only":false,"discard":"ignore","driver":"raw","file":"libvirt-3-
storage"} -device ide-hd,bus=sata0.2,drive=libvirt-3-format,id=sata0-0-
2,bootindex=3 -device ide-cd,bus=ide.0,unit=0,id=ide0-0-0,bootindex=5 -
device ide-cd,bus=ide.0,unit=1,id=ide0-0-1,bootindex=6 -netdev
tap,fd=30,id=hostnet0 -device
e1000,netdev=hostnet0,id=net0,mac=02:11:32:2a:ee:ef,bus=pci.0,addr=0x3 -
chardev pty,id=charserial0 -device isa-
serial,chardev=charserial0,id=serial0 -chardev
socket,id=charchannel0,fd=31,server,nowait -device
virtserialport,bus=virtio-
serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0
-device usb-tablet,id=input0,bus=usb.0,port=1 -vnc 127.0.0.1:0 -device
vmware-svga,id=video0,vgamem_mb=16,bus=pci.0,addr=0x2 -device virtio-
balloon-pci,id=balloon0,bus=pci.0,addr=0x5 -device vhost-scsi-
pci,virtqueue_size=256,cmd_per_lun=250,wwpn=naa.c05d15cd-26da-4c23-86b4-
edff214aa49b,addr=0xa,id=vdisk_c05d15cd-26da-4c23-86b4-
edff214aa49b,set_driverok=off,num_queues=1,max_sectors=16384,boot_tpgt=1,bootindex=4
-msg timestamp=on

The dmesg below is a working system with all drives using SATA. The
screenshot is when the "sd3" drive was changed to use VirtIO.

b2$ dmesg
OpenBSD 7.2 (GENERIC) #5: Wed Jan 11 01:01:27 MST 2023
    root@syspatch-72-
amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC
real mem = 1056821248 (1007MB)
avail mem = 1007554560 (960MB)
random: good seed from bootblocks
mpath0 at root
scsibus0 at mpath0: 256 targets
mainbus0 at root
bios0 at mainbus0: SMBIOS rev. 2.8 @ 0xf59e0 (9 entries)
bios0: vendor SeaBIOS version "Virtualization-2.5.1-11303-200428-0-
gfff70e7" date 04/01/2014
bios0: QEMU Standard PC (i440FX + PIIX, 1996)
acpi0 at bios0: ACPI 1.0
acpi0: sleep states S3 S4 S5
acpi0: tables DSDT FACP APIC WAET
acpi0: wakeup devices
acpitimer0 at acpi0: 3579545 Hz, 24 bits
acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: Intel(R) Celeron(R) J4125 CPU @ 2.00GHz, 89.81 MHz, 06-7a-08
cpu0:
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,SS,SSE3,PCLMUL,SSSE3,CX16,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,RDRAND,HV,NXE,PAGE1GB,RDTSCP,LONG,LAHF,3DNOWP,PERF,FSGSBASE,TSC_ADJUST,SMEP,ERMS,MPX,RDSEED,SMAP,CLFLUSHOPT,MD_CLEAR,IBRS,IBPB,STIBP,SSBD,XSAVEOPT,XSAVEC,XGETBV1,MELTDOWN
cpu0: 24KB 64b/line 6-way D-cache, 32KB 64b/line 8-way I-cache, 4MB
64b/line 16-way L2 cache
cpu0: smt 0, core 0, package 0
mtrr: Pentium Pro MTRR support, 8 var ranges, 88 fixed ranges
cpu0: apic clock running at 1000MHz
ioapic0 at mainbus0: apid 0 pa 0xfec00000, version 11, 24 pins
acpiprt0 at acpi0: bus 0 (PCI0)
"ACPI0006" at acpi0 not configured
acpipci0 at acpi0 PCI0
com0 at acpi0 COM1 addr 0x3f8/0x8 irq 4: ns16550a, 16 byte fifo
acpicmos0 at acpi0
"PNP0A06" at acpi0 not configured
"PNP0A06" at acpi0 not configured
"PNP0A06" at acpi0 not configured
"QEMU0002" at acpi0 not configured
acpicpu0 at acpi0: C1(@1 halt!)
cpu0: using VERW MDS workaround
pvbus0 at mainbus0: KVM
pvclock0 at pvbus0
pci0 at mainbus0 bus 0
pchb0 at pci0 dev 0 function 0 "Intel 82441FX" rev 0x02
pcib0 at pci0 dev 1 function 0 "Intel 82371SB ISA" rev 0x00
pciide0 at pci0 dev 1 function 1 "Intel 82371SB IDE" rev 0x00: DMA,
channel 0 wired to compatibility, channel 1 wired to compatibility
atapiscsi0 at pciide0 channel 0 drive 0
scsibus1 at atapiscsi0: 2 targets
cd0 at scsibus1 targ 0 lun 0: <QEMU, QEMU DVD-ROM, 2.2.> removable
atapiscsi1 at pciide0 channel 0 drive 1
scsibus2 at atapiscsi1: 2 targets
cd1 at scsibus2 targ 0 lun 0: <QEMU, QEMU DVD-ROM, 2.2.> removable
cd0(pciide0:0:0): using PIO mode 4, DMA mode 2
cd1(pciide0:0:1): using PIO mode 4, DMA mode 2
pciide0: channel 1 disabled (no drives)
uhci0 at pci0 dev 1 function 2 "Intel 82371SB USB" rev 0x01: apic 0 int
11
piixpm0 at pci0 dev 1 function 3 "Intel 82371AB Power" rev 0x03: apic 0
int 9
iic0 at piixpm0
vga1 at pci0 dev 2 function 0 "VMware SVGA II" rev 0x00
wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation)
wsdisplay0: screen 1-5 added (80x25, vt100 emulation)
em0 at pci0 dev 3 function 0 "Intel 82540EM" rev 0x03: apic 0 int 11,
address 02:11:32:2a:ee:ef
virtio0 at pci0 dev 4 function 0 "Qumranet Virtio Console" rev 0x00
virtio0: no matching child driver; not configured
virtio1 at pci0 dev 5 function 0 "Qumranet Virtio Memory Balloon" rev
0x00
viomb0 at virtio1
virtio1: apic 0 int 10
ahci0 at pci0 dev 26 function 0 "Intel 82801I AHCI" rev 0x02: apic 0 int
10, AHCI 1.0
ahci0: port 0: 1.5Gb/s
ahci0: port 1: 1.5Gb/s
ahci0: port 2: 1.5Gb/s
ahci0: port 3: 1.5Gb/s
scsibus3 at ahci0: 32 targets
sd0 at scsibus3 targ 0 lun 0: <ATA, QEMU HARDDISK, 2.2.>
t10.ATA_QEMU_HARDDISK_QM00005_
sd0: 10240MB, 512 bytes/sector, 20971520 sectors, thin
sd1 at scsibus3 targ 1 lun 0: <ATA, QEMU HARDDISK, 2.2.>
t10.ATA_QEMU_HARDDISK_QM00007_
sd1: 20480MB, 512 bytes/sector, 41943040 sectors, thin
sd2 at scsibus3 targ 2 lun 0: <ATA, QEMU HARDDISK, 2.2.>
t10.ATA_QEMU_HARDDISK_QM00009_
sd2: 10240MB, 512 bytes/sector, 20971520 sectors, thin
sd3 at scsibus3 targ 3 lun 0: <ATA, QEMU HARDDISK, 2.2.>
t10.ATA_QEMU_HARDDISK_QM00011_
sd3: 10240MB, 512 bytes/sector, 20971520 sectors, thin
isa0 at pcib0
isadma0 at isa0
fdc0 at isa0 port 0x3f0/6 irq 6 drq 2
pckbc0 at isa0 port 0x60/5 irq 1 irq 12
pckbd0 at pckbc0 (kbd slot)
wskbd0 at pckbd0: console keyboard, using wsdisplay0
pms0 at pckbc0 (aux slot)
wsmouse0 at pms0 mux 0
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
usb0 at uhci0: USB revision 1.0
uhub0 at usb0 configuration 1 interface 0 "Intel UHCI root hub" rev
1.00/1.00 addr 1
uhidev0 at uhub0 port 1 configuration 1 interface 0 "QEMU QEMU USB
Tablet" rev 2.00/0.00 addr 2
uhidev0: iclass 3/0
ums0 at uhidev0: 3 buttons, Z dir
wsmouse1 at ums0 mux 0
vscsi0 at root
scsibus4 at vscsi0: 256 targets
softraid0 at root
scsibus5 at softraid0: 256 targets
root on sd0a (42a2717ea69efea0.a) swap on sd0b dump on sd0b
fd0 at fdc0 drive 1: density unknown
b2$ 

-David

No comments:

Post a Comment