[vfio-users] [help] 2 identical GPUs in Arch

sL1pKn07 SpinFlo sl1pkn07 at gmail.com
Tue Feb 23 19:00:54 UTC 2016


my arch script:

systemd service:

[Unit]
Description=Binds devices to vfio-pci
After=syslog.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=-/usr/bin/setup_kvm_vfio.sh

[Install]
WantedBy=multi-user.target

setup_kvm_vfio.sh script:

#!/bin/bash

# Get pci-id host GPU
host_gpu=$(lspci | grep "GTX 770" | awk '{print $1;}')
host_gpu_audio=$(echo $host_gpu | sed -e 's/\.0$/.1/')

# Get pci-id/vendor-id/device-id guest GPU
guest_gpu=$(lspci | grep "GTX TITAN Black" | awk '{print $1;}')
guest_gpu_vendor=$(cat /sys/bus/pci/devices/0000:$guest_gpu/vendor)
guest_gpu_device=$(cat /sys/bus/pci/devices/0000:$guest_gpu/device)
guest_gpu_audio=$(echo $guest_gpu | sed -e 's/\.0$/.1/')
guest_gpu_audio_vendor=$(cat /sys/bus/pci/devices/0000:$guest_gpu_audio/vendor)
guest_gpu_audio_device=$(cat /sys/bus/pci/devices/0000:$guest_gpu_audio/device)

# Get pci-id/vendor-id/device-id guest USB
# usb_pci=$(lspci | grep "NEC" | head -1 | awk '{print $1;}')
# usb_pci_vendor=$(cat /sys/bus/pci/devices/0000:$usb_pci/vendor)
# usb_pci_device=$(cat /sys/bus/pci/devices/0000:$usb_pci/device)

# Get pci-id/vendor-id/device-id guest SATA
# sata_pci=$(lspci | grep "Marvell Technology Group Ltd. 88SE9120
SATA" | awk '{print $1;}')
# sata_pci_vendor=$(cat /sys/bus/pci/devices/0000:$sata_pci/vendor)
# sata_pci_device=$(cat /sys/bus/pci/devices/0000:$sata_pci/device)

# Set real driver for host GPU/GPU-audio
echo nvidia        > /sys/bus/pci/devices/0000:$host_gpu/driver_override
echo snd-hda-intel > /sys/bus/pci/devices/0000:$host_gpu_audio/driver_override

# Set vfio-pci driver for guest GPU/GPU-audio/USB/SATA
echo vfio-pci      > /sys/bus/pci/devices/0000:$guest_gpu/driver_override
echo vfio-pci      > /sys/bus/pci/devices/0000:$guest_gpu_audio/driver_override
# echo vfio-pci       > /sys/bus/pci/devices/0000:$usb_pci/driver_override
# echo vfio-pci       > /sys/bus/pci/devices/0000:$sata_pci/driver_override

# Load vfio-pci kernel module
modprobe vfio-pci

# Set GPU/GPU-audio/USB/SATA vfio-pci id
echo $guest_gpu_vendor $guest_gpu_device             >
/sys/bus/pci/drivers/vfio-pci/new_id
echo $guest_gpu_audio_vendor $guest_gpu_audio_device >
/sys/bus/pci/drivers/vfio-pci/new_id
# echo $usb_pci_vendor $usb_pci_device                 >
/sys/bus/pci/drivers/vfio-pci/new_id
# echo $sata_pci_vendor $sata_pci_device               >
/sys/bus/pci/drivers/vfio-pci/new_id

# Unbind GPU/GPU-audio/USB/SATA real driver
echo 0000:$guest_gpu       > /sys/bus/pci/devices/0000:$guest_gpu/driver/unbind
echo 0000:$guest_gpu_audio >
/sys/bus/pci/devices/0000:$guest_gpu_audio/driver/unbind
# echo 0000:$usb_pci          > /sys/bus/pci/devices/0000:$usb_pci/driver/unbind
# echo 0000:$sata_pci         >
/sys/bus/pci/devices/0000:$sata_pci/driver/unbind

# Bind GPU/GPU-audio/USB/SATA to vfio-pci
echo 0000:$guest_gpu       > /sys/bus/pci/drivers/vfio-pci/bind
echo 0000:$guest_gpu_audio > /sys/bus/pci/drivers/vfio-pci/bind
# echo 0000:$usb_pci        > /sys/bus/pci/drivers/vfio-pci/bind
# echo 0000:$sata_pci       > /sys/bus/pci/drivers/vfio-pci/bind

# Load nvidia kernel module
modprobe nvidia

zero config about vfio/pcistub on the grub/modprobe.d/modules-load/etc, except:

GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on"

taked from: http://www.altechnative.net/2015/04/05/virtually-gaming-part-2-evolution-consolidation-and-move-to-kvm/

that configuration have a identical GPU like you

i hope helps you

greetings




More information about the vfio-users mailing list