PCIE Passthrough code 43

Hello,
I’m using arch and trying to make a PCIE passthrough with a Nvidia 9800GTX + (yes it’s aging a little bit)

I have a Maximus VII ranger with a 4770 inside and I am able to boot a windows VM that can see the 9800GTX.

The problem is that to be able to put it in passthrough, I had to move it from one of my PCIE 3.0x16 slots because if I didn’t, it was in the same IOMMU group as my GTX750Ti that is my primary display adapter.

So right now, it’s in a PCIE 2.0x1 slot (the case is to small to allow me to try out with the latest pcie2.0x16 slot)

I was able to install the Nvidia driver and reboot, but when I plug a DVI monitor into that GPU, I get… Nothing, the display goes to sleep and when I watch through KVM, the GPU is telling me error 43.

The official Nvidia DOC is telling me that it might be the driver or a bad GPU (of course nothing about pluging it in a wrong slot tough)

I realise a 2.0x1 is not much, but could it be that my GPU is only detected and unusable because of that? (because if it’s not capable because of the speed of the bus of using it, I’m surprised it’s detected)

@wendell

Are you familiar with the Nvidia Error 43 situation?

Essentially, Nvidia is detecting that you’re running a non-quadro card in a VM and gets upset and kills itself.

You need to change the Vendor ID in libvirt and hide the kvm extensions.

This section of the archwiki will help you:

https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF#.22Error_43:_Driver_failed_to_load.22_on_Nvidia_GPUs_passed_to_Windows_VMs

2 Likes

Well, I already edited that File.
But the result is still the same.
Should I completely re install the OS or is it likely to be a PCIE 1x slot problem?

Which specific version of the Nvidia drivers are you using? I seem to recall that the latest drivers require more configuration changes, or flat out don’t work.

Lemme bring in some backup who has more experience with the Nvidia side of passthrough… @tkoham

I do not think the problem is the PCIE 1x. That might limit performance, but shouldn’t cause a problem with getting the driver to work.

1 Like

How dare you use your hardware how you want

Reasons I don’t like to use Nvidia GPUs for passthrough.

Has anyone asked nvida rep about them changing that?

I don’t know off the top of my head, but passing through an Nvidia GPU that is not a quadro or tesla is against their stated use policy or whatever, so they will do no such thing to change it and will continue to make it hard for us to bypass this.

The reason is that they see each of us as potential Quadro customers, and they’re not wrong. if they just plain didn’t work due to hardware, we’d all need to buy Quadro or AMD.

Is that even legal?

Yes.

They can do whatever they want with their software that enables their hardware.

It’s the exact same argument as running OSX on a PC.

1 Like

Arent opensource drivers a thing? Guessing you loos a big chunk of performance in comparison? Guess not so much on windows, as most people passing through are doing.

Not for Windows.

1 Like

My edit skills are too slow. Sry for the side track, still somewhat related but still a bit tangent .

I m on the latest Nvidia driver for that graphics card… so something around 2016… it s largely out of support but I know for a fact it worked back when windows was the host OS.

(For the GPU brand, I m with nvidia because I don t have the money to buy anything new right now)

I’m on 342.01

the 9800 gtx is too old to have UEFI GOP, I think the earliest cards that support uefi passthough are either fermi refresh or kepler

you might be able to get that fossil to work with seabios and some voodoo with xen, but it’s probably not worth the trouble

1 Like

Ow, sad…

if you want to game on the windows VM, or do anything GPU intensive, really) wouldn’t it be better to put the 9800 on the host and pass through the 750 TI? that should work fine.

EDIT:
Just saw the posts above, this won’t work (most likely)

Attempt this if you have not already, worked for me with the GTX 980:

Make sure that you changed <<domain type='kvm'> to <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

Than at the bottom add the qemu:commandline block like below:
<qemu:commandline>
<qemu:arg value='-cpu'/>
<qemu:arg value='host,hv_time,kvm=off,hv_vendor_id=null'/>
</qemu:commandline>