PCI passthrough Error code 43

PeterMarcusH.

Member
Apr 5, 2019
99
3
13
28
Hello guys, i'm in need of help to fix the dreaded error code 43, when passinmg through my GTX 1050ti. I've been watching a lot of online guides, and reading through some reddit posts about how to correctly bypass error code 43...however i cannot seem to fix it :(

The main guide https://www.reddit.com/r/homelab/comments/b5xpua/the_ultimate_beginners_guide_to_gpu_passthrough/ which i've tried 3 times .

- The problem is not the passthrough, rather that windows deactivates the use of the GPU because of the error code
- Any suggestions to make this work?
 
The most important step regarding Error 43 is changing your CPU config to what is mentioned in your linked reddit post (especially the hv_vendor_id part):

Code:
machine: q35
cpu: host,hidden=1,flags=+pcid
args: -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_id=NV43FIX,kvm=off'

Keep in mind however, that Error 43 is just a generic error message and does not have to be related to NVIDIAs vendor ID shenanigans.

EDIT: Since people keep stumbling on this post of mine, quick update regarding the config above: Most of is no longer necessary! Especially the 'args' line is already being applied that way by PVE itself, as long as your "OS Type" is set to "Windows".

For best results, just set your CPU to host (and, optionally, your machine to q35) and the rest should happen automatically.
 
Last edited:
  • Like
Reactions: HiTeckGrenwick
The most important step regarding Error 43 is changing your CPU config to what is mentioned in your linked reddit post (especially the hv_vendor_id part):

Code:
machine: q35
cpu: host,hidden=1,flags=+pcid
args: -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_id=NV43FIX,kvm=off'

Keep in mind however, that Error 43 is just a generic error message and does not have to be related to NVIDIAs vendor ID shenanigans.
Thank you for the reply, however i've already tried this step :/
 
Hi,

Please see my following post:-

https://forum.proxmox.com/threads/f...gex-that-needs-resolving-after-upgrade.56507/

The following should fix your issue, I had the same problem with my NVIDIA graphics card.

qm set ID -machine pc-q35-3.1

ID needs to be your VM number:-

so if it is 100 , then you would enter the following:-

qm set 100 -machine pc-q35-3.1
Thank you for your advice TrevorJ :) I cannt seem to start my VM when useing your "qm set 100 -machine pc-q35-3.1", but i can with your "qm set ID -args '-machine type=q35,kernel_irqchip=on'". However it didnt seem to do anything for my errror 43 problem :/
 
Did you set the vendor ID under your CPU flags in your
/etc/pve/qemu-server/*.conf file?

Code:
 cpu: [cputype=]<enum> [,flags=<+FLAG[;-FLAG...]>] [,hidden=<1|0>] [,hv-vendor-id=<vendor-id>]

cputype=<486 | Broadwell | Broadwell-IBRS | Broadwell-noTSX | Broadwell-noTSX-IBRS | Conroe | EPYC | EPYC-IBPB | Haswell | Haswell-IBRS | Haswell-noTSX | Haswell-noTSX-IBRS | IvyBridge | IvyBridge-IBRS | Nehalem | Nehalem-IBRS | Opteron_G1 | Opteron_G2 | Opteron_G3 | Opteron_G4 | Opteron_G5 | Penryn | SandyBridge | SandyBridge-IBRS | Skylake-Client | Skylake-Client-IBRS | Skylake-Server | Skylake-Server-IBRS | Westmere | Westmere-IBRS | athlon | core2duo | coreduo | host | kvm32 | kvm64 | max | pentium | pentium2 | pentium3 | phenom | qemu32 | qemu64> (default = kvm64)
Emulated CPU type.

flags=<+FLAG[;-FLAG...]>
List of additional CPU flags separated by ;. Use +FLAG to enable, -FLAG to disable a flag. Currently supported flags: pcid, spec-ctrl, ibpb, ssbd, virt-ssbd, amd-ssbd, amd-no-ssb, pdpe1gb, md-clear.
    
hidden=<boolean> (default = 0)
Do not identify as a KVM virtual machine.

hv-vendor-id=random_string
The Hyper-V vendor ID. Some drivers or programs inside Windows guests need a specific ID.

cpulimit: <number> (0 - 128) (default = 0)
Limit of CPU usage.
https://pve.proxmox.com/pve-docs/chapter-qm.html#qm_options
 
Code:
agent: 1
args: -machine type=q35,kernel_irqchip=on
bios: ovmf
bootdisk: scsi0
cores: 6
cpu: host,hidden=1,flags=+pcid
efidisk0: local-lvm:vm-104-disk-1,size=128K
hostpci0: 01:00,pcie=1
ide0: local:iso/virtio-win-0.1.171.iso,media=cdrom,size=363020K
ide2: local:iso/Windows_10.iso,media=cdrom
machine: q35
memory: 6368
name: TEST
net0: virtio=4A:93:E6:B4:E7:56,bridge=vmbr0
numa: 1
ostype: win10
scsi0: local-lvm:vm-104-disk-0,cache=writeback,iothread=1,replicate=0,size=60G,ssd=1
scsihw: virtio-scsi-single
smbios1: uuid=7af68412-512b-4522-b2f0-d7b831df6a91
sockets: 1
vga: none
vmgenid: 3f9ad236-e306-4474-b6d5-94e8fd9b545b

This is my *.conf file. Where and what should my vendor id be set to?
 
I've got a 1050 in my rig and it's working great with a simple config.

Host hardware is Threadripper 1900x in ASRock X399 Taichi. ID 41:00 is the GPU and ID 0d:00 is a USB controller.

Code:
agent: 1
balloon: 0
bios: ovmf
bootdisk: scsi0
cores: 4
cpu: host,hidden=1
efidisk0: local-lvm:vm-444-disk-1,size=128K
hostpci0: 41:00,pcie=1,x-vga=on
hostpci1: 0d:00,pcie=1
hotplug: disk,network,usb
ide2: none,media=cdrom
machine: q35
memory: 8192
name: HTPC
net0: virtio=AA:AA:AA:AA:AA:AA,bridge=vmbr0
numa: 0
ostype: win10
scsi0: local-lvm:vm-444-disk-2,size=128G
scsi1: zfs-smallpool:vm-444-disk-0,backup=0,cache=writeback,size=500G
scsihw: virtio-scsi-pci
smbios1: uuid=aaaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
 
I'm pretty desperate for this to work. Would anyone be willing to try to log into my proxmox web interface and try it for themselves?
 
Code:
cpu: host,hidden=1,flags=+pcid,hv-vendor-id=proxmox

Make your cpu line look as such.
 
Post your lspci -k output here
Code:
00:00.0 Host bridge: Intel Corporation Device 3ec2 (rev 07)
        Subsystem: Micro-Star International Co., Ltd. [MSI] Device 7c04
        Kernel driver in use: skl_uncore
00:01.0 PCI bridge: Intel Corporation Skylake PCIe Controller (x16) (rev 07)
        Kernel driver in use: pcieport
        Kernel modules: shpchp
00:08.0 System peripheral: Intel Corporation Skylake Gaussian Mixture Model
        Subsystem: Micro-Star International Co., Ltd. [MSI] Skylake Gaussian Mixture Model
00:12.0 Signal processing controller: Intel Corporation Device a379 (rev 10)
        Subsystem: Micro-Star International Co., Ltd. [MSI] Device 7c04
        Kernel driver in use: intel_pch_thermal
        Kernel modules: intel_pch_thermal
00:14.0 USB controller: Intel Corporation Device a36d (rev 10)
        Subsystem: Micro-Star International Co., Ltd. [MSI] Device 7c04
        Kernel driver in use: xhci_hcd
00:14.2 RAM memory: Intel Corporation Device a36f (rev 10)
        Subsystem: Intel Corporation Device 7270
00:14.3 Network controller: Intel Corporation Device a370 (rev 10)
        Subsystem: Intel Corporation Device 02a4
        Kernel driver in use: iwlwifi
        Kernel modules: iwlwifi
00:16.0 Communication controller: Intel Corporation Device a360 (rev 10)
        Subsystem: Micro-Star International Co., Ltd. [MSI] Device 7c04
        Kernel driver in use: mei_me
        Kernel modules: mei_me
00:17.0 RAID bus controller: Intel Corporation SATA Controller [RAID mode] (rev 10)
        Subsystem: Micro-Star International Co., Ltd. [MSI] SATA Controller [RAID mode]
        Kernel driver in use: ahci
        Kernel modules: ahci
00:1b.0 PCI bridge: Intel Corporation Device a340 (rev f0)
        Kernel driver in use: pcieport
        Kernel modules: shpchp
00:1b.4 PCI bridge: Intel Corporation Device a32c (rev f0)
        Kernel driver in use: pcieport
        Kernel modules: shpchp
00:1c.0 PCI bridge: Intel Corporation Device a338 (rev f0)
        Kernel driver in use: pcieport
        Kernel modules: shpchp
00:1c.4 PCI bridge: Intel Corporation Device a33c (rev f0)
        Kernel driver in use: pcieport
        Kernel modules: shpchp
00:1d.0 PCI bridge: Intel Corporation Device a330 (rev f0)
        Kernel driver in use: pcieport
        Kernel modules: shpchp
00:1f.0 ISA bridge: Intel Corporation Device a305 (rev 10)
        Subsystem: Micro-Star International Co., Ltd. [MSI] Device 7c04
00:1f.3 Audio device: Intel Corporation Device a348 (rev 10)
        Subsystem: Micro-Star International Co., Ltd. [MSI] Device ec04
        Kernel driver in use: snd_hda_intel
        Kernel modules: snd_hda_intel
00:1f.4 SMBus: Intel Corporation Device a323 (rev 10)
        Subsystem: Micro-Star International Co., Ltd. [MSI] Device 7c04
        Kernel driver in use: i801_smbus
        Kernel modules: i2c_i801
00:1f.5 Serial bus controller [0c80]: Intel Corporation Device a324 (rev 10)
        Subsystem: Micro-Star International Co., Ltd. [MSI] Device 7c04
01:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1)
        Subsystem: Gigabyte Technology Co., Ltd GP107 [GeForce GTX 1050 Ti]
        Kernel driver in use: vfio-pci
        Kernel modules: nvidiafb, nouveau
01:00.1 Audio device: NVIDIA Corporation Device 0fb9 (rev a1)
        Subsystem: Gigabyte Technology Co., Ltd Device 3746
        Kernel driver in use: vfio-pci
        Kernel modules: snd_hda_intel
03:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a808
        Subsystem: Samsung Electronics Co Ltd Device a801
        Kernel driver in use: nvme
05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
        Subsystem: Micro-Star International Co., Ltd. [MSI] RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
        Kernel driver in use: r8169
        Kernel modules: r8169
06:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a808
        Subsystem: Samsung Electronics Co Ltd Device a801
        Kernel driver in use: nvme
 
FIXED!!! By some amazing help from jimnordb aka. SilentSpy, we were able to find out, that a bios option regarding CPU specifications needed to be changed from IGD to PEG. This enables my GPU to be used seperatly and worked like a charm.

Could you explain what the fix was? same issue
 
Could you explain what the fix was? same issue

Hello Darin, the fix which worked for me, was going into the bios and changing a CPU option from IGD to PEG. I have an intel motherboard, but i would guess the same counts for a amd :)
 

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!