Hello, apologies for the long wait on a response. Applying the diff did allow the VM to be shutdown completely with "shutdown -p now,” without having to manually shut it down from the hypervisor, but it appears to work on the latest snapshot as well now. I was not able to get the VM to reboot with “shutdown -r now” or “reboot” without manually doing so in the hypervisor after “syncing disks… done,” though on either version assuming I applied the diff correctly. I tried to let it sit for ~15 minutes to no avail. Is there any additional info I can provide to help with troubleshooting?
Thanks, halodub > On Sep 24, 2026, at 14:04, [email protected] wrote: > > Hi, > > On Thu, 24 Sep 2026, Mark Kettenis wrote: > >>> Date: Wed, 23 Sep 2026 15:36:05 -0500 (CDT) >>> From: [email protected] >> >> Thanks, I can reproduce this on a Macbook Air M5. >> >> It hangs when trying to bring down the vio0 network interface. I've >> narrowed it down to the splx(s) call at the end of vio_ioctl(). Feels >> like an interrupt storm triggered by bringing the interface down. >> >> Stefan, any ideas? > > Not really. You could try the following diff. I think the issue fixed by > it could cause a hang during ifconfig down, but I don't see how that hang > would be at the splx() call. > > Cheers, > Stefan > > diff --git a/sys/dev/pv/if_vio.c b/sys/dev/pv/if_vio.c > index 8942b02857a..5a37f4b18f6 100644 > --- a/sys/dev/pv/if_vio.c > +++ b/sys/dev/pv/if_vio.c > @@ -1104,7 +1104,11 @@ vio_stop(struct ifnet *ifp, int disable) > mtx_leave(&sc->sc_q[i].viq_rxmtx); > } > > - if (virtio_has_feature(vsc, VIRTIO_NET_F_CTRL_VQ)) > + /* > + * We cannot use virtio_has_feature() between virtio_reset and > + * virtio_reinit_start() > + */ > + if (sc->sc_ctl_vq != NULL) > vio_ctrl_wakeup(sc, RESET); > vio_tx_drain(sc); > if (disable) > @@ -1118,10 +1122,10 @@ vio_stop(struct ifnet *ifp, int disable) > if (virtio_has_feature(vsc, VIRTIO_NET_F_CTRL_VQ)) > virtio_start_vq_intr(vsc, sc->sc_ctl_vq); > virtio_reinit_end(vsc); > - if (virtio_has_feature(vsc, VIRTIO_NET_F_MQ)) > - vio_ctrl_mq(sc); > if (virtio_has_feature(vsc, VIRTIO_NET_F_CTRL_VQ)) > vio_ctrl_wakeup(sc, FREE); > + if (virtio_has_feature(vsc, VIRTIO_NET_F_MQ)) > + vio_ctrl_mq(sc); > } > > static inline uint16_t > >>>> Synopsis: openbsd VM in UTM fails to reboot or shutdown when running >>>> under apple virtualization platform >>>> Category: system >>>> Environment: >>> System : OpenBSD 8.0 >>> Details : OpenBSD 8.0-beta (GENERIC.MP) #106: Wed Sep 23 06:08:02 >>> MDT 2026 >>> >>> [email protected]:/usr/src/sys/arch/arm64/compile/GENERIC.MP >>> >>> Architecture: OpenBSD.arm64 >>> Machine : arm64 >>>> Description: >>> when attempting to reboot or shutdown an openbsd VM in UTM, using Apple >>> Virtualization Platform, the system >>> will hang on "syncing disks...done" and go crazy with the CPU usage. >>> only way to get the system to go down >>> or reboot is to force it in the hypervisor. >>> >>>> How-To-Repeat: >>> Download openbsd (7.9 or -current snapshot both have the same issue) >>> install openbsd in UTM by selecting Virtualize > Linux > Use Apple >>> Virtualization (any CPU/RAM/Disk settings) >>> attempt to reboot or shutdown after finishing installer >>> forcing reboot or shutdown in hypervisor will bring you out, and let >>> you boot into the system after install. >>> attempting to reboot or shutdown here leads to the same series of >>> events. >>> >>>> Fix: >>> unknown; wanted to make bug known as this hardware is brand new, and i >>> am unsure if it is hardware or virtualization platform specific >>> >>> >>> dmesg: >>> OpenBSD 8.0-beta (GENERIC.MP) #106: Wed Sep 23 06:08:02 MDT 2026 >>> [email protected]:/usr/src/sys/arch/arm64/compile/GENERIC.MP >>> real mem = 4292337664 (4093MB) >>> avail mem = 4069404672 (3880MB) >>> random: good seed from bootblocks >>> mainbus0 at root: ACPI >>> psci0 at mainbus0: PSCI 1.1, SMCCC 1.1 >>> efi0 at mainbus0: UEFI 2.7 >>> efi0: EDK II rev 0x10000 >>> smbios0 at efi0: SMBIOS 3.3.0 >>> smbios0: vendor Apple Inc. version "2164.0.0.0.0" date 08/08/2026 >>> smbios0: Apple Inc. Apple Virtualization Generic Platform >>> cpu0 at mainbus0 mpidr 0: Unknown, MIDR 0x610f0000 >>> cpu0: 192KB 64b/line 6-way L1 PIPT I-cache, 128KB 64b/line 8-way L1 D-cache >>> cpu0: 1536KB 64b/line 12-way L2 cache >>> cpu0: 20480KB 128b/line 20-way L3 cache >>> cpu0: >>> TLBIOS+IRANGE,TS+AXFLAG,FHM,DP,SHA3,RDM,Atomic,CRC32,SHA2+SHA512,SHA1,AES+PMULL,I8MM,BF16+EBF,SPECRES,SB,FRINTTS,GPI,LRCPC+LDAPUR,FCMA,JSCVT,API+EPAC2+FPAC+COMBINED,DPB+DCCVADP,RPRES,ASID16,AFP,SpecSEI,PAN+ATS1E1+EPAN,LO,HPDS,IDS,AT,CSV3,CSV2,DIT,RASv1p1,AdvSIMD+HP,FP+HP,BT >>> cpu1 at mainbus0 mpidr 1: Unknown, MIDR 0x610f0000 >>> cpu1: 192KB 64b/line 6-way L1 PIPT I-cache, 128KB 64b/line 8-way L1 D-cache >>> cpu1: 1536KB 64b/line 12-way L2 cache >>> cpu1: 20480KB 128b/line 20-way L3 cache >>> cpu2 at mainbus0 mpidr 2: Unknown, MIDR 0x610f0000 >>> cpu2: 128KB 64b/line 4-way L1 PIPT I-cache, 64KB 64b/line 8-way L1 D-cache >>> cpu2: 20480KB 128b/line 20-way L2 cache >>> cpu3 at mainbus0 mpidr 3: Unknown, MIDR 0x610f0000 >>> cpu3: 128KB 64b/line 4-way L1 PIPT I-cache, 64KB 64b/line 8-way L1 D-cache >>> cpu3: 20480KB 128b/line 20-way L2 cache >>> cpu4 at mainbus0 mpidr 4: Unknown, MIDR 0x610f0000 >>> cpu4: 128KB 64b/line 4-way L1 PIPT I-cache, 64KB 64b/line 8-way L1 D-cache >>> cpu4: 20480KB 128b/line 20-way L2 cache >>> cpu5 at mainbus0 mpidr 5: Unknown, MIDR 0x610f0000 >>> cpu5: 128KB 64b/line 4-way L1 PIPT I-cache, 64KB 64b/line 8-way L1 D-cache >>> cpu5: 20480KB 128b/line 20-way L2 cache >>> cpu6 at mainbus0 mpidr 6: Unknown, MIDR 0x610f0000 >>> cpu6: 160KB 64b/line 5-way L1 PIPT I-cache, 96KB 64b/line 6-way L1 D-cache >>> cpu6: 8192KB 128b/line 16-way L2 cache >>> cpu7 at mainbus0 mpidr 7: Unknown, MIDR 0x610f0000 >>> cpu7: 160KB 64b/line 5-way L1 PIPT I-cache, 96KB 64b/line 6-way L1 D-cache >>> cpu7: 8192KB 128b/line 16-way L2 cache >>> apm0 at mainbus0 >>> agintc0 at mainbus0 shift 4:4 nirq 1024 nredist 8 ipi 0: >>> "interrupt-controller" >>> ampintcmsi0 at agintc0: nspi 128 >>> agtimer0 at mainbus0: 24000 kHz >>> acpi0 at mainbus0: ACPI 6.3 >>> acpi0: sleep states >>> acpi0: tables DSDT FACP GTDT APIC MCFG >>> acpi0: wakeup devices >>> acpimcfg0 at acpi0 >>> acpimcfg0: addr 0x40000000, bus 0-255 >>> acpicpu0 at acpi0 CP00 >>> acpicpu1 at acpi0 CP01 >>> acpicpu2 at acpi0 CP02 >>> acpicpu3 at acpi0 CP03 >>> acpicpu4 at acpi0 CP04 >>> acpicpu5 at acpi0 CP05 >>> acpicpu6 at acpi0 CP06 >>> acpicpu7 at acpi0 CP07 >>> acpibtn0 at acpi0: PWRB >>> "ARMH0061" at acpi0 not configured >>> acpipci0 at acpi0 PCI0 >>> pci0 at acpipci0 >>> vendor "Apple", unknown product 0x1a05 (class bridge subclass host, rev >>> 0x00) at pci0 dev 0 function 0 not configured >>> virtio0 at pci0 dev 1 function 0 "Qumranet Virtio 1.x Network" rev 0x01 >>> vio0 at virtio0: 1 queue, address 8a:e8:2e:0f:66:7c, mtu 1500 >>> virtio0: msix per-VQ >>> virtio1 at pci0 dev 5 function 0 "Qumranet Virtio 1.x Storage" rev 0x01 >>> vioblk0 at virtio1 >>> virtio1: msix per-VQ >>> scsibus0 at vioblk0: 1 targets >>> sd0 at scsibus0 targ 0 lun 0: <VirtIO, Block Device, > >>> sd0: 40960MB, 512 bytes/sector, 83886080 sectors >>> virtio2 at pci0 dev 6 function 0 "Qumranet Virtio 1.x GPU" rev 0x01 >>> viogpu0 at virtio2virtio2: msix per-VQ >>> : 1920x1200, 32bpp >>> wsdisplay0 at viogpu0 mux 1: console (std, vt100 emulation) >>> wsdisplay0: screen 1-5 added (std, vt100 emulation) >>> virtio3 at pci0 dev 7 function 0 vendor "Qumranet", unknown product 0x1059 >>> rev 0x01 >>> virtio3: no matching child driver; not configured >>> virtio4 at pci0 dev 8 function 0 vendor "Qumranet", unknown product 0x1059 >>> rev 0x01 >>> virtio4: no matching child driver; not configured >>> virtio5 at pci0 dev 9 function 0 "Qumranet Virtio 1.x RNG" rev 0x01 >>> viornd0 at virtio5 >>> virtio5: msix per-VQ >>> virtio6 at pci0 dev 10 function 0 "Qumranet Virtio 1.x Memory Balloon" rev >>> 0x01 >>> viomb0 at virtio6 >>> virtio6: msix per-VQ >>> xhci0 at pci0 dev 11 function 0 vendor "Apple", unknown product 0x1a06 rev >>> 0x00: msix, xHCI 1.10 >>> usb0 at xhci0: USB revision 3.0 >>> uhub0 at usb0 configuration 1 interface 0 "Apple xHCI root hub" rev >>> 3.00/1.00 addr 1 >>> xhci1 at pci0 dev 12 function 0 vendor "Apple", unknown product 0x1a06 rev >>> 0x00: msix, xHCI 1.10 >>> usb1 at xhci1: USB revision 3.0 >>> uhub1 at usb1 configuration 1 interface 0 "Apple xHCI root hub" rev >>> 3.00/1.00 addr 1 >>> uhidev0 at uhub0 port 9 configuration 1 interface 0 "Apple Inc. Virtual USB >>> Keyboard" rev 2.00/0.00 addr 2 >>> uhidev0: iclass 3/1 >>> ukbd0 at uhidev0: 8 variable keys, 6 key codes >>> usbd_free_xfer: xfer=0xffffff800cc23690 not free >>> usbd_free_xfer: xfer=0xffffff800cc23690 not free >>> wskbd0 at ukbd0 mux 1 >>> wskbd0: connecting to wsdisplay0 >>> uhidev1 at uhub0 port 10 configuration 1 interface 0 "Apple Inc. Virtual >>> USB Digitizer" rev 2.00/0.00 addr 3 >>> uhidev1: iclass 3/0, 3 report ids >>> ums0 at uhidev1: 3 buttons, Z and W dir >>> wsmouse0 at ums0 mux 0 >>> umass0 at uhub1 port 1 configuration 1 interface 0 "Apple Inc. Virtual USB >>> Mass Storage Device" rev 3.00/0.00 addr 2 >>> umass0: using SCSI over Bulk-Only >>> scsibus1 at umass0: 2 targets, initiator 0 >>> sd1 at scsibus1 targ 1 lun 0: <Apple, Virtual Disk, 1> >>> sd1: 700MB, 512 bytes/sector, 1433600 sectors >>> vscsi0 at root >>> scsibus2 at vscsi0: 256 targets >>> softraid0 at root >>> scsibus3 at softraid0: 256 targets >>> root on sd0a (3c39c0739b5d33f6.a) swap on sd0b dump on sd0b >>> >>> usbdevs: >>> Controller /dev/usb0: >>> addr 01: 106b:0000 Apple, xHCI root hub >>> super speed, self powered, config 1, rev 1.00 >>> driver: uhub0 >>> addr 02: 05ac:8105 Apple Inc., Virtual USB Keyboard >>> full speed, power 500 mA, config 1, rev 0.00 >>> driver: uhidev0 >>> addr 03: 05ac:8106 Apple Inc., Virtual USB Digitizer >>> full speed, power 500 mA, config 1, rev 0.00 >>> driver: uhidev1 >>> Controller /dev/usb1: >>> addr 01: 106b:0000 Apple, xHCI root hub >>> super speed, self powered, config 1, rev 1.00 >>> driver: uhub1 >>> addr 02: 05ac:1503 Apple Inc., Virtual USB Mass Storage Device >>> super speed, power 200 mA, config 1, rev 0.00 >>> driver: umass0 >>> >>> >> >
