GPU Passthrough on Dell Latitude E7450

tabsnotspaces

New Member
Jan 26, 2021
6
0
1
34
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
*-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

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"

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

blacklist radeon
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]
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
...

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.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

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:42:D7: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
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.
 

Attachments

  • dmesg.log
    68.3 KB · Views: 1
Last edited:
I also tried changing my VM BIOS from SEAbios to OVMF. While the VM boots up (going straight to EFI setup), adding the GPU PCI causes a boot failure for the same error.

args: -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_id=NV43FIX,kvm=off'
bios: ovmf
boot: order=ide2;scsi0;net0
cores: 4
cpu: host,hidden=1,flags=+pcid
efidisk0: ansimos64:100/vm-100-disk-0.qcow2,size=128K
hostpci0: 00:02,pcie=1
ide2: none,media=cdrom
machine: q35
memory: 8196
name: PlexServer
net0: virtio=72:CD:42:D7: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
 
Last edited:
Hey guys, search in your case for gvt-d.
Probably gvt-g is a solution either.

Probably trying pass through an igp doesn't work at all. (That's my theory, because I can't test and would make sense why gvt-d exists at all)

Edit:
And just checked that the topic autor didn't blacklisted i915
If you want to passthrough igp, that would be needed either!

Cheers
 
Last edited:

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!