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
>>> 
>>> 
>> 
> 

Reply via email to