I have a Minisforum AI X1 PRO.
My goal is to have a Ubuntu VM running on top of Proxmox with iGPU passthrough and workig video output from the VM.
Is there anyone out there that got iGPU working on Strix Point including video output? All the success stories I have found so far do this for AI and don’t need video output. I have that working too.
current state of my setup:
proxmox 9.0.9 is up and running,
Kubuntu-VM is running and sees the 890M. However as soon as I remove the primary display adapter and make the 890M the primary GPU my screen (HDMI) remains black. The VM boots up though and I can ping it.
Install Ubuntu without passthrough, install the amdgpu driver dkms module directly from amd website (try without passthrough, if it install fine, otherwise you need to passthrough the gpu but not as primary device, use the proxmox gui to install)
Make sure you use OMVF and Q35 latest. CPU Type Host. For Linux I dont need any VBIOS or AMDGOP efi laoded.
What you can also try is different combination of pcie devices. So of course always the gpu, rombar, pcie checked. Make sure to disable the proxmox display options, and set the gpu as primary gpu (you can test this on or off). And then different pcie combination of gpu, gpu audio, audio coprocessor and ccp/psp module. Try different combination of this pcie passthrough (for example gpu + gpu audio, or gpu+ coprorcessor+psp, or all of them) For me, my PC crashes more often if I pass through the gpu audio device, only GPU is working for me most of the times.
Also yes vendor reset is not working, you can add you gpu id, but this will probably not fix anything as the reset methods vendor-reset provides are for older gpus.
Also I disabled secure boot on host and vm, dunno if that helps
I am now using the same mini PC with a win10 guest running proxmox 9.
Basically everything is working great aside from the reset / shutdown issue mentioned above.
I’m going to hammer at it for a while as this is replacing my primary wotkstation for at least a couple of years.
I have not really tried anything too drastic to resolve the reset / shutdown issue as I just got it up an running.
So far I am passing through just the GPU and audio controller and had to use my own VBIOS and GOP.
For what its worth initially the plan was to roll my own and just run vanilla debian (13). It woudnt work, same vbios and GOP and as soon as video output popped on (which did), it was garbled. Funny thing is the tiancore bios would show fine tho.
Anyways, if anyone makes any progress on this, then do let us know. I’ll be sure to post if I come up with anything myself.
I’ve made a tiny bit of progress, although this won’t be the final solution. In windows at least, I am using that and reset bug fix which disables and re-enables the GPU before shutdown and startup. Thanks to this restarts of windows work fine, although a bit delayed. Shutdowns still don’t work well. When the os comes back up there are glitches on the display and its unusable.
Running that AFTER the VM has come down will do 2 things… First of all, your GPU should be handed back to Proxmox. It is in my case, 100%… I see my console login prompt.
Not only that, when you start the VM up again, it will come up with the GPU working. With just the reset bug fix for me it would come up half garbled, strange white blocks all over the screen. Unusable.
So its working 100% for me now. I can reboot, shutdown, start back up and hand my GPU back to Proxmox as needed.
I bet there are edge cases, but for the 15 minutes of testing I just did… Works every time.
BTW, this is the snippet that chatgpt generated for me:
cat >/var/lib/vz/snippets/vm100-hooks.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
vmid="${1:-}"
phase="${2:-}"
# Proxmox calls hook scripts as: script <vmid> <phase>
# phases: pre-start, post-start, pre-stop, post-stop
# Only act for VM 100
[[ "$vmid" == "100" ]] || exit 0
log(){ echo "[hook:$vmid:$phase] $*"; }
case "$phase" in
post-stop)
log "Removing PCI functions and rescanning PCI bus"
for fn in 0 1; do
path="/sys/bus/pci/devices/0000:c5:00.$fn/remove"
if [[ -e "$path" ]]; then
printf 1 > "$path" || true
fi
done
if [[ -e /sys/bus/pci/rescan ]]; then
printf 1 > /sys/bus/pci/rescan || true
fi
;;
esac
EOF
chmod +x /var/lib/vz/snippets/vm100-hooks.sh
And I have it attached to my VM like so:
hookscript: local:snippets/vm100-hooks.sh
Oh and I am unsure if it matters but maybe it does, I have blacklisted most of the snd related modules… I know the .1 device is the hdmi sound bits… Anyways here is my list of blacklists just for reference. They may or may not matter: