I'm trying to spin up a Debian VM with GPU passthrough. Everything seems to have worked correctly except I cannot connect to the console:
"VM 69420 qmp command 'set_password' failed - Could not set password"
I have also tried to connect a monitor directly to the VGA port of the card but didn't get any video.
Here is the VM config:
Passthrough seems to be working fine:
PVE Details
This PVE is otherwise a completely vanilla setup, as I've exclusively used it thus far for getting this one VM running.
"VM 69420 qmp command 'set_password' failed - Could not set password"
I have also tried to connect a monitor directly to the VGA port of the card but didn't get any video.
Here is the VM config:
Code:
agent: 1
bios: ovmf
boot: order=scsi0;ide2;net0
cores: 1
hostpci0: 0000:01:00,pcie=1,x-vga=1
ide2: local:iso/debian-11.1.0-amd64-netinst.iso,media=cdrom
machine: q35
memory: 4098
meta: creation-qemu=6.1.0,ctime=1637382539
name: test
net0: virtio=26:77:A8:6E:5E:4F,bridge=vmbr0
numa: 0
ostype: l26
scsi0: local-zfs:vm-69420-disk-0,discard=on,size=32G
scsihw: virtio-scsi-pci
smbios1: uuid=a15a0edc-bf44-480d-b910-1a21284c8f8b
sockets: 4
vmgenid: 99d77163-ddce-43bd-8d26-74d23ad6f647
Passthrough seems to be working fine:
Code:
IOMMU is enabled
root@TracheNodeB:~# dmesg | grep -e DMAR -e IOMMU | grep -e "IOMMU enabled"
[ 0.060105] DMAR: IOMMU enabled
Modules are loaded:
root@TracheNodeB:~# 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.
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
Interrupt Remapping is enabled:
root@TracheNodeB:~# dmesg | grep 'remapping'
[ 0.149363] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[ 0.149723] DMAR-IR: Enabled IRQ remapping in x2apic mode
Verified Isolation:
root@TracheNodeB:~# find /sys/kernel/iommu_groups/ -type l
/sys/kernel/iommu_groups/7/devices/0000:00:1a.0
/sys/kernel/iommu_groups/5/devices/0000:00:16.0
/sys/kernel/iommu_groups/5/devices/0000:00:16.3
/sys/kernel/iommu_groups/13/devices/0000:03:00.0
....
I have the correct card address:
root@TracheNodeB:~# lspci | grep "NVIDIA"
01:00.0 VGA compatible controller: NVIDIA Corporation GT218 [GeForce 310] (rev a2)
01:00.1 Audio device: NVIDIA Corporation High Definition Audio Controller (rev a1)
root@TracheNodeB:~# lspci -n -s 01:00
01:00.0 0300: 10de:0a63 (rev a2)
01:00.1 0403: 10de:0be3 (rev a1)
I set up GPU OVMF PCI Express Passthrough with the aforementioned correct address:
root@TracheNodeB:~# cat /etc/modprobe.d/vfio.conf
options vfio-pci ids=10de:0a63,10de:0be3 disable_vga=1
I've blacklisted drivers:
root@TracheNodeB:~# cat /etc/modprobe.d/blacklist.conf
blacklist radeon
blacklist nouveau
blacklist nvidia
I confirmed the card passed through with qm monitor
root@TracheNodeB:~# qm monitor 69420
Entering Qemu Monitor for VM 69420 - type 'help' for help
qm> info pci
Bus 1, device 0, function 0:
VGA controller: PCI device 10de:0a63
PCI subsystem 1462:1835
IRQ 10, pin A
BAR0: 32 bit memory at 0xc0000000 [0xc0ffffff].
BAR1: 64 bit prefetchable memory at 0x800000000 [0x80fffffff].
BAR3: 64 bit prefetchable memory at 0x810000000 [0x811ffffff].
BAR5: I/O at 0xa000 [0xa07f].
BAR6: 32 bit memory at 0xffffffffffffffff [0x0007fffe].
id "hostpci0.0"
Bus 1, device 0, function 1:
Audio controller: PCI device 10de:0be3
PCI subsystem 1462:1835
IRQ 10, pin B
BAR0: 32 bit memory at 0xc1000000 [0xc1003fff].
id "hostpci0.1"
PVE Details
Code:
root@TracheNodeB:~# pveversion -v
proxmox-ve: 7.1-1 (running kernel: 5.13.19-1-pve)
pve-manager: 7.1-5 (running version: 7.1-5/6fe299a0)
pve-kernel-5.13: 7.1-4
pve-kernel-helper: 7.1-4
pve-kernel-5.11: 7.0-10
pve-kernel-5.13.19-1-pve: 5.13.19-2
pve-kernel-5.11.22-7-pve: 5.11.22-12
pve-kernel-5.11.22-5-pve: 5.11.22-10
pve-kernel-5.11.22-1-pve: 5.11.22-2
ceph-fuse: 15.2.13-pve1
corosync: 3.1.5-pve2
criu: 3.15-1+pve-1
glusterfs-client: 9.2-1
ifupdown2: 3.1.0-1+pmx3
ksm-control-daemon: 1.4-1
libjs-extjs: 7.0.0-1
libknet1: 1.22-pve2
libproxmox-acme-perl: 1.4.0
libproxmox-backup-qemu0: 1.2.0-1
libpve-access-control: 7.1-2
libpve-apiclient-perl: 3.2-1
libpve-common-perl: 7.0-14
libpve-guest-common-perl: 4.0-3
libpve-http-server-perl: 4.0-3
libpve-storage-perl: 7.0-15
libspice-server1: 0.14.3-2.1
lvm2: 2.03.11-2.1
lxc-pve: 4.0.9-4
lxcfs: 4.0.8-pve2
novnc-pve: 1.2.0-3
openvswitch-switch: 2.15.0+ds1-2
proxmox-backup-client: 2.0.14-1
proxmox-backup-file-restore: 2.0.14-1
proxmox-mini-journalreader: 1.2-1
proxmox-widget-toolkit: 3.4-2
pve-cluster: 7.1-2
pve-container: 4.1-2
pve-docs: 7.1-2
pve-edk2-firmware: 3.20210831-2
pve-firewall: 4.2-5
pve-firmware: 3.3-3
pve-ha-manager: 3.3-1
pve-i18n: 2.6-1
pve-qemu-kvm: 6.1.0-2
pve-xtermjs: 4.12.0-1
qemu-server: 7.1-3
smartmontools: 7.2-1
spiceterm: 3.2-2
swtpm: 0.7.0~rc1+2
vncterm: 1.7-1
zfsutils-linux: 2.1.1-pve3
This PVE is otherwise a completely vanilla setup, as I've exclusively used it thus far for getting this one VM running.
Last edited: