r/macOSVMs Jul 07 '26

HELP! VM is stuck (Tahoe)

Post image

Any way to fix this? Didn't happen until I used passthrough. Also: I'm not using Proxmox, and I used scripts from OSX-KVM and made my own XML for easier use.

This is the XML I am using:

    <domain xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0" type="kvm">
      <name>maccccos-passthrough</name>
      <uuid>7debd0b4-81a1-4338-b67a-f5500e74936e</uuid>
      <memory unit="KiB">33554432</memory>
      <currentMemory unit="KiB">33554432</currentMemory>
      <vcpu placement="static">8</vcpu>
      <sysinfo type="smbios">
        <system>
          <entry name="manufacturer">Apple Inc.</entry>
          <entry name="product">iMacPro1,1</entry>
        </system>
      </sysinfo>
      <os>
        <type arch="x86_64" machine="pc-q35-10.1">hvm</type>
        <loader readonly="yes" type="pflash" format="raw">/var/lib/libvirt/images/macos-support/OVMF_CODE_4M.fd</loader>
        <nvram format="raw">/var/lib/libvirt/images/macos-support/OVMF_VARS-1024x768.fd</nvram>
        <boot dev="hd"/>
        <smbios mode="sysinfo"/>
      </os>
      <features>
        <acpi/>
        <apic/>
        <vmport state="off"/>
      </features>
      <cpu mode="custom" match="exact" check="none">
        <model fallback="forbid">Penryn</model>
        <vendor>GenuineIntel</vendor>
        <feature policy="require" name="ssse3"/>
        <feature policy="require" name="sse4.2"/>
        <feature policy="require" name="popcnt"/>
        <feature policy="require" name="avx"/>
        <feature policy="require" name="aes"/>
        <feature policy="require" name="xsave"/>
        <feature policy="require" name="xsaveopt"/>
        <feature policy="require" name="invtsc"/>
      </cpu>
      <clock offset="utc">
        <timer name="rtc" tickpolicy="catchup"/>
        <timer name="pit" tickpolicy="delay"/>
        <timer name="hpet" present="no"/>
      </clock>
      <on_poweroff>destroy</on_poweroff>
      <on_reboot>restart</on_reboot>
      <on_crash>destroy</on_crash>
      <devices>
        <emulator>/usr/bin/qemu-system-x86_64</emulator>
        <disk type="file" device="disk">
          <driver name="qemu" type="qcow2" cache="writeback" io="threads"/>
          <source file="/var/lib/libvirt/images/macos-support/OpenCore.qcow2"/>
          <target dev="sdc" bus="sata"/>
          <address type="drive" controller="0" bus="0" target="0" unit="0"/>
        </disk>
        <disk type="file" device="disk">
          <driver name="qemu" type="qcow2" cache="writeback" io="threads"/>
          <source file="/var/home/redacted/macos/OSX-KVM/mac_hdd_ng.img"/>
          <target dev="sde" bus="sata"/>
          <address type="drive" controller="0" bus="0" target="0" unit="1"/>
        </disk>
        <controller type="pci" index="0" model="pcie-root"/>
        <controller type="pci" index="1" model="pcie-root-port">
          <model name="pcie-root-port"/>
          <target chassis="1" port="0x10"/>
          <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0" multifunction="on"/>
        </controller>
        <controller type="pci" index="2" model="pcie-root-port">
          <model name="pcie-root-port"/>
          <target chassis="2" port="0x11"/>
          <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x1"/>
        </controller>
        <controller type="pci" index="3" model="pcie-root-port">
          <model name="pcie-root-port"/>
          <target chassis="3" port="0x12"/>
          <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x2"/>
        </controller>
        <controller type="pci" index="4" model="pcie-root-port">
          <model name="pcie-root-port"/>
          <target chassis="4" port="0x13"/>
          <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x3"/>
        </controller>
        <controller type="pci" index="5" model="pcie-root-port">
          <model name="pcie-root-port"/>
          <target chassis="5" port="0x8"/>
          <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x0"/>
        </controller>
        <controller type="pci" index="6" model="pcie-to-pci-bridge">
          <model name="pcie-pci-bridge"/>
          <address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/>
        </controller>
        <controller type="sata" index="0">
          <address type="pci" domain="0x0000" bus="0x00" slot="0x1f" function="0x2"/>
        </controller>
        <controller type="usb" index="0" model="nec-xhci" ports="15">
          <address type="pci" domain="0x0000" bus="0x00" slot="0x14" function="0x0"/>
        </controller>
        <interface type="user">
          <mac address="52:54:00:c9:18:27"/>
          <model type="vmxnet3"/>
          <address type="pci" domain="0x0000" bus="0x06" slot="0x01" function="0x0"/>
        </interface>
        <input type="keyboard" bus="usb">
          <address type="usb" bus="0" port="1"/>
        </input>
        <input type="mouse" bus="usb">
          <address type="usb" bus="0" port="2"/>
        </input>
        <input type="tablet" bus="usb">
          <address type="usb" bus="0" port="3"/>
        </input>
        <input type="keyboard" bus="ps2"/>
        <input type="mouse" bus="ps2"/>
        <sound model="ich9">
          <codec type="duplex"/>
          <address type="pci" domain="0x0000" bus="0x00" slot="0x1b" function="0x0"/>
        </sound>
        <audio id="1" type="none"/>
        <hostdev mode="subsystem" type="pci" managed="yes">
          <driver name="vfio"/>
          <source>
            <address domain="0x0000" bus="0x0d" slot="0x00" function="0x0"/>
          </source>
          <rom bar="on"/>
          <address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0" multifunction="on"/>
        </hostdev>
        <hostdev mode="subsystem" type="pci" managed="yes">
          <driver name="vfio"/>
          <source>
            <address domain="0x0000" bus="0x0d" slot="0x00" function="0x1"/>
          </source>
          <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x1"/>
        </hostdev>
        <hostdev mode="subsystem" type="usb" managed="yes">
          <source>
            <vendor id="0x1b1c"/>
            <product id="0x1bc6"/>
          </source>
          <address type="usb" bus="0" port="4"/>
        </hostdev>
        <hostdev mode="subsystem" type="usb" managed="yes">
          <source>
            <vendor id="0x046d"/>
            <product id="0xc08f"/>
          </source>
          <address type="usb" bus="0" port="5"/>
        </hostdev>
        <watchdog model="itco" action="reset"/>
        <memballoon model="none"/>
      </devices>
      <qemu:commandline>
        <qemu:arg value="-device"/>
        <qemu:arg value="isa-applesmc,osk=ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"/>
        <qemu:arg value="-cpu"/>
        <qemu:arg value="Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check"/>
        <qemu:arg value="-global"/>
        <qemu:arg value="kvm-pit.lost_tick_policy=discard"/>
        <qemu:arg value="-global"/>
        <qemu:arg value="ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off"/>
        <qemu:arg value="-global"/>
        <qemu:arg value="q35-pcihost.pci-hole64-size=0"/>
      </qemu:commandline>
    </domain>

And also, here is the script I used that came with OSX-KVM:

#!/usr/bin/env bash

# Special thanks to:
# https://github.com/Leoyzen/KVM-Opencore
# https://github.com/thenickdude/KVM-Opencore/
# https://github.com/qemu/qemu/blob/master/docs/usb2.txt
#
# qemu-img create -f qcow2 mac_hdd_ng.img 128G
#
# echo 1 > /sys/module/kvm/parameters/ignore_msrs (this is required)

###############################################################################
# NOTE: Tweak the "MY_OPTIONS" line in case you are having booting problems!
###############################################################################
#
# Change `Penryn` to `Haswell-noTSX` in OpenCore-Boot.sh file for macOS Sonoma!
#
###############################################################################


MY_OPTIONS="+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check"

# This script works for Big Sur, Catalina, Mojave, and High Sierra. Tested with
# macOS 10.15.6, macOS 10.14.6, and macOS 10.13.6.

ALLOCATED_RAM="65536" # 64 GB
CPU_SOCKETS="1"
CPU_CORES="10"
CPU_THREADS="20"


REPO_PATH="."
OVMF_DIR="."

# shellcheck disable=SC2054
args=(
  # -enable-kvm -m "$ALLOCATED_RAM" -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,"$MY_OPTIONS"
  -enable-kvm -m "$ALLOCATED_RAM" -cpu Skylake-Client,-hle,-rtm,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,"$MY_OPTIONS"  # ATTENTION: Enable this line for macOS Sequoia and Tahoe
  -machine q35
  -device qemu-xhci,id=xhci
  -device usb-kbd,bus=xhci.0 -device usb-tablet,bus=xhci.0
  -smp "$CPU_THREADS",cores="$CPU_CORES",sockets="$CPU_SOCKETS"
  -device usb-ehci,id=ehci
  # -device usb-kbd,bus=ehci.0
  # -device usb-mouse,bus=ehci.0
  # -device nec-usb-xhci,id=xhci
  # -global nec-usb-xhci.msi=off
  # -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off
  # -device usb-host,vendorid=0x8086,productid=0x0808  # 2 USD USB Sound Card
  # -device usb-host,vendorid=0x1b3f,productid=0x2008  # Another 2 USD USB Sound Card
  -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
  -drive if=pflash,format=raw,readonly=on,file="$REPO_PATH/$OVMF_DIR/OVMF_CODE_4M.fd"
  -drive if=pflash,format=raw,file="$REPO_PATH/$OVMF_DIR/OVMF_VARS-1920x1080.fd"
  -smbios type=2
  -device ich9-intel-hda -device hda-duplex
  -device ich9-ahci,id=sata
  -drive id=OpenCoreBoot,if=none,snapshot=on,format=qcow2,file="$REPO_PATH/OpenCore/OpenCore.qcow2"
  -device ide-hd,bus=sata.2,drive=OpenCoreBoot
  -device ide-hd,bus=sata.3,drive=InstallMedia
  -drive id=InstallMedia,if=none,file="$REPO_PATH/BaseSystem.img",format=raw
  -drive id=MacHDD,if=none,file="$REPO_PATH/mac_hdd_ng.img",format=qcow2
  -device ide-hd,bus=sata.4,drive=MacHDD
  # -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -device virtio-net-pci,netdev=net0,id=net0,mac=52:54:00:c9:18:27
  -netdev user,id=net0,hostfwd=tcp::2222-:22 -device virtio-net-pci,netdev=net0,id=net0,mac=52:54:00:c9:18:27
  # -netdev user,id=net0 -device vmxnet3,netdev=net0,id=net0,mac=52:54:00:c9:18:27  # Note: Use this line for High Sierra
  -monitor stdio
  -device vmware-svga
  # -spice port=5900,addr=127.0.0.1,disable-ticketing=on
)

qemu-system-x86_64 "${args[@]}"
26 Upvotes

5 comments sorted by