Internal Graphics card not showing for passthrough

harmonyp

Member
Nov 26, 2020
196
4
23
46
Some BIOS screenshots of iGPU + VT-d

https://gyazo.com/27d99fcc2400bd999872d3e9f4c54c30
https://gyazo.com/3aaa77c6f81a752b86437b559877ba99
https://gyazo.com/eceb8dd341cc08a598af478a412f86d0

/etc/default/grub
Code:
# 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="vga=normal nomodeset quiet intel_iommu=on"


# 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


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


# openstack-debian-images disables OS prober to avoid
# loopback detection which breaks booting
GRUB_DISABLE_OS_PROBER=true
GRUB_DEVICE=UUID=8a356a3a-7271-4dd1-b190-a7e315434673

/etc/module
Code:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

lsmod | grep vfio
Code:
vfio_pci               53248  0
vfio_virqfd            16384  1 vfio_pci
irqbypass              16384  42 vfio_pci,kvm
vfio_iommu_type1       32768  0
vfio                   32768  2 vfio_iommu_type1,vfio_pci

cat /proc/cmdline
Code:
BOOT_IMAGE=/boot/vmlinuz-5.4.73-1-pve root=UUID=8a356a3a-7271-4dd1-b190-a7e315434673 ro vga=normal nomodeset quiet intel_iommu=on modprobe.blacklist=btrfs

dmesg | grep -E 'IOMMU|DMAR'
Code:
[    0.007143] ACPI: DMAR 0x00000000787197A8 0000A8 (v01 INTEL  EDK2     00000002      01000013)
[    0.162593] DMAR: IOMMU enabled
[    0.278446] DMAR: Host address width 39
[    0.278446] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[    0.278450] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap 1c0000c40660462 ecap 19e2ff0505e
[    0.278451] DMAR: DRHD base: 0x000000fed91000 flags: 0x1
[    0.278453] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008c40660462 ecap f050da
[    0.278454] DMAR: RMRR base: 0x00000079e6c000 end: 0x0000007a0b5fff
[    0.278454] DMAR: RMRR base: 0x0000007d000000 end: 0x0000007f7fffff
[    0.278456] DMAR-IR: IOAPIC id 2 under DRHD base  0xfed91000 IOMMU 1
[    0.278456] DMAR-IR: HPET id 0 under DRHD base 0xfed91000
[    0.278457] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[    0.280037] DMAR-IR: Enabled IRQ remapping in x2apic mode
[    0.889614] DMAR: No ATSR found
[    0.889665] DMAR: dmar0: Using Queued invalidation
[    0.889669] DMAR: dmar1: Using Queued invalidation
[    0.895217] DMAR: Intel(R) Virtualization Technology for Directed I/O

find /sys/kernel/iommu_groups/ -type l
Code:
/sys/kernel/iommu_groups/17/devices/0000:06:00.0
/sys/kernel/iommu_groups/17/devices/0000:05:00.0
/sys/kernel/iommu_groups/7/devices/0000:00:16.4
/sys/kernel/iommu_groups/7/devices/0000:00:16.0
/sys/kernel/iommu_groups/7/devices/0000:00:16.1
/sys/kernel/iommu_groups/15/devices/0000:04:00.0
/sys/kernel/iommu_groups/5/devices/0000:00:14.2
/sys/kernel/iommu_groups/5/devices/0000:00:14.0
/sys/kernel/iommu_groups/13/devices/0000:00:1e.0
/sys/kernel/iommu_groups/3/devices/0000:00:08.0
/sys/kernel/iommu_groups/11/devices/0000:00:1c.0
/sys/kernel/iommu_groups/1/devices/0000:02:00.0
/sys/kernel/iommu_groups/1/devices/0000:00:01.0
/sys/kernel/iommu_groups/1/devices/0000:01:00.0
/sys/kernel/iommu_groups/1/devices/0000:00:01.1
/sys/kernel/iommu_groups/8/devices/0000:00:17.0
/sys/kernel/iommu_groups/16/devices/0000:04:00.1
/sys/kernel/iommu_groups/6/devices/0000:00:15.1
/sys/kernel/iommu_groups/6/devices/0000:00:15.0
/sys/kernel/iommu_groups/14/devices/0000:00:1f.0
/sys/kernel/iommu_groups/14/devices/0000:00:1f.5
/sys/kernel/iommu_groups/14/devices/0000:00:1f.4
/sys/kernel/iommu_groups/4/devices/0000:00:12.0
/sys/kernel/iommu_groups/12/devices/0000:00:1d.0
/sys/kernel/iommu_groups/2/devices/0000:00:02.0
/sys/kernel/iommu_groups/10/devices/0000:00:1b.4
/sys/kernel/iommu_groups/0/devices/0000:00:00.0
/sys/kernel/iommu_groups/9/devices/0000:00:1b.0

cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-5.4.73-1-pve root=UUID=8a356a3a-7271-4dd1-b190-a7e315434673 ro vga=normal nomodeset quiet intel_iommu=on modprobe.blacklist=btrfs


lspci
Code:
00:00.0 Host bridge: Intel Corporation Device 3e31 (rev 0d)
00:01.0 PCI bridge: Intel Corporation Skylake PCIe Controller (x16) (rev 0d)
00:01.1 PCI bridge: Intel Corporation Skylake PCIe Controller (x8) (rev 0d)
00:02.0 Display controller: Intel Corporation Device 3e9a (rev 02)
00:08.0 System peripheral: Intel Corporation Skylake Gaussian Mixture Model
00:12.0 Signal processing controller: Intel Corporation Cannon Lake PCH Thermal Controller (rev 10)
00:14.0 USB controller: Intel Corporation Cannon Lake PCH USB 3.1 xHCI Host Controller (rev 10)
00:14.2 RAM memory: Intel Corporation Cannon Lake PCH Shared SRAM (rev 10)
00:15.0 Serial bus controller [0c80]: Intel Corporation Cannon Lake PCH Serial IO I2C Controller (rev 10)
00:15.1 Serial bus controller [0c80]: Intel Corporation Cannon Lake PCH Serial IO I2C Controller (rev 10)
00:16.0 Communication controller: Intel Corporation Cannon Lake PCH HECI Controller (rev 10)
00:16.1 Communication controller: Intel Corporation Device a361 (rev 10)
00:16.4 Communication controller: Intel Corporation Device a364 (rev 10)
00:17.0 SATA controller: Intel Corporation Cannon Lake PCH SATA AHCI Controller (rev 10)
00:1b.0 PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port (rev f0)
00:1b.4 PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port (rev f0)
00:1c.0 PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port (rev f0)
00:1d.0 PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port (rev f0)
00:1e.0 Communication controller: Intel Corporation Device a328 (rev 10)
00:1f.0 ISA bridge: Intel Corporation Device a309 (rev 10)
00:1f.4 SMBus: Intel Corporation Cannon Lake PCH SMBus Controller (rev 10)
00:1f.5 Serial bus controller [0c80]: Intel Corporation Cannon Lake PCH SPI Controller (rev 10)
01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981
02:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981
04:00.0 Ethernet controller: Intel Corporation Ethernet Controller 10G X550T (rev 01)
04:00.1 Ethernet controller: Intel Corporation Ethernet Controller 10G X550T (rev 01)
05:00.0 PCI bridge: ASPEED Technology, Inc. AST1150 PCI-to-PCI Bridge (rev 04)
06:00.0 VGA compatible controller: ASPEED Technology, Inc. ASPEED Graphics Family (rev 41)

The only VGA I can get to show is the last line (which was showing before I even started). What else can I check/do to get the IGPU working? CPU is E-2288G
 
pveversion -v
Code:
proxmox-ve: 6.3-1 (running kernel: 5.4.73-1-pve)
pve-manager: 6.3-2 (running version: 6.3-2/22f57405)
pve-kernel-5.4: 6.3-1
pve-kernel-helper: 6.3-1
pve-kernel-5.4.73-1-pve: 5.4.73-1
pve-kernel-5.4.65-1-pve: 5.4.65-1
pve-kernel-5.4.44-2-pve: 5.4.44-2
pve-kernel-5.4.44-1-pve: 5.4.44-1
pve-kernel-5.4.41-1-pve: 5.4.41-1
ceph-fuse: 12.2.11+dfsg1-2.1+b1
corosync: 3.0.4-pve1
criu: 3.11-3
glusterfs-client: 5.5-3
ifupdown: residual config
ifupdown2: 3.0.0-1+pve3
libjs-extjs: 6.0.1-10
libknet1: 1.16-pve1
libproxmox-acme-perl: 1.0.5
libproxmox-backup-qemu0: 1.0.2-1
libpve-access-control: 6.1-3
libpve-apiclient-perl: 3.0-3
libpve-common-perl: 6.2-6
libpve-guest-common-perl: 3.1-3
libpve-http-server-perl: 3.0-6
libpve-storage-perl: 6.3-1
libqb0: 1.0.5-1
libspice-server1: 0.14.2-4~pve6+1
lvm2: 2.03.02-pve4
lxc-pve: 4.0.3-1
lxcfs: 4.0.3-pve3
novnc-pve: 1.1.0-1
proxmox-backup-client: 1.0.5-1
proxmox-mini-journalreader: 1.1-1
proxmox-widget-toolkit: 2.4-3
pve-cluster: 6.2-1
pve-container: 3.3-1
pve-docs: 6.3-1
pve-edk2-firmware: 2.20200531-1
pve-firewall: 4.1-3
pve-firmware: 3.1-3
pve-ha-manager: 3.1-1
pve-i18n: 2.2-2
pve-qemu-kvm: 5.1.0-7
pve-xtermjs: 4.7.0-3
qemu-server: 6.3-1
smartmontools: 7.1-pve2
spiceterm: 3.1-1
vncterm: 1.6-2
zfsutils-linux: 0.8.5-pve1
 
I have gotten further

apt-get install lshw

lshw -c video
Code:
*-display
       description: Display controller
       product: Intel Corporation
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 02
       width: 64 bits
       clock: 33MHz
       capabilities: pciexpress msi pm cap_list
       configuration: driver=vfio-pci latency=0
       resources: irq:16 memory:91000000-91ffffff memory:80000000-8fffffff ioport:4000(size=64)
  *-display
       description: VGA compatible controller
       product: ASPEED Graphics Family
       vendor: ASPEED Technology, Inc.
       physical id: 0
       bus info: pci@0000:06:00.0
       version: 41
       width: 32 bits
       clock: 33MHz
       capabilities: pm msi vga_controller cap_list rom
       configuration: driver=vfio-pci latency=0
       resources: irq:16 memory:92000000-92ffffff memory:93000000-9301ffff ioport:3000(size=128) memory:c0000-dffff

00:02.0 appears to be my Intel HD iGPU

I am trying to get this working on Windows 10 my server has no monitor attached, seen in other threads you can make a virtual monitor but haven't found documentation on it.

cbaf7f1dee7f3de812d4820a225b4675.png


8a2ef31621a28e265b1487a8de5d067d.png


I have been told to switch to q35 here is my whole config really not sure what options to use. Also I am aware I am not supposed to connect through Remote Desktop but both VNC and DWAgent just get a black screen. I also noticed the virtual machine with the settings below seems to pause itself after a few hours.

Code:
args: -machine type=q35,kernel_irqchip=on
bootdisk: scsi0
cores: 2
cpu: host
hostpci0: 00:02.0,pcie=1,rombar=0
ide0: none,media=cdrom
machine: q35
memory: 6144
name: testwin10
net0: virtio=02:00:00:33:90:b8,bridge=vmbr0
numa: 0
ostype: win10
scsi0: local:105/vm-105-disk-0.qcow2,discard=on,size=40G
scsihw: virtio-scsi-pci
smbios1: uuid=ce10d4b8-3493-4943-a595-f7cb357473c3
sockets: 2
vga: none
vmgenid: f365aad4-8d14-4e84-b259-24bf66bfb84e

@ali2487 I think this might help you get a bit further
 
Last edited:
I don't know much about doing passthru, but I am pretty sure you can't use the same device for both passthru and as the host console. So you will have to somehow disable the console (maybe blacklist the driver?) and use a serial console or IPMI over Ethernet (the ASpeed device is usually to support IPMI) before you can pass it through to a guest.

Regarding the "virtual monitor", I think you need a graphics card that supports this. For the in-built GPU you probably need to have a monitor connected.

I could be wrong though, never did this myself.
 
Last edited:
  • Like
Reactions: ali2487
I don't know much about doing passthru, but I am pretty sure you can't use the same device for both passthru and as the host console. So you will have to somehow disable the console (maybe blacklist the driver?) and use a serial console or IPMI over Ethernet (the ASpeed device is usually to support IPMI) before you can pass it through to a guest.

Regarding the "virtual monitor", I think you need a graphics card that supports this. For the in-built GPU you probably need to have a monitor connected.

I could be wrong though, never did this myself.

Sort of makes sense what you are saying....do we need to use RDP then?
 

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!