Hi! I realise that this is not a "hackintosh support" forum, but I don't think my issue is necessarily MacOS related, so I might as well try to ask here too.
Basically, I have a Radeon W5500 that is passed through to a MacOS VM. The MacOS VM recognises the GPU (it is shown in the device list, the Radeon kexts are loaded, and it is also listed by system_profile and any other method that I could find). However, if I try to actually use the GPU to output any signal (i.e. I disable the virtual display), I only get to the bootloader (I can see and interact with the opencore bootloader just fine using the GPU). Once macOS actually starts loading, the video signal is frozen on the macOS loading screen. However, I can SSH into the VM to confirm that the OS posted successfully and that the GPU is *still recognised*, but with no active video outputs.
What I learned so far:
- The same configuration works with a linux VM without any issues (i.e. passthrough is working with full GPU acceleration).
- I can spoof the GPU device id to match RX5500 instead of W5500, but this does not seem to affect anything.
- I can try to force macOS to test all three supported framebuffers for this family of GPUs, but neither gives me any signal.
- I tried using a proper rom file.
- I tried both pcie=1 and x-vga=1 options.
- I tried multiple versions of the q35 machine.
- I tried booting without any display connected and then connecting only once the VM is booted up.
Is this something that could be related to GPU passthrough? Has anyone seen such behaviour before?
GRUB config:
VM config:
blacklist.conf:
Basically, I have a Radeon W5500 that is passed through to a MacOS VM. The MacOS VM recognises the GPU (it is shown in the device list, the Radeon kexts are loaded, and it is also listed by system_profile and any other method that I could find). However, if I try to actually use the GPU to output any signal (i.e. I disable the virtual display), I only get to the bootloader (I can see and interact with the opencore bootloader just fine using the GPU). Once macOS actually starts loading, the video signal is frozen on the macOS loading screen. However, I can SSH into the VM to confirm that the OS posted successfully and that the GPU is *still recognised*, but with no active video outputs.
What I learned so far:
- The same configuration works with a linux VM without any issues (i.e. passthrough is working with full GPU acceleration).
- I can spoof the GPU device id to match RX5500 instead of W5500, but this does not seem to affect anything.
- I can try to force macOS to test all three supported framebuffers for this family of GPUs, but neither gives me any signal.
- I tried using a proper rom file.
- I tried both pcie=1 and x-vga=1 options.
- I tried multiple versions of the q35 machine.
- I tried booting without any display connected and then connecting only once the VM is booted up.
Is this something that could be related to GPU passthrough? Has anyone seen such behaviour before?
GRUB config:
Code:
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt video=vesafb:off video=efifb:off initcall_blacklist=sysfb_init"
#GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
GRUB_CMDLINE_LINUX=""
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"
# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
VM config:
Code:
#hostpci0%3A 0000%3A57%3A00,pcie=1,romfile=w5500.rom,x-vga=1
agent: 1
args: -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -global nec-usb-xhci.msi=off -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off -cpu Haswell-noTSX,vendor=GenuineIntel,+invtsc,+hypervisor,kvm=on,vmware-cpuid-freq=on
balloon: 0
bios: ovmf
boot: order=virtio0;net0
cores: 4
cpu: Haswell
efidisk0: local-lvm:vm-100-disk-0,efitype=4m,size=4M
hostpci0: 0000:57:00,pcie=1
machine: q35
memory: 16384
meta: creation-qemu=7.2.0,ctime=1686688870
name: macos-ventura
net0: virtio=DE:F9:AD:E9:DE:1F,bridge=vmbr0,firewall=1
numa: 0
ostype: other
scsihw: virtio-scsi-pci
smbios1: uuid=4a9bed52-ff78-41c7-8df2-d8ffec15d86a
sockets: 1
usb0: host=05ac:024f,usb3=1
usb1: host=17ef:60e5,usb3=1
vga: vmware
virtio0: local-lvm:vm-100-disk-1,cache=unsafe,discard=on,iothread=1,size=128G
vmgenid: 11726e84-c32e-42e3-bde6-d6000f26e7f8
blacklist.conf:
Code:
blacklist radeon
blacklist nouveau
blacklist nvidia