I'm trying to passthrough my GPU to my VM using an old Dell laptop I had lying around.
I've read through a bunch of forum posts on this exact subject already, but I still can't get my setup to work, or even verify if I have the right equipment. At this point I'm pretty turned around and am not sure how to proceed.
Host machine: Dell Latitude E7450
BIOS version: 2020-06-10 (All virtualization BIOS settings enabled)
CPU: Intel(R) Core(TM) i5-5200U CPU (supposedly supports VT-d)
GPU: Intel HD Graphics 5500
Host Setup
I followed the reddit guide here to make the following changes, adjusting as needed as the guide is for a windows VM: https://www.reddit.com/r/homelab/comments/b5xpua/the_ultimate_beginners_guide_to_gpu_passthrough/
Full dmesg attached. Some lines that drew my attention as related to the IOMMU:
VM Setup
OS: Ubuntu Server 20.04.2 LTS
With the hostpci0 (GPU) added to the hardware list, I get the following error when I try to start the VM:
When I remove that hardware, the VM boots up and works perfectly.
Any suggestions, even if its the bittersweet "you're going to have to buy an actual server" would be greatly appreciated.
I've read through a bunch of forum posts on this exact subject already, but I still can't get my setup to work, or even verify if I have the right equipment. At this point I'm pretty turned around and am not sure how to proceed.
Host machine: Dell Latitude E7450
BIOS version: 2020-06-10 (All virtualization BIOS settings enabled)
CPU: Intel(R) Core(TM) i5-5200U CPU (supposedly supports VT-d)
GPU: Intel HD Graphics 5500
*-display UNCLAIMED
description: VGA compatible controller
product: HD Graphics 5500
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
version: 09
width: 64 bits
clock: 33MHz
capabilities: msi pm vga_controller bus_master cap_list
configuration: latency=0
resources: memory:f6000000-f6ffffff memory:e0000000-efffffff ioport:f000(size=64) memory:c0000-dffff
description: VGA compatible controller
product: HD Graphics 5500
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
version: 09
width: 64 bits
clock: 33MHz
capabilities: msi pm vga_controller bus_master cap_list
configuration: latency=0
resources: memory:f6000000-f6ffffff memory:e0000000-efffffff ioport:f000(size=64) memory:c0000-dffff
Host Setup
I followed the reddit guide here to make the following changes, adjusting as needed as the guide is for a windows VM: https://www.reddit.com/r/homelab/comments/b5xpua/the_ultimate_beginners_guide_to_gpu_passthrough/
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Proxmox Virtual Environment"
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
GRUB_CMDLINE_LINUX=""
# Disable os-prober, it might add menu entries for each guest
GRUB_DISABLE_OS_PROBER=true
# 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
# 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"
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Proxmox Virtual Environment"
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
GRUB_CMDLINE_LINUX=""
# Disable os-prober, it might add menu entries for each guest
GRUB_DISABLE_OS_PROBER=true
# 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
# 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"
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
vfio_iommu_type1
vfio_pci
vfio_virqfd
blacklist radeon
blacklist nouveau
blacklist nvidia
blacklist nouveau
blacklist nvidia
options vfio_iommu_type1 allow_unsafe_interrupts=1
options kvm ignore_msrs=1
options vfio_iommu_type1 allow_unsafe_interrupts=1
options vfio-pci ids=8086:1616,8086:160c disable_vga=1
...
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 5500 (rev 09) (prog-if 00 [VGA controller])
Subsystem: Dell HD Graphics 5500
Flags: bus master, fast devsel, latency 0, IRQ 255
Memory at f6000000 (64-bit, non-prefetchable) [size=16M]
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 5500 (rev 09) (prog-if 00 [VGA controller])
Subsystem: Dell HD Graphics 5500
Flags: bus master, fast devsel, latency 0, IRQ 255
Memory at f6000000 (64-bit, non-prefetchable) [size=16M]
Memory at e0000000 (64-bit, prefetchable) [size=256M]
I/O ports at f000
[virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
Capabilities: [90] MSI: Enable- Count=1/1 Maskable- 64bit-
Capabilities: [d0] Power Management version 2
Capabilities: [a4] PCI Advanced Features
Kernel modules: i915
00:03.0 Audio device: Intel Corporation Broadwell-U Audio Controller (rev 09)
Subsystem: Dell Broadwell-U Audio Controller
Flags: fast devsel, IRQ 255
Memory at f723c000 (64-bit, non-prefetchable) [disabled] [size=16K]
Capabilities: [50] Power Management version 2
Capabilities: [60] MSI: Enable- Count=1/1 Maskable- 64bit-
Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
Kernel driver in use: vfio-pci
Kernel modules: snd_hda_intel
...
I/O ports at f000
[virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
Capabilities: [90] MSI: Enable- Count=1/1 Maskable- 64bit-
Capabilities: [d0] Power Management version 2
Capabilities: [a4] PCI Advanced Features
Kernel modules: i915
00:03.0 Audio device: Intel Corporation Broadwell-U Audio Controller (rev 09)
Subsystem: Dell Broadwell-U Audio Controller
Flags: fast devsel, IRQ 255
Memory at f723c000 (64-bit, non-prefetchable) [disabled] [size=16K]
Capabilities: [50] Power Management version 2
Capabilities: [60] MSI: Enable- Count=1/1 Maskable- 64bit-
Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
Kernel driver in use: vfio-pci
Kernel modules: snd_hda_intel
...
00:02.0 0300: 8086:1616 (rev 09)
00:03.0 0403: 8086:160c (rev 09)
Full dmesg attached. Some lines that drew my attention as related to the IOMMU:
[ 0.039123] DMAR: IOMMU enabled
[ 0.039195] You have booted with nomodeset. This means your GPU drivers are DISABLED
[ 0.039195] You have booted with nomodeset. This means your GPU drivers are DISABLED
[ 0.188004] pci 0000:00:02.0: DMAR: Disabling IOMMU for graphics on this chipset
[ 0.866656] pci 0000:00:00.0: Adding to iommu group 0
[ 0.866667] pci 0000:00:03.0: Adding to iommu group 1
[ 0.866676] pci 0000:00:04.0: Adding to iommu group 2
[ 0.866684] pci 0000:00:14.0: Adding to iommu group 3
[ 0.866696] pci 0000:00:16.0: Adding to iommu group 4
[ 0.866705] pci 0000:00:19.0: Adding to iommu group 5
[ 0.866713] pci 0000:00:1b.0: Adding to iommu group 6
[ 0.866722] pci 0000:00:1c.0: Adding to iommu group 7
[ 0.866730] pci 0000:00:1c.3: Adding to iommu group 8
[ 0.866740] pci 0000:00:1c.4: Adding to iommu group 9
[ 0.866749] pci 0000:00:1d.0: Adding to iommu group 10
[ 0.866765] pci 0000:00:1f.0: Adding to iommu group 11
[ 0.866774] pci 0000:00:1f.2: Adding to iommu group 11
[ 0.866786] pci 0000:00:1f.3: Adding to iommu group 11
[ 0.866799] pci 0000:01:00.0: Adding to iommu group 12
[ 0.866812] pci 0000:02:00.0: Adding to iommu group 13
[ 0.866814] DMAR: Intel(R) Virtualization Technology for Directed I/O
[ 0.866667] pci 0000:00:03.0: Adding to iommu group 1
[ 0.866676] pci 0000:00:04.0: Adding to iommu group 2
[ 0.866684] pci 0000:00:14.0: Adding to iommu group 3
[ 0.866696] pci 0000:00:16.0: Adding to iommu group 4
[ 0.866705] pci 0000:00:19.0: Adding to iommu group 5
[ 0.866713] pci 0000:00:1b.0: Adding to iommu group 6
[ 0.866722] pci 0000:00:1c.0: Adding to iommu group 7
[ 0.866730] pci 0000:00:1c.3: Adding to iommu group 8
[ 0.866740] pci 0000:00:1c.4: Adding to iommu group 9
[ 0.866749] pci 0000:00:1d.0: Adding to iommu group 10
[ 0.866765] pci 0000:00:1f.0: Adding to iommu group 11
[ 0.866774] pci 0000:00:1f.2: Adding to iommu group 11
[ 0.866786] pci 0000:00:1f.3: Adding to iommu group 11
[ 0.866799] pci 0000:01:00.0: Adding to iommu group 12
[ 0.866812] pci 0000:02:00.0: Adding to iommu group 13
[ 0.866814] DMAR: Intel(R) Virtualization Technology for Directed I/O
VM Setup
OS: Ubuntu Server 20.04.2 LTS
args: -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_id=NV43FIX,kvm=off'
boot: order=ide2;scsi0;net0
cores: 4
cpu: host,hidden=1,flags=+pcid
hostpci0: 00:02,pcie=1
ide2: none,media=cdrom
machine: q35
memory: 8000
name: PlexServer
net0: virtio=72:CD:427:97:98,bridge=vmbr0,firewall=1
numa: 0
onboot: 1
ostype: l26
scsi0: local-lvm:vm-100-disk-0,iothread=1,replicate=0,size=50G,ssd=1
scsi1: /dev/disk/by-id/usb-WD_My_Passport_0820_575838314132344635383730-0:0,backup=0,replicate=0,iothread=1,ssd=1,size=1907697M
scsi2: /dev/disk/by-id/usb-JMicron_Generic_DISK00_0123456789ABCDEF-0:0,backup=0,replicate=0,iothread=1,ssd=0,size=126939695379315K
scsi3: /dev/disk/by-id/usb-JMicron_Generic_DISK01_0123456789ABCDEF-0:1,backup=0,replicate=0,iothread=1,ssd=1,size=126939695379315K
scsi4: /dev/disk/by-id/usb-JMicron_Generic_DISK02_0123456789ABCDEF-0:2,backup=0,replicate=0,iothread=1,ssd=1,size=126939695379315K
scsi5: /dev/disk/by-id/usb-JMicron_Generic_DISK03_0123456789ABCDEF-0:3,backup=0,replicate=0,iothread=1,ssd=1,size=126939695379315K
scsi6: /dev/disk/by-id/usb-JMicron_Generic_DISK04_0123456789ABCDEF-0:4,backup=0,replicate=0,iothread=1,ssd=0,size=126939695379315K
scsihw: virtio-scsi-single
smbios1: uuid=cf7c3324-5caf-459a-b526-bb53bd3cdcc1
sockets: 1
vmgenid: c0c869db-518a-4506-a248-e30860a319cc
boot: order=ide2;scsi0;net0
cores: 4
cpu: host,hidden=1,flags=+pcid
hostpci0: 00:02,pcie=1
ide2: none,media=cdrom
machine: q35
memory: 8000
name: PlexServer
net0: virtio=72:CD:427:97:98,bridge=vmbr0,firewall=1
numa: 0
onboot: 1
ostype: l26
scsi0: local-lvm:vm-100-disk-0,iothread=1,replicate=0,size=50G,ssd=1
scsi1: /dev/disk/by-id/usb-WD_My_Passport_0820_575838314132344635383730-0:0,backup=0,replicate=0,iothread=1,ssd=1,size=1907697M
scsi2: /dev/disk/by-id/usb-JMicron_Generic_DISK00_0123456789ABCDEF-0:0,backup=0,replicate=0,iothread=1,ssd=0,size=126939695379315K
scsi3: /dev/disk/by-id/usb-JMicron_Generic_DISK01_0123456789ABCDEF-0:1,backup=0,replicate=0,iothread=1,ssd=1,size=126939695379315K
scsi4: /dev/disk/by-id/usb-JMicron_Generic_DISK02_0123456789ABCDEF-0:2,backup=0,replicate=0,iothread=1,ssd=1,size=126939695379315K
scsi5: /dev/disk/by-id/usb-JMicron_Generic_DISK03_0123456789ABCDEF-0:3,backup=0,replicate=0,iothread=1,ssd=1,size=126939695379315K
scsi6: /dev/disk/by-id/usb-JMicron_Generic_DISK04_0123456789ABCDEF-0:4,backup=0,replicate=0,iothread=1,ssd=0,size=126939695379315K
scsihw: virtio-scsi-single
smbios1: uuid=cf7c3324-5caf-459a-b526-bb53bd3cdcc1
sockets: 1
vmgenid: c0c869db-518a-4506-a248-e30860a319cc
With the hostpci0 (GPU) added to the hardware list, I get the following error when I try to start the VM:
Code:
TASK ERROR: Cannot open iommu_group: No such file or directory
Any suggestions, even if its the bittersweet "you're going to have to buy an actual server" would be greatly appreciated.
Attachments
Last edited: