[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Using vms command line tool for PCI passthrough in QEMU

vms pci passthrough

Using vms for pci passthrough. This example is for a graphics card, but it will work for any PCI device. This has been tested for qemu guests running linux, Windows and macOS.

Setup the virtual machine

Install vms and setup a virtual machine as described here https://docs.slackware.com/howtos:emulators:vms

Continue and install the guest OS. Install any updates on the guest OS you want. Things are easier to troubleshoot when the guest is setup and updated without the passthrough

PCI passthrough

It is easier and more trouble free to have a regular emulated standard vga for qemu and use the real graphics card as a second one for the guest.

For AMD systems add these kernel options to the append line in /etc/lilo.conf

iommu=pt iommu=1

For Intel systems add this kernel option to the append line in /etc/lilo.conf


Restart the host, then find the device you want to passthrough, eg.

# lspci | grep VGA
07:00.0 VGA compatible controller: Advanced Micro Devices, Inc...

The interesting part is 07:00.0

Setup the 07:00.0 card for vfio-pci like this as root

/usr/sbin/vfio-bind 07:00.0

You can add the line above to /etc/rc.d/rc.local to automatically set the 07:00.0 card during boot.

Assuming your virtual machine is called vm1 stop it and configure it like this

vms conf vm1 extra10 "'-device vfio-pci,host=07:00.0'"

Also, it is recommended to configure a mouse and a keyboard like this

vms conf vm1 extra09 "'-usb -device usb-kbd -device usb-mouse'"

This way, the guest grabs the mouse when you click on it's first virtual monitor. You can use 'ctrl-alt-g' to get your mouse back for the host desktop.

Then start vm1 like this

vms start vm1

Your gfx card should be available in the guest. You can go on and install a regular driver if needed. Using the same logic you can pass any PCI device, like a sound card or a USB controller


 howtos:emulators:vms-pci-passthrough ()