Having trouble installing drivers for mobile GPU that was Passthrough using libvirt

So I got my Dell laptop (Dell Precision 5510) and found that this machine was able to support GPU passthrough! Through trial and error, I was able to get up to the point of having the Nvidia Quadro M1000M loaded in the Windows virtual machine. However when I try to install the driver, it says that the compatible drivers can not be found.

I was able to verify that the Vfio-pci has taken over the GPU, that the Nvidia and Nouveau are not loaded, and that the Intel iommu was loaded properly. So I am not sure what the problem is. The weird thing is that the java autodetect driver app from Nvidia was able to detect the GPU. I am not sure if it is possible to manually install the GPU drivers. Any suggestion would be grateful!

How are you installing drivers? Have you tried manually going to Nvidia's site and downloading the driver package? The linked page is the drivers for win10 x64, and should support your card.

I'm not sure that your issue is on the linux side.

Can you give a bit more info about your system?

What CPU, how many cores/threads are going to the VM

How much ram is dedicated to the VM?

What OS are you using for the VM?

I would just try to load the Nvidia Installer and install it as if I were doing it on a Windows machine. I also tried loading it with Admin privileges when it didn't work at first but that didn't work.
I did try manually selecting the Nvidia Drivers (except for Windows 8). I wanted to make sure that it works on Windows 8 before upgrading to Windows 10.

CPU: Intel(R) Core(TM) i7-6820HQ CPU @ 2.70Ghz
Integrated GPU: Intel® HD Graphics 530 (This is used on the Linux Desktop)
Discrete GPU: NVIDIA Quadro M1000M (This is what I want to use on the VM)
Motherboard: Dell 0N8J4R (I do know that this motherboard support I/O passthrough since it shows the option on the bios).
Ram: 8gb
OS: Arch Linux/Stock Kernel

Please tell me if you need more information.

I set it to copy the "host CPU configuration". For the Topology section, this is what I set:
Socket: 1
Cores: 2
Threads: 2

I gave it 2048MiB for both Current allocation and Maximum allocation.

Windows 8. I want to test this on Windows 8 before upgrading to Windows 10

I should also say that I use the UEFI mode and got it from this site: http://www.tianocore.org/ovmf/. I tried using the Git version from kraxel website, https://www.kraxel.org/repos/jenkins/edk2/, but it would be stuck in the boot screen.

That's pretty mch all I needed. I'm not sure if 2GB of ram is enough, but I'm not 100% sure about that.

Are you able to get video output on the descrete GPU, or is it not outputting at all.

If there's an HDMI audio device that's on a similar PCIe lane as your gpu, you'll probably need to pass that through as well.

Aside from that, I can't think of anything that would be causing your issues. If anyone else has ideas, feel free to hop in and have a look. I'll keep digging, but this is where my knowledge ends.

I am going to honest with you, since the GPU is built in, I am not so sure as to how I am going to get GPU video out. The only way I am able to interact with the VM is to either use Display Spice or to use TeamViewer.

That is what I was thinking also, but using lspci doesn't seem to indicate that:

00:00.0 Host bridge: Intel Corporation Skylake Host Bridge/DRAM Registers (rev 07)
00:01.0 PCI bridge: Intel Corporation Skylake PCIe Controller (x16) (rev 07)
00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
00:04.0 Signal processing controller: Intel Corporation Skylake Processor Thermal Subsystem (rev 07)
00:14.0 USB controller: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller (rev 31)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-H Thermal subsystem (rev 31)
00:15.0 Signal processing controller: Intel Corporation Sunrise Point-H Serial IO I2C Controller #0 (rev 31)
00:15.1 Signal processing controller: Intel Corporation Sunrise Point-H Serial IO I2C Controller #1 (rev 31)
00:16.0 Communication controller: Intel Corporation Sunrise Point-H CSME HECI #1 (rev 31)
00:17.0 SATA controller: Intel Corporation Sunrise Point-H SATA controller [AHCI mode] (rev 31)
00:1c.0 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #1 (rev f1)
00:1c.1 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #2 (rev f1)
00:1d.0 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #9 (rev f1)
00:1d.4 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #13 (rev f1)
00:1d.6 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #15 (rev f1)
00:1f.0 ISA bridge: Intel Corporation Sunrise Point-H LPC Controller (rev 31)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-H PMC (rev 31)
00:1f.3 Audio device: Intel Corporation Sunrise Point-H HD Audio (rev 31)
00:1f.4 SMBus: Intel Corporation Sunrise Point-H SMBus (rev 31)
01:00.0 3D controller: NVIDIA Corporation GM107GLM [Quadro M1000M] (rev a2)
02:00.0 Network controller: Intel Corporation Wireless 8260 (rev 3a)
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS525A PCI Express Card Reader (rev 01)

I agree, but I had to lower it since Chrome is known for eating up a lot of ram (and also that I like Chrome despite it's flaws). Plus I rather not spend money on more ram unless I can get the GPU passthrough to work.

If the worst case comes where no one knows the solution, then I will probably bring this up in the Nvidia Dev Forum since I believe the actually Nvidia developers do respond there.

Thank you for responding to my help! I appreciate it!

According to their website, your laptop has an HDMI port. I'd be interested to see how that HDMI port is wired. If it's connected to some sort of switch, it could be difficult. If not, just plug a tv or monitor into the port. You can see if it's connected to the integrated graphics by running the command xrandr which will display all your GPU inputs, the connected monitors, and their supported resolutions and refresh rates on the iGPU.

Interesting. I always thought the Quadros would have an audio device like the GeForce hardware.

2GB of ram shouldn't be causing this issue, but that's why I use firefox. Also, if you want to keep using chrome but want open source, check out the package chromium which is essentially the same thing, but open source. (same ram usage, but it's one step closer to awesome because of the source code)

Not sure about the dev forums, I don't browse them much, but there's no reason not to post there. I think there's a few people on the forum who are more knowledgeable (or experienced) than me with this, but this is an odd issue. Usually when you get the card passed in successfully, it's smooth sailing from there. :/ I'm always glad to give it a shot.

I gave it a try and both the monitor screen and the xrandr command suggests that it is hooked up to the iGPU (which I suppose is a good thing in general, but not in this case)

Here is what the xrandr command output:

Screen 0: minimum 8 x 8, current 5760 x 2160, maximum 32767 x 32767
eDP1 connected primary 3840x2160+1920+0 (normal left inverted right x axis y axis) 346mm x 194mm
   3840x2160     60.00*+
   3200x1800     60.00  
   2880x1620     60.00  
   2560x1440     60.00  
   2048x1536     60.00  
   1920x1440     60.00  
   1856x1392     60.01  
   1792x1344     60.01  
   2048x1152     60.00  
   1920x1080     60.00  
   1600x1200     60.00  
   1400x1050     59.98  
   1600x900      60.00  
   1280x1024     60.02  
   1280x960      60.00  
   1368x768      60.00  
   1280x720      60.00  
   1024x768      60.00  
   1024x576      60.00  
   960x540       60.00  
   800x600       60.32    56.25  
   864x486       60.00  
   640x480       59.94  
   720x405       60.00  
   640x360       60.00  
DP1 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 509mm x 286mm
   1920x1080     60.00*+  50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.88  
   1280x1024     75.02    60.02  
   1440x900      59.90  
   1280x960      60.00  
   1152x864      75.00  
   1280x720      60.00    50.00    59.94  
   1440x576      50.00  
   1024x768      75.08    70.07    60.00  
   1440x480      60.00    59.94  
   832x624       74.55  
   800x600       72.19    75.00    60.32    56.25  
   720x576       50.00  
   720x480       60.00    59.94  
   640x480       75.00    72.81    66.67    60.00    59.94  
   720x400       70.08  
HDMI2 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

Were you able to get it working? I have pretty similar setup, except my video card is M2000M and I think it wired to HDMI/Display Port instead of iGD.
If you tried to ask devs on nvidia forums, could you share a link to that conversation, maybe it will be helpful to me too.

My problem is the same: adapter seems to be successfully passed through, but it shows up as Standard VGA Graphics Adapter, and NVIDIA driver doesn't want to recognize it.

Quadro cards support usage in a VM, but I don't know if that applies to mobile versions.

Try using the kvm=off and hv_vendor_id=null arguments for KVM.

See my thread here for more info:

1 Like