iGPU Pass-through - No console shell with q35 but works fine with i440fx

andrewmooreio

New Member
Jun 2, 2024
6
0
1
Hi all,

I've hit a strange issue, if I pass through the Intel Iris Xe iGPU on my i5-12600H to a VM whilst using q35 machine type, I don't get access to the VMs shell via the console.

When using q35, I see the following errors and a login prompt doesn't appear. No matter what I do, I can't get access to a shell. If I remove the PCI pass-through, I still see the pci_hp_register errors, but the login prompt does appear. SSH access works okay.

1717755651456.png

When using i440fx, the VM boots straight to the shell:
1717755547651.png

Per the manual and general recommendations, q35 is best for PCI(e) pass-through, so I'm curious why I'm facing these issues whilst i440fx works fine?

PVE version: 8.2.2
Kernel: 6.8.4-3-pve
Guest OS: Debian 12
Guest kernel: 6.1.0-21-amd64

Here's the VM config:
Code:
# qm config 101
agent: 1
bios: ovmf
boot: order=scsi0;ide2;net0
cores: 1
cpu: host
efidisk0: local-lvm:vm-101-disk-0,efitype=4m,pre-enrolled-keys=1,size=4M
hostpci0: 0000:00:02
ide2: none,media=cdrom
machine: q35
memory: 2048
meta: creation-qemu=8.1.5,ctime=1717677596
name: test2
net0: virtio=BC:24:11:FF:04:52,bridge=vmbr0,firewall=1
numa: 0
ostype: l26
scsi0: local-lvm:vm-101-disk-1,discard=on,iothread=1,size=32G
scsihw: virtio-scsi-single
smbios1: uuid=839dc3ea-ec14-4e32-99a5-b671d7ccdbff
sockets: 1
vmgenid: 3cc80819-3a18-4c17-9208-f3f8a9003ed7

I can just stick with i440fx, but I'd like to understand what the root cause is and hopefully resolve it, more for my education than anything else.

Thanks in advance!
 
I believe if you change CPU type of the VM to x86-64-v2-AES those errors should go away.
 
I believe if you change CPU type of the VM to x86-64-v2-AES those errors should go away.
Thanks for the suggestion, sadly it hasn't worked and has introduced a new `*ERROR* conflict detected with stolen region` error.

1717762825071.png

This is the new VM config:

Code:
# qm config 101
agent: 1
bios: ovmf
boot: order=scsi0;ide2;net0
cores: 1
cpu: x86-64-v2-AES
efidisk0: local-lvm:vm-101-disk-0,efitype=4m,pre-enrolled-keys=1,size=4M
hostpci0: 0000:00:02
ide2: none,media=cdrom
machine: q35
memory: 2048
meta: creation-qemu=8.1.5,ctime=1717677596
name: test2
net0: virtio=BC:24:11:FF:04:52,bridge=vmbr0,firewall=1
numa: 0
ostype: l26
scsi0: local-lvm:vm-101-disk-1,discard=on,iothread=1,size=32G
scsihw: virtio-scsi-single
smbios1: uuid=839dc3ea-ec14-4e32-99a5-b671d7ccdbff
sockets: 1
vmgenid: 3cc80819-3a18-4c17-9208-f3f8a9003ed7
 
Hmm. Interesting. What happens when you remove that hostpci0 in the VM settings.
 
You are using the graphical console. Now, it seems like all you need is text output anyway. At least from what you showed so far.
Solution attempt:
Just go ahead and add a serial port to the VM. Then enable serial console redirection from the Linux kernel commandline (google for "console=ttySx,115200") and enjoy the most likely working login over serial.
 
Last edited:
  • Like
Reactions: ikarlo