[SOLVED] No network when passing through a GPU

asiananimal

New Member
Apr 4, 2024
10
1
3
I have a VM where there is no network when I pass through a GPU and when I remove the GPU there is network. I believe I've setup IOMMU correctly, but please double check my work.

I believe I'm running grub as my bootloader.
Bash:
root@dell-proxmox:~# proxmox-boot-tool status
Re-executing '/usr/sbin/proxmox-boot-tool' in new private mount namespace..
System currently booted with legacy bios
3AC6-1450 is configured with: grub (versions: 6.5.13-1-pve, 6.5.13-3-pve)

The iGPU in question is an Intel iGPU
Bash:
root@dell-proxmox:~# lspci -nn
00:00.0 Host bridge [0600]: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers [8086:5904] (rev 02)
00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 620 [8086:5916] (rev 02)
00:04.0 Signal processing controller [1180]: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem [8086:1903] (rev 02)
00:13.0 Non-VGA unclassified device [0000]: Intel Corporation Sunrise Point-LP Integrated Sensor Hub [8086:9d35] (rev 21)
00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller [8086:9d2f] (rev 21)
00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Thermal subsystem [8086:9d31] (rev 21)
00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 [8086:9d60] (rev 21)
00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #1 [8086:9d61] (rev 21)
00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-LP CSME HECI #1 [8086:9d3a] (rev 21)
00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-LP SATA Controller [AHCI mode] [8086:9d03] (rev 21)
00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-LP PCI Express Root Port #5 [8086:9d14] (rev f1)
00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-LP LPC Controller [8086:9d58] (rev 21)
00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-LP PMC [8086:9d21] (rev 21)
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-LP HD Audio [8086:9d71] (rev 21)
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-LP SMBus [8086:9d23] (rev 21)
01:00.0 Network controller [0280]: Intel Corporation Wireless 3165 [8086:3165] (rev 79)

I've updated the /etc/default/grub and ran update-grub
Bash:
root@dell-proxmox:~# cat /etc/default/grub
# 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=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
#GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX="consoleblank=300"

# If your computer has multiple operating systems installed, then you
# probably want to run os-prober. However, if your computer is a host
# for guest OSes installed via LVM or raw disk devices, running
# os-prober can cause damage to those guest OSes as it mounts
# filesystems to look for things.
#GRUB_DISABLE_OS_PROBER=false

# 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_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"

After a reboot, I see that /proc/cmdline seems to have my iommu flags enabled from grub and that there are no conflicting IOMMU groupings with the iGPU.
Code:
root@dell-proxmox:~# cat /proc/cmdline; for d in /sys/kernel/iommu_groups/*/devices/*; do n=${d#*/iommu_groups/*}; n=${n%%/*}; printf 'IOMMU group %s ' "$n"; lspci -nns "${d##*/}"; done
BOOT_IMAGE=/vmlinuz-6.5.13-3-pve root=ZFS=/ROOT/pve-1 ro consoleblank=300 root=ZFS=rpool/ROOT/pve-1 boot=zfs quiet intel_iommu=on iommu=pt
IOMMU group 0 00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 620 [8086:5916] (rev 02)
IOMMU group 10 01:00.0 Network controller [0280]: Intel Corporation Wireless 3165 [8086:3165] (rev 79)
IOMMU group 11 lspci: -s: Invalid slot number
IOMMU group 12 lspci: -s: Invalid slot number
IOMMU group 13 lspci: -s: Invalid slot number
IOMMU group 14 lspci: -s: Invalid slot number
IOMMU group 1 00:00.0 Host bridge [0600]: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers [8086:5904] (rev 02)
IOMMU group 2 00:04.0 Signal processing controller [1180]: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem [8086:1903] (rev 02)
IOMMU group 3 00:13.0 Non-VGA unclassified device [0000]: Intel Corporation Sunrise Point-LP Integrated Sensor Hub [8086:9d35] (rev 21)
IOMMU group 4 00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller [8086:9d2f] (rev 21)
IOMMU group 4 00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Thermal subsystem [8086:9d31] (rev 21)
IOMMU group 5 00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 [8086:9d60] (rev 21)
IOMMU group 5 00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #1 [8086:9d61] (rev 21)
IOMMU group 6 00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-LP CSME HECI #1 [8086:9d3a] (rev 21)
IOMMU group 7 00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-LP SATA Controller [AHCI mode] [8086:9d03] (rev 21)
IOMMU group 8 00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-LP PCI Express Root Port #5 [8086:9d14] (rev f1)
IOMMU group 9 00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-LP LPC Controller [8086:9d58] (rev 21)
IOMMU group 9 00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-LP PMC [8086:9d21] (rev 21)
IOMMU group 9 00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-LP HD Audio [8086:9d71] (rev 21)
IOMMU group 9 00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-LP SMBus [8086:9d23] (rev 21)

I've enabled VFIO modules and ran update-initramfs -u -k all
Bash:
root@dell-proxmox:~# cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

Verify the modules are enabled with dmesg | grep -i vfio
Bash:
root@dell-proxmox:~# dmesg | grep -i vfio
[   13.730131] VFIO - User Level meta-driver version: 0.3
[   14.210224] vfio-pci 0000:00:02.0: vgaarb: deactivate vga console
[   14.211048] vfio-pci 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[   14.211269] vfio_pci: add [8086:5916[ffffffff:ffffffff]] class 0x000000/00000000
[   50.057812] vfio-pci 0000:00:02.0: ready 1023ms after FLR
[   52.605734]  vaddr_get_pfns+0x78/0x290 [vfio_iommu_type1]
[   52.605741]  vfio_pin_pages_remote+0x370/0x4e0 [vfio_iommu_type1]
[   52.605750]  vfio_iommu_type1_ioctl+0x10c7/0x1af0 [vfio_iommu_type1]
[   52.605760]  vfio_fops_unl_ioctl+0x68/0x380 [vfio]
[  604.126009]  vaddr_get_pfns+0x78/0x290 [vfio_iommu_type1]
[  604.126018]  vfio_pin_pages_remote+0x370/0x4e0 [vfio_iommu_type1]
[  604.126029]  vfio_iommu_type1_ioctl+0x10c7/0x1af0 [vfio_iommu_type1]
[  604.126040]  vfio_fops_unl_ioctl+0x68/0x380 [vfio]
[  617.317921]  vaddr_get_pfns+0x78/0x290 [vfio_iommu_type1]
[  617.317930]  vfio_pin_pages_remote+0x370/0x4e0 [vfio_iommu_type1]
[  617.317941]  vfio_iommu_type1_ioctl+0x10c7/0x1af0 [vfio_iommu_type1]
[  617.317956]  vfio_fops_unl_ioctl+0x68/0x380 [vfio]
[  636.497782]  vaddr_get_pfns+0x78/0x290 [vfio_iommu_type1]
[  636.497791]  vfio_pin_pages_remote+0x370/0x4e0 [vfio_iommu_type1]
[  636.497802]  vfio_iommu_type1_ioctl+0x10c7/0x1af0 [vfio_iommu_type1]
[  636.497813]  vfio_fops_unl_ioctl+0x68/0x380 [vfio]
[  648.065668]  vaddr_get_pfns+0x78/0x290 [vfio_iommu_type1]
[  648.065678]  vfio_pin_pages_remote+0x370/0x4e0 [vfio_iommu_type1]
[  648.065689]  vfio_iommu_type1_ioctl+0x10c7/0x1af0 [vfio_iommu_type1]
[  648.065700]  vfio_fops_unl_ioctl+0x68/0x380 [vfio]
[  672.413453]  vaddr_get_pfns+0x78/0x290 [vfio_iommu_type1]
[  672.413460]  vfio_pin_pages_remote+0x370/0x4e0 [vfio_iommu_type1]
[  672.413469]  vfio_iommu_type1_ioctl+0x10c7/0x1af0 [vfio_iommu_type1]
[  672.413477]  vfio_fops_unl_ioctl+0x68/0x380 [vfio]

Finally I isolated the iGPU from the host and blacklisted the i915 drivers.
Bash:
root@dell-proxmox:~# cat /etc/modprobe.d/vfio.conf
options vfio-pci ids=8086:5916 disable_vga=1
root@dell-proxmox:~# cat /etc/modprobe.d/blacklist.conf
blacklist i915

I created a VM without the GPU first to start the cloud-init install of Ubuntu noble and confirmed that I can SSH in and can see the install via the Console. After shutting down the VM, I added the GPU and after restarting the VM. The VM starts without errors, but has no ping or SSH response. Also console shows nothing other than starting serial terminal on interface serial0

The following is my VM configuration.

Code:
root@dell-proxmox:~# qm config 107
agent: 1,fstrim_cloned_disks=1
balloon: 0
boot: c
bootdisk: scsi0
cipassword: **REDACTED**
ciuser: **REDACTED**
cores: 4
cpu: host
hostpci0: 0000:00:02
ide2: local-zfs:vm-107-cloudinit,media=cdrom,size=4M
ipconfig0: ip=10.0.1.82/24,gw=10.0.1.1
machine: q35
memory: 4096
meta: creation-qemu=8.1.5,ctime=1712184918
name: k3s-worker-02
net0: virtio=BC:24:11:93:A9:DE,bridge=vmbr0
numa: 0
onboot: 1
scsi0: local-zfs:vm-107-disk-0,size=10G
scsihw: virtio-scsi-pci
serial0: socket
smbios1: uuid=e610d5f0-de97-49a2-b319-7492ad5aac08
sockets: 1
sshkeys: **REDACTED**
vga: serial0
vmgenid: 521d8757-8938-4504-ba6c-0de310dbce78

Am I doing something wrong or am I missing something in setting up GPU Passthrough? Any help would be very helpful. Thanks in advance.
 
The iGPU in question is an Intel iGPU
Bash:
root@dell-proxmox:~# lspci -nn
00:00.0 Host bridge [0600]: Intel Corporation [B][U]Xeon E3-1200[/U][/B] v6/7th Gen Core Processor Host Bridge/DRAM Registers [8086:5904] (rev 02)
00:02.0 VGA compatible controller [0300]: Intel Corporation [B][U]HD Graphics 620[/U][/B] [8086:5916] (rev 02)
iGPU stands for Integrated Graphics Processing Unit - as opposed to a discrete graphics solution which is a separate card/chip from the CPU.
AFAIK there exists no Xeon E3-1200 CPU family that has an iGPU.
AFAIK HD Graphics 620 only exists in an iGPU solution.

So something is wrong either with your HW config / My understanding of your situation.
 
That is very strange. The physical hardware in question is an old Dell Inspiron 13 5378 laptop. I'm not entirely sure why it is listed as Xeon E3-1200. From my understanding it should be a Intel Core i7 - 7500U. Is there something I should be doing to fix this HW config? Other than this incorrect listing, Proxmox runs fine and all of the VMs when I do not pass a GPU through will work as expected. This is very strange.
 
iGPU stands for Integrated Graphics Processing Unit - as opposed to a discrete graphics solution which is a separate card/chip from the CPU.
AFAIK there exists no Xeon E3-1200 CPU family that has an iGPU.
AFAIK HD Graphics 620 only exists in an iGPU solution.

So something is wrong either with your HW config / My understanding of your situation.
Are you sure that ```lspci -nn``` isn't just listing that my laptop is using the same Host Bridge chipset as the Xeon E3-1200 v6/7th Gen?

When I run the following command it reports the correct CPU and all of its features as expected.

Bash:
root@dell-proxmox:~# lscpu
Architecture:            x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         39 bits physical, 48 bits virtual
  Byte Order:            Little Endian
CPU(s):                  4
  On-line CPU(s) list:   0-3
Vendor ID:               GenuineIntel
  BIOS Vendor ID:        Intel(R) Corporation
  Model name:            Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
    BIOS Model name:     Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz To Be Filled By O.E.M. CPU @ 2.5GHz
    BIOS CPU family:     205
    CPU family:          6
    Model:               142
    Thread(s) per core:  2
    Core(s) per socket:  2
    Socket(s):           1
    Stepping:            9
    CPU(s) scaling MHz:  100%
    CPU max MHz:         3100.0000
    CPU min MHz:         400.0000
    BogoMIPS:            5399.81
    Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_goo
                         d nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx
                          f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rds
                         eed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp vnmi flush_l1d
Virtualization features:
  Virtualization:        VT-x
Caches (sum of all):     
  L1d:                   64 KiB (2 instances)
  L1i:                   64 KiB (2 instances)
  L2:                    512 KiB (2 instances)
  L3:                    3 MiB (1 instance)
NUMA:                   
  NUMA node(s):          1
  NUMA node0 CPU(s):     0-3
Vulnerabilities:         
  Gather data sampling:  Vulnerable: No microcode
  Itlb multihit:         KVM: Mitigation: Split huge pages
  L1tf:                  Mitigation; PTE Inversion; VMX conditional cache flushes, SMT vulnerable
  Mds:                   Vulnerable: Clear CPU buffers attempted, no microcode; SMT vulnerable
  Meltdown:              Mitigation; PTI
  Mmio stale data:       Vulnerable: Clear CPU buffers attempted, no microcode; SMT vulnerable
  Retbleed:              Mitigation; IBRS
  Spec rstack overflow:  Not affected
  Spec store bypass:     Mitigation; Speculative Store Bypass disabled via prctl
  Spectre v1:            Mitigation; usercopy/swapgs barriers and __user pointer sanitization
  Spectre v2:            Mitigation; IBRS, IBPB conditional, STIBP conditional, RSB filling, PBRSB-eIBRS Not affected
  Srbds:                 Vulnerable: No microcode
  Tsx async abort:       Not affected
 
my guess is that the additional device in the guest moves the nic around and it gets a different name. what is the output
of
Code:
ip a
ip l

without and with the gpu ?
 
The guest shows the following without the GPU

Bash:
#:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether bc:24:11:93:a9:de brd ff:ff:ff:ff:ff:ff
    inet 10.0.1.82/24 brd 10.0.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fd23:8910:50d8:d84d:be24:11ff:fe93:a9de/64 scope global dynamic mngtmpaddr noprefixroute
       valid_lft 1787sec preferred_lft 1787sec
    inet6 fe80::be24:11ff:fe93:a9de/64 scope link
       valid_lft forever preferred_lft forever
3: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default
    link/ether d2:ae:fc:ca:cd:22 brd ff:ff:ff:ff:ff:ff
    inet 10.42.4.0/32 scope global flannel.1
       valid_lft forever preferred_lft forever
    inet6 fe80::d0ae:fcff:feca:cd22/64 scope link
       valid_lft forever preferred_lft forever
4: cni0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 7a:bb:bb:b0:d4:0d brd ff:ff:ff:ff:ff:ff
    inet 10.42.4.1/24 brd 10.42.4.255 scope global cni0
       valid_lft forever preferred_lft forever
    inet6 fe80::78bb:bbff:feb0:d40d/64 scope link
       valid_lft forever preferred_lft forever
$:~$ ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether bc:24:11:93:a9:de brd ff:ff:ff:ff:ff:ff
3: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN mode DEFAULT group default
    link/ether d2:ae:fc:ca:cd:22 brd ff:ff:ff:ff:ff:ff
4: cni0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
    link/ether 7a:bb:bb:b0:d4:0d brd ff:ff:ff:ff:ff:ff

which matches what proxmox shows from guest agent network information

Screenshot 2024-04-09 at 11.14.16 AM.png

The expected static IP is 10.0.1.82/24 which is correctly reflected in eth0 interface.

However, when I shutdown, add the GPU, and start the guest again I'm unable to access the guest via SSH. SSH connection will eventually timeout. When I try to use console in via Proxmox UI, NoVNC will just hang forever with the text "starting serial terminal on interface serial0" and mouse / keyboard input seems to not affect the console whatsoever. Finally, Guest Agent Network Information reports Guest Agent not running, but the guest is reported with status "running".

Screenshot 2024-04-09 at 11.25.36 AM.png

Is there another way to terminal in that I don't know about?
 
One other thing I noticed (concerning your main problem), try changing the Machine type to Default (i440fx)
I remember once reading somewhere, that iGPU passthrough doesn't always work correctly on q35

Also concerning your most recent post, maybe this is relevant, it is also using a Ubuntu cloud-init image.
 
Ah! Progress! My guest VM was created using the jammy-server-cloudimg-amd64-disk-kvm.img, but after recreating the VM using jammy-server-cloudimg-amd64.img I was able to pass through the iGPU and have it boot correctly and the guest VM correctly list the Intel HD Graphics 620 as expected. However, for some reason it is using virtio-pci driver instead of Intel drivers of i915. Is there a way to force the kernel to use i915 for this pci device?

Code:
$ lspci -nnk
00:00.0 Host bridge [0600]: Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller [8086:29c0]
    Subsystem: Red Hat, Inc. QEMU Virtual Machine [1af4:1100]
00:01.0 VGA compatible controller [0300]: Device [1234:1111] (rev 02)
    Subsystem: Red Hat, Inc. Device [1af4:1100]
00:1a.0 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 [8086:2937] (rev 03)
    Subsystem: Red Hat, Inc. QEMU Virtual Machine [1af4:1100]
    Kernel driver in use: uhci_hcd
00:1a.1 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 [8086:2938] (rev 03)
    Subsystem: Red Hat, Inc. QEMU Virtual Machine [1af4:1100]
    Kernel driver in use: uhci_hcd
00:1a.2 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 [8086:2939] (rev 03)
    Subsystem: Red Hat, Inc. QEMU Virtual Machine [1af4:1100]
    Kernel driver in use: uhci_hcd
00:1a.7 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 [8086:293c] (rev 03)
    Subsystem: Red Hat, Inc. QEMU Virtual Machine [1af4:1100]
    Kernel driver in use: ehci-pci
00:1b.0 Audio device [0403]: Intel Corporation 82801I (ICH9 Family) HD Audio Controller [8086:293e] (rev 03)
    Subsystem: Red Hat, Inc. QEMU Virtual Machine [1af4:1100]
00:1c.0 PCI bridge [0604]: Red Hat, Inc. QEMU PCIe Root port [1b36:000c]
    Kernel driver in use: pcieport
00:1c.1 PCI bridge [0604]: Red Hat, Inc. QEMU PCIe Root port [1b36:000c]
    Kernel driver in use: pcieport
00:1c.2 PCI bridge [0604]: Red Hat, Inc. QEMU PCIe Root port [1b36:000c]
    Kernel driver in use: pcieport
00:1c.3 PCI bridge [0604]: Red Hat, Inc. QEMU PCIe Root port [1b36:000c]
    Kernel driver in use: pcieport
00:1d.0 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 [8086:2934] (rev 03)
    Subsystem: Red Hat, Inc. QEMU Virtual Machine [1af4:1100]
    Kernel driver in use: uhci_hcd
00:1d.1 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 [8086:2935] (rev 03)
    Subsystem: Red Hat, Inc. QEMU Virtual Machine [1af4:1100]
    Kernel driver in use: uhci_hcd
00:1d.2 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 [8086:2936] (rev 03)
    Subsystem: Red Hat, Inc. QEMU Virtual Machine [1af4:1100]
    Kernel driver in use: uhci_hcd
00:1d.7 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 [8086:293a] (rev 03)
    Subsystem: Red Hat, Inc. QEMU Virtual Machine [1af4:1100]
    Kernel driver in use: ehci-pci
00:1e.0 PCI bridge [0604]: Intel Corporation 82801 PCI Bridge [8086:244e] (rev 92)
00:1f.0 ISA bridge [0601]: Intel Corporation 82801IB (ICH9) LPC Interface Controller [8086:2918] (rev 02)
    Subsystem: Red Hat, Inc. QEMU Virtual Machine [1af4:1100]
00:1f.2 SATA controller [0106]: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] [8086:2922] (rev 02)
    Subsystem: Red Hat, Inc. QEMU Virtual Machine [1af4:1100]
    Kernel driver in use: ahci
    Kernel modules: ahci
00:1f.3 SMBus [0c05]: Intel Corporation 82801I (ICH9 Family) SMBus Controller [8086:2930] (rev 02)
    Subsystem: Red Hat, Inc. QEMU Virtual Machine [1af4:1100]
05:01.0 PCI bridge [0604]: Red Hat, Inc. QEMU PCI-PCI bridge [1b36:0001]
05:02.0 PCI bridge [0604]: Red Hat, Inc. QEMU PCI-PCI bridge [1b36:0001]
05:03.0 PCI bridge [0604]: Red Hat, Inc. QEMU PCI-PCI bridge [1b36:0001]
05:04.0 PCI bridge [0604]: Red Hat, Inc. QEMU PCI-PCI bridge [1b36:0001]
06:05.0 SCSI storage controller [0100]: Red Hat, Inc. Virtio SCSI [1af4:1004]
    Subsystem: Red Hat, Inc. Virtio SCSI [1af4:0008]
    Kernel driver in use: virtio-pci
06:08.0 Communication controller [0780]: Red Hat, Inc. Virtio console [1af4:1003]
    Subsystem: Red Hat, Inc. Virtio console [1af4:0003]
    Kernel driver in use: virtio-pci
06:10.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 620 [8086:5916] (rev 02)
    Subsystem: Dell HD Graphics 620 [1028:0740]
06:12.0 Ethernet controller [0200]: Red Hat, Inc. Virtio network device [1af4:1000]
    Subsystem: Red Hat, Inc. Virtio network device [1af4:0001]
    Kernel driver in use: virtio-pci

When I try the following command it looks like it doesn't correctly locate the drivers. I've update all the default packages and installed the latest linux-firmware via apt-get.


Code:
$ sudo modprobe i915
modprobe: FATAL: Module i915 not found in directory /lib/modules/5.15.0-102-generic
 
Ah! Progress! My guest VM was created using the jammy-server-cloudimg-amd64-disk-kvm.img, but after recreating the VM using jammy-server-cloudimg-amd64.img I was able to pass through the iGPU and have it boot correctly and the guest VM correctly list the Intel HD Graphics 620 as expected. However, for some reason it is using virtio-pci driver instead of Intel drivers of i915. Is there a way to force the kernel to use i915 for this pci device?
It is obvious from this & the above linked forum post I mentioned, that the kvm version of the Ubuntu cloud-init image doesn't play well.

Concerning your i915 pci drivers, this is a Ubuntu focused problem, not a HV/Proxmox one. Neobin has linked a post that in all likelihood will help you, if not you can probably find info on general Ubuntu sites.

I think you can mark this thread title with the [SOLVED] tag (upper right top "Edit").
 
YES! That worked. Thank you everybody for helping!

To summarize for future readers. My problem was a part problem.
  1. I had the display set to Serial terminal 0 (Serial 0) instead of Default. Which made it look like it was running with no network when in reality it never booted. This was solved by setting the display to default and stop + starting the guest VM.
  2. My cloud-image was jammy-server-cloudimg-amd64-disk-kvm.img and for some reason the KVM version when passing a GPU to it will hang during the boot process with the error of GRUB_FORCE_PARTUUID set, initrdless boot. This was solved by recreating the guest VM but using the non-KVM version like jammy-server-cloudimg-amd64.img
  3. The cloudimg does not include the the i915 Intel graphics drivers and likely other graphics drivers too. This is solved by running sudo apt install linux-generic and then rebooting the guest VM to loaded the correct i915 driver.
 
  • Like
Reactions: gfngfn256

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!